Мазмұны:
- 1 -қадам: Қажетті нәрселер:
- 2 -қадам: ЖҰМЫС ПРИНЦИПІ:
- 3 -қадам: КІРІС ЖАЗУ ЖӘНЕ ӨҢДЕУ:
- 4 -қадам:
- 5 -қадам:
- 6 -қадам: ӨНДІРУ БӨЛІМІ:
- 7 -қадам:
- 8 -қадам:
- 9 -қадам:
- 10 -қадам:
- 11 -қадам:
- 12 -қадам: Қозғалысты басқару:
- 13 -қадам:
Бейне: Gesture Hawk: Қолмен қимылмен басқарылатын робот кескінді өңдеу интерфейсін қолданады: 13 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Gesture Hawk TechEvince 4.0-де адам-машиналық интерфейске негізделген суретті өңдеуге арналған қарапайым құрал ретінде көрсетілді. Оның дифференциалды жетек принципі бойынша жұмыс істейтін роботты машинаны басқару үшін қолғаптан басқа қосымша датчиктер немесе киінетін киімдер қажет емес. Бұл нұсқаулықта біз сізді жүйеде қолданылатын объектілерді бақылау мен қимылды анықтаудың жұмыс принципі бойынша қарастырамыз. Бұл жобаның бастапқы кодын Github-тан сілтеме арқылы жүктеуге болады:
1 -қадам: Қажетті нәрселер:
- L298N мотор драйвері
- DC қозғалтқыштары
- Робот автокөлік шассиі
- Ардуино Уно
- LiPo батареялары
- Arduino USB кабелі (ұзын)
- Python көмегімен OpenCV кітапханасы
2 -қадам: ЖҰМЫС ПРИНЦИПІ:
Gesture Hawk - бұл жоғарыда көрсетілген диаграммадан көріп тұрғандай үш фазалы өңдеу жүйесі.
3 -қадам: КІРІС ЖАЗУ ЖӘНЕ ӨҢДЕУ:
Кіріс түсіруді жоғарыдағы диаграммада берілген кеңірек категорияларда түсінуге болады.
Қолдың пішінін қоршаған ортадан алу үшін бізге белгілі бір түстің маскировкасы немесе сүзгісі қажет (бұл жағдайда - күлгін көк »). Мұны істеу үшін суретті BGR -ден HSV форматына түрлендіру қажет, оны келесі код үзіндісі арқылы жасауға болады.
hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV)
Енді келесі қадам - қолды маска немесе сүзгі арқылы шығаратын HSV параметрлерінің қажетті диапазонын табу. Бұл үшін қолайлы диапазонды табу үшін жолақтарды пайдалану ең жақсы әдіс. Міне, бұл жоба үшін пайдаланылатын жолақтардың скриншоты.
4 -қадам:
5 -қадам:
Міне, маска жасау үшін осындай жолақ жасау үшін төменде берілген код үзіндісі бар:
cv2 импорттау
numpy файлын npdef ретінде импорттау (x): cv2.namedWindow ('сурет') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'сурет', 110, 255, ештеңе) емес cv2.createTrackbar ('l_S ',' image ', 50, 255, ештеңе) cv2.createTrackbar (' l_V ',' image ', 50, 255, ештеңе) cv2.createTrackbar (' h_H ',' image ', 130, 255, ештеңе) cv2. createTrackbar ('h_S', 'image', 255, 255, ештеңе) cv2.createTrackbar ('h_V', 'image', 255, 255, ештеңе) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'сурет') lS = cv2.getTrackbarPos ('l_S', 'сурет') lV = cv2.getTrack_Pos (' 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') төменгі_R = np. массив ([lH, lS, lV]) жоғарырақ_R = np.array ([hH, hS, hV]) маска = cv2.inRange (hsv, төменгі_R, жоғары_R) res = cv2.біліспен_және (жақтау, жақтау, маска = маска) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
6 -қадам: ӨНДІРУ БӨЛІМІ:
Бізде қолдың геометриялық фигурасы бар, енді оны пайдаланып, қол қимылын анықтау үшін қолданатын уақыт келді.
Дөңес корпус:
Дөңес корпус арқылы біз формадағы экстремалды нүктелер арқылы жуық полигонды орнатуға тырысамыз. Сол жақтағы суретте дөңес нүктелері қызыл түспен белгіленген пішінге берілген шамамен полигон көрсетілген.
Дөңес нүктелер - бұл жуықталған көпбұрыштың жанынан ең алыс орналасқан пішіндегі нүктелер. Бірақ дөңес корпустағы мәселе мынада: оны есептеу кезінде біз барлық дөңес нүктелердің жиынын аламыз, бірақ бізге керегі - көк түсті дөңес нүкте. Біз сізге не үшін қажет екенін айтамыз.
Бұл дөңес нүктені табу үшін біз ең жақын қабырғасы бар дөңес нүктенің қашықтығын табудың перпендикулярлық қашықтық формуласын қолдануымыз керек. Біз көк нүктенің бүйірден максималды қашықтыққа ие екенін байқадық, сондықтан біз бұл нүктені аламыз.
7 -қадам:
8 -қадам:
Содан кейін біз бас бармақтың ұшын (немесе шеткі нүктені) көлденеңінен осы дөңес нүктеге қосатын сызықтың көлбеуін табуымыз керек.
9 -қадам:
Жоғарыда айтылған жағдайда α бұрышы 0 -ден 90 градусқа дейін болуы керек, егер қимыл солға бұрылуға арналған болса. Яғни, tan (α) оң болуы керек.
10 -қадам:
Жоғарыда айтылған жағдайда α бұрышы 180-90 градус аралығында болуы керек, егер қимыл оңға бұрылуға арналған болса. Яғни, tan (α) теріс болуы керек.
Сондықтан, егер Tan α оң болса, онда солға бұрылу. Егер Tan α теріс болса, онда оңға бұрылу. Енді, ең маңызды тоқтату пәрменін қалай анықтау керектігін білу уақыты келді.
Мұнда көрсетілген қатынас (соққы мен сынақ бойынша табылған) зерттеледі және максималды жағдайда бұл ара қашықтық осы нақты диапазонда қалады.
11 -қадам:
Ақырында, алдын ала қимыл қозғалысы OpenCV -де matchShape () функциясымен талданады. Бұл функция екі есептегіштің пішінін салыстырады, бұл жағдайда жоғарыдағы суреттегі үштікке үйрету мысалы жоғарыдағы суреттің сол жағындағы контурмен салыстырылады. Ол екі контур түрінде болатын вариацияға сәйкес 0 -ден 2 -ге немесе 3 -ке дейінгі мәнді қайтарады. Бірдей контур үшін ол 0 қайтарады.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Мұнда cn1 мен cnt2 - салыстыруға болатын екі контур.
12 -қадам: Қозғалысты басқару:
PySerial:
Біз Python PySerial кітапханасын өңделген деректерді Arduino Uno USB кабелі арқылы Arduino Uno -ға жеткізу үшін сериялық деректерге түрлендіру үшін қолдандық. Белгілі бір қимыл opencv арқылы анықталғаннан кейін біз «x» деп айтатын уақытша айнымалы құрдық және оған бірегей мән бердік және оны келесі пәрмен жолы арқылы сериялық енгізуге айналдырдық:-
Pyserial кітапханасын импорттау үшін сериялық #импорттаңыз
serial. Serial ('', baudrate = '9600', timeout = '0') # сериялық шығуды реттеу.. ПОРТ АТАУЫ - деректерді беру жүзеге асатын порт атауы.
serial.write (b'x ') # x - портқа жіберілген алфавит… b - бұл жолды байтқа түрлендіру.
Arduino өңдеу:
Енді arduino әр түрлі сериялық х роботтың бірқалыпты қозғалысы үшін жауап беретін белгілі бір әрекетке сызықты түрде сәйкес келетін түрде кодталған (сол қимылдың анықталуы қозғалтқыштарды оңға қарай бұруға мүмкіндік береді). Біз кодты дұрыс өзгерту арқылы әр дөңгелектің қозғалысын трансляциялық және айналмалы түрде басқара аламыз.
L298N мотор драйвері:-
Қозғалтқыш пен қуат көзі арасындағы делдал ретінде мотор драйвері қолданылады, себебі төмен кернеу көрсеткіштеріне байланысты қозғалтқыштарды тікелей қуаттандыру мүмкін емес. Li-Po аккумуляторы оның 12 В кіріс терминалына қосылған және біз 5 вольтты розетканы мотор драйверінің 5 В кіріс розеткасына қосамыз, ақырында Li-Po жерін қосамыз, сонымен қатар мотор драйверінің жалпы жерге қосылған розеткасына ардуино қосамыз.
Енді қозғалтқыштардың терминалдары берілген розеткаларға қосылады. Соңында біз қозғалтқыштың кіріс терминалдарын arduino PWM шығыс ұяшығына қосамыз, бұл бізге қозғалыстың айналу және аудару аспектілерін дәл шешуге мүмкіндік береді.
Ұсынылған:
Қолмен қимылмен басқарылатын Chrome динозавр гаджеті / Мұны қалай жасауға болады / #ақылды шығармашылық: 14 қадам
Қолмен қимылмен басқарылатын Chrome динозавр гаджеті / Мұны қалай жасауға болады өте оңай. Егер сіз DINO хромын басқару үшін осы технологияны қолдансаңыз, сіз құлап қаласыз
SCARA роботы: Foward және Inverse кинематика туралы білім !!! (Plot Twist, ARDUINO -да ӨҢДЕУ арқылы нақты уақыт интерфейсін жасауды үйреніңіз !!!!): 5 қадам (суреттермен)
SCARA роботы: Foward және Inverse кинематика туралы білім !!! (Plot Twist PRODUCTING көмегімен ARDUINO -да нақты уақыт интерфейсін қалай жасау керектігін біліңіз !!!!): SCARA роботы индустрия әлемінде өте танымал машина. Бұл атау селективті құрастырылатын роботтық қолды немесе селективті үйлесімді роботты қолды білдіреді. Бұл негізінен бостандықтың үш дәрежесі, бұл алғашқы екі дисплей
IOT негізіндегі қимылмен басқарылатын робот: 10 қадам (суреттермен)
IOT негізіндегі қимылмен басқарылатын робот: бұл робот - кез келген жерден интернеттің көмегімен басқаруға болатын қимылмен басқарылатын робот. Бұл жобада MPU 6050 акселерометрі қолдың қозғалысы туралы мәліметтерді жинау үшін қолданылады. Ол біздің қолымыздың үдеуін үшке өлшейді
Қолмен қимылмен басқарылатын RC автокөлігі: 15 қадам
Қолмен қимылмен басқарылатын RC автокөлігі: Сәлем әлем! Бұл менің бірінші нұсқаулығым, егер сізде сұрақтар туындаса - тартынбаңыз. Мақсатты аудитория: Бұл жоба технологияға құмар кез келген адамға қатысты. Сіз білгір болсаңыз да, тәжірибелі болсаңыз да
Nrf24l01 Arduino арқылы басқарылатын қолмен басқарылатын роботты қалай құруға болады: 3 қадам (суреттермен)
Nrf24l01 Arduino арқылы басқарылатын тұтқалы роботты қалай құруға болады: " Nrf24l01 Arduino арқылы басқарылатын роботты ұстағышты қалай құру керек " MEG көмегімен L298N қос қозғалтқышы бар модульмен басқарылатын шынжыр табанды дөңгелекке орнатылған үш дәрежелі еркіндік ұстағышын қалай құру керектігін түсіндіреді