INHOUDSOPGAWE:
- Stap 1: VEREISTE DINGE:
- Stap 2: WERKBEGINSEL:
- Stap 3: INVOER VANG EN VERWERKING:
- Stap 4:
- Stap 5:
- Stap 6: VERWERKINGSGEDEELTE:
- Stap 7:
- Stap 8:
- Stap 9:
- Stap 10:
- Stap 11:
- Stap 12: BEWEGINGSBEHEER:
- Stap 13:
Video: Gebaar Hawk: Handgebaar -beheerde robot met behulp van beeldverwerkingsgebaseerde koppelvlak: 13 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Gesture Hawk is in TechEvince 4.0 vertoon as 'n eenvoudige beeldverwerkingsgebaseerde mens-masjien-koppelvlak. Die nut daarvan lê daarin dat geen ekstra sensors of drabare toestelle behalwe 'n handskoen nodig is om die robotmotor te bestuur wat volgens 'n differensiële dryfbeginsel werk nie. In hierdie instruksies neem ons u deur die werkbeginsel agter objekopsporing en gebaaropsporing wat in die stelsel gebruik word. Die bronkode van hierdie projek kan van Github afgelaai word via die skakel:
Stap 1: VEREISTE DINGE:
- L298N motorbestuurder
- DC Motors
- Onderstel van 'n robotmotor
- Arduino Uno
- LiPo batterye
- Arduino USB -kabel (lank)
- OpenCV -biblioteek met Python
Stap 2: WERKBEGINSEL:
Gesture Hawk is 'n driefase -verwerkingstelsel, soos u kan sien in die diagram hierbo.
Stap 3: INVOER VANG EN VERWERKING:
Invoeropname kan verstaan word in die breër kategorieë wat in die diagram hierbo gegee word.
Om die handvorm uit die omgewing te onttrek, moet ons maskering of filter van 'n bepaalde kleur (in hierdie geval - violetblou) gebruik. Om dit te kan doen, moet u die prent omskakel van BGR na HSV -formaat, wat met die volgende kodefragment gebruik kan word.
hsv = cv2.cvtColor (raam, cv2. COLOR_BGR2HSV)
Die volgende stap is om die gewenste reeks HSV -parameters te vind om die hand uit te haal met masker of filter. Hiervoor is die beste manier om spoorstawe te gebruik om 'n geskikte reeks te vind. Hier is die skermkiekie van 'n snitbalk wat vir hierdie projek gebruik is.
Stap 4:
Stap 5:
Hier is 'n kodefragment hieronder om so 'n spoorbalk vir maskerkonstruksie te maak:
voer cv2 in
invoer numpy as npdef niks (x): slaag cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, niks) cv2.createTrackbar ('l_S ',' beeld ', 50, 255, niks) cv2.createTrackbar (' l_V ',' beeld ', 50, 255, niks) cv2.createTrackbar (' h_H ',' image ', 130, 255, niks) cv2. createTrackbar ('h_S', 'image', 255, 255, niks) cv2.createTrackbar ('h_V', 'image', 255, 255, niks) terwyl (1): _, frame = img.read ()
hsv = cv2.cvtColor (raam, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackbarPos ('l_ 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') lower_R = np. array ([lH, lS, lV]) higher_R = np.array ([hH, hS, hV]) mask = cv2.inRange (hsv, lower_R, higher_R) res = cv2.bitwise_and (raam, raam, masker = masker) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF as k == 27: breek cv2.destroyAllWindows ()
Stap 6: VERWERKINGSGEDEELTE:
Ons het die geometriese vorm van 'n hand, dit is nou tyd om dit te gebruik en te gebruik om die handgebaar uit te vind.
Konvekse romp:
Deur middel van 'n konvekse romp probeer ons om 'n geskatte veelhoek te pas via uiterste punte in die vorm. Die prentjie aan die linkerkant toon die benaderde veelhoek wat aan die vorm toegeken is met die konvekse punte wat met rooi gemerk is.
Konvekse punte is die punte in die vorm wat die verste van die kant van hierdie benaderde veelhoek is. Maar die probleem met die konvekse romp is dat ons tydens die berekening 'n verskeidenheid van al die konvekse punte sal kry, maar wat ons nodig het, is die blou puntige konvekse punt. Ons sal u vertel waarom dit nodig is.
Om hierdie konvekse punt te vind, moet ons die loodregte afstandformule toepas om die afstand van die konvekse punt met die naaste sy te bepaal. Ons het opgemerk dat die blou punt die maksimum afstand van die kant het, en dus kry ons hierdie punt.
Stap 7:
Stap 8:
Vervolgens moet ons die helling van die lyn vind wat die punt van die duim (of die uiterste punt) by hierdie konvekse punt met horisontaal verbind.
Stap 9:
In bogenoemde geval moet die hoek α tussen 0 en 90 grade wees as die gebaar links draai. Dit is bruin (α) moet positief wees.
Stap 10:
In die geval hierbo, moet die hoek α tussen 180 en 90 grade wees as die gebaar vir regs draai. Dit is bruin (α) moet negatief wees.
As Tan α dus positief is, draai dan links. As Tan α negatief is, draai dan regs. Dit is tyd om te sien hoe u die belangrikste stopopdrag kan opspoor.
Hier word 'n gespesifiseerde verhouding (gevind deur tref en toets) ondersoek en in maksimum gevalle bly hierdie verhouding van afstande in hierdie spesifieke reeks.
Stap 11:
Uiteindelik word die bewegingsgebaar vooruit geanaliseer deur die funksie MatchShape () in OpenCV. Hierdie funksie vergelyk die vorm van twee tellers, in hierdie geval, tussen die oefenvoorbeeld op die punt in die foto hierbo met die kontoer in die linkerkant van die prent hierbo. Dit gee 'n waarde wat wissel van 0 tot 2 of 3, volgens die variasie in die vorm van twee kontoere. Vir dieselfde kontoer gee dit 0 terug.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Hier is cn1 en cnt2 die twee kontoere wat vergelyk moet word.
Stap 12: BEWEGINGSBEHEER:
PySerial:
Ons het die PySerial -biblioteek van python gebruik om die verwerkte data om te skakel in seriële data wat via Arduino USB -kabel aan Arduino Uno gekommunikeer word. Sodra 'n bepaalde gebaar deur opencv bespeur is, het ons 'n tydelike veranderlike geskep met die naam 'x', 'n unieke waarde daaraan toegeken en dit omgeskakel na seriële invoer met behulp van die volgende opdragreël:-
voer reeks in #om Pyserial -biblioteek in te voer
serial. Serial ('', baudrate = '9600', timeout = '0') # opstel van seriële uitvoer.. PORT NAAM is die naam van die poort waardeur data -oordrag sal plaasvind.
serial.write (b'x ') # x is die alfabet wat na die poort gestuur word … b is om hierdie string om te skakel na grepe.
Arduino verwerking:
Nou word arduino so gekodeer dat elke verskillende reeks x lineêr gekarteer word tot sekere aksie wat verantwoordelik is vir 'n gladde beweging van die robot (sê die opsporing van die linker gebaar sal die motors regs laat draai om links te draai). Ons kan die beweging van elke wiel translasioneel sowel as rotasioneel beheer deur die kode behoorlik te verander.
L298N Motorbestuurder:-
Motorbestuurder word gebruik as die bemiddelaar tussen motor en kragbron, aangesien motors nie direk van krag kan wees as gevolg van lae spanning nie. Die Li-Po-battery is gekoppel aan die 12V-ingangsklem en ons koppel die 5V-aansluiting van die arduino aan die 5V-ingangskanaal van die motorbestuurder, wat uiteindelik die grond van Li-Po sowel as die arduino in 'n gemeenskaplike grondaansluiting van die motorbestuurder verbind.
Nou is die terminale van die motors verbind met die gegewe voetstukke. Uiteindelik verbind ons die ingangsklemme vir die motor met die PWM -uitgangsokke van Arduino, sodat ons die rotasie- en vertalingsaspekte van beweging akkuraat kan besluit.
Aanbeveel:
Mens-rekenaar-koppelvlak: funksioneer as 'n gripper (gemaak deur Kirigami) deur polsbeweging met behulp van EMG: 7 stappe
Mens-rekenaar-koppelvlak: Function a Gripper (gemaak deur Kirigami) deur polsbeweging met behulp van EMG: Dit was dus my eerste poging met 'n mens-rekenaar-koppelvlak. Ek het die spieraktiveringsseine van my polsbeweging vasgelê met 'n EMG-sensor, dit verwerk deur luislang en arduino en het 'n origami -gebaseerde grijper aangestuur
SCARA -robot: leer oor Foward en omgekeerde kinematika !!! (Plot Twist Leer hoe om 'n intydse koppelvlak in ARDUINO te maak met behulp van verwerking !!!!): 5 stappe (met foto's)
SCARA -robot: leer oor Foward en omgekeerde kinematika !!! (Plot Twist Leer hoe om 'n intydse koppelvlak in ARDUINO te maak met behulp van verwerking !!!!): 'n SCARA -robot is 'n baie gewilde masjien in die nywerheidswêreld. Die naam staan vir beide Selective Compliant Assembly Robot Arm of Selective Compliant Articulated Robot Arm. Dit is basies 'n robot van drie grade, wat die eerste twee
Toepassing van MCP-23008 met behulp van relais-koppelvlak (I2C) :: 6 stappe
Toepassing van MCP-23008 met behulp van Relay Interface (I2C) :: HelloGood Greetings .. !! I (Somanshu Choudhary) namens Dcube-tegnologie-ondernemings wat Relays via I2C-protokol met Arduino nano en MCP23008 gaan beheer
Die beheer van 'n Neopixel Led -ring met 'n gebaar sensor: 3 stappe (met foto's)
Die beheer van 'n Neopixel Led-ring met 'n gebaarssensor: In hierdie tutoriaal gaan ons speel met 'n gebaarssensor (APDS-9960) en 'n neopixelring om te leer hoe om albei met 'n Arduino UNO te kombineer. Die eindproduk sal reageer op links - regs gebare deur geleide beweging na regs of links te animeer, en aan u
Koppelvlak DHT11 Met behulp van Arduino: 4 stappe
Interface DHT11 Met behulp van Arduino: In hierdie instruksies leer u hoe u die DHT11 humiditeits- en temperatuursensor op u Arduino UNO kan installeer. En leer meer oor hoe die humiditeitsensor werk, en hoe u die uitsetlesings van die seriële monitor kan kontroleer Beskrywing: Die DHT11 ontdek wa