Irányítható webkamera joystick
Jó napot kívánok. Motiválja a számos hozzászólás ügyéről házi robotok, és úgy döntött, hogy valami saját kevésbé érdemes és érdekes.
Általában én szeretem robotok sokáig, de a keze nem érte el a normális projekt alapvetően csak játszani. Egy kis gondolkodás, gyere fel a projekt keresett alkatrész festett vázlatok, álmodja meg egy robot jövőben lehetőségeket. Részletek megrendelt nem hírhedt hely, és bár részei leküzdeni az utat az ég alól úgy határozott, hogy az egyik modul a jövő robot, ami kéznél van. Vagy inkább nem is veszik észre a modul is, és össze egy prototípus, és írjon szoftver, így nem kap megzavart programot írni, és még inkább, míg vannak minden részletet van egy tengeri szabad idő és a vágy, hogy tegyen valamit, nem pihenni.
A kezemben volt egy zsebkendőt Arduino Diecimila több szervó, web kamera, joystick, és egy ultrahangos távolságmérő. Ennek megfelelően, azonnal volt egy vágy, hogy egy „számítógépes látás” webkamerák segítségével, azzal a képességgel, hogy mind a stand alone üzemmód és a kézi vezérlés (joystick).
Spodviglo hogy írom ezt a cikket?
Ásó az interneten, találtam többnyire szemetet, homályos kérdésre fórumok, részletek a cikkek, egy kicsit távolabb az igényeket. Általában én nem találtam egy jó, teljes értékű cikkek, ami az elejétől a végéig létrehozását ismerteti mozgó szövet kamera, kódpéldákat, különösen kombinálva a távolságmérő és egy joystick.
Aztán úgy döntöttünk, hogy a továbbiakban nem kérik, mivel a feldolgozási idő elemeket, és felvette az összes információt egy hagynia több mint ha mindent a nulláról magát, különösen azért, mert a legtöbb cikk már régóta elavult.
A kihívás valójában triviális, hogy adjon tájékoztatást a joystick Arduino, ami egy bizonyos szögben elforgatja a 2 működtető egy csatolt webkamera, valamint annak szükségességét, hogy információt olvasni a távolságmérő, kiküldi a soros port.
Mérlegelése után mindent újra, úgy döntöttem, hogy kezdeni építeni egy prototípust saját. Menjünk!
legfontosabb
prototípus szerelvény
A prototípus jött létre 5 perc alatt. Megjelenése a prototípus nem érdekli egyáltalán, a fő cél - a program kialakítása előtt jön a robot részeket.
És tettem ki a jar első kiszállt bizonyos vitaminok, két szervót, webkamerák, gemkapocs, madzagot és ragasztó pisztoly. Kiderült, hogy a következő:
Az összeállítás befejeződött, a hajtóművek és ultrahangos távolságmérő csatlakozik az Arduino, Arduino, hogy a PC, folytassa az Arduino programozási.
programozható Arduino
Fut egy kicsit előre kell mondanom, hiba lépett fel itt, és amit meg kellett, hogy visszatérjen után írt egy programot a C #. A hiba volt itt, amit - én, naiv és lelkes, írt egy kis program, amely értelmezi a beérkező soros port egy szövegben hasonló a következő: „90:90” két részből áll, illetve az első rész a fokok az X, a második része Y. A Monitor port mindent kipróbált és tökéletesen működött, de amikor a program ellenőrzésére egy joystick írták továbbfejlesztett port támadás húrok különböző értékeket, az Arduino csak nincs ideje elolvasni az összes sorozatot, ezért gyakran átalakított karakterláncot a „0: 909:” „9090” valamint az n mint ezek.
Ennek szervó megőrült, és vett minden rendelkezését, kivéve azokat, amelyek igénylik.
Tehát habozás nélkül, arra a következtetésre jutottam, hogy szükségünk van egy szimbólum a sor elején és végén sor karakter. Ismét habozás nélkül, az első karakterlánc kezdődő jelképe a latin ábécé választották - «a», a végén az utolsó sor - «z», valamint a start kódértékeket tengelyek «x» és «y», ill. Teljes bemeneti vonal a következő alakú: «ax90y90z».
Minden jó lenne, ha nem a gépeket. Ultrahangos távolságmérő, ez határozza meg a távolságot a bumm, de van néhány árnyalatokat. Először is, ha a szög közötti tartományban kereső és a fal élesebb 45 fok (plusz vagy mínusz), a visszavert hangot a falat egy érintőleges, és az értéket nem felel meg a valóságnak. Másrészt elég nagy jelkibocsátását szöge körülbelül 30 fok (kézi) és a mért távolság a legközelebbi tárgy, az előnye, hogy a jel a tárgyak, amelyek a szenzor meg van döntve, tükröződik a másik irányba, és azt kapjuk, többé-kevésbé valós távolság egyenes mentén de a zaj még mindig ott van, és elég gyakran. Ezért még hozzá egy másik funkciója, hogy veszi n távolság mérések, összeadja őket, és felosztja száma, kitett n = 10, így a zaj válik sima és kevésbé észrevehető.
A Arduino kódot átírták, és azonnal átvette a következő formában:
A probléma a hibás elemzési koordináta eltűnt minden, 100 a 100 tesztek sikeresen teljesítette.
A fő vezérlő programot (C #)
Eleinte akartam írni mindent C ++ Qt, de később is meg kellett volna írni a C #, de hát.
Mit szeretne kapni:
1. elismerése emberek arcát.
2. Követési az arcát egy férfi.
3. Kézi vezérlés joystick.
4. meghatározása a távolság a tárgy.
Arcfelismerés és megjeleníti a képet a webkamera, kérdés nélkül, ezt választottuk a OpenCV könyvtár, vagy inkább a héj C # - Emgu CV.
Ahhoz, hogy olvassa el a joystick a felső helyzetbe, hogy használja a könyvtár Microsoft.DirectX.DirectInput, ami nem tetszett hátborzongató, és alkalmaztam SharpDX könyvtár, hanem meglehetősen sikeresen.
Milyen volt szükség a program:
1. képeket készít egy webkamerát, és megjeleníti a képernyőn.
2. Határozza meg a személy a képen, nyomelemek, és megkapjuk a koordinátákat a személy a képet.
3. Ahhoz, hogy egy vonal formájában «ax90y90z», és küldje el a soros port ellenőrzésére szervó.
4. Olvassa el az értékeket a joystick helyzetét.
5. Olvassa el a vallomása a gépeket.
Megfogalmazni a problémát, folytassa a programozást.
Könyvtár SharpDX lehetővé teszi számunkra, hogy megtalálja a csatlakoztatott joystick és megkapjuk tőle a tengelyhez (0-65535), nyomja meg és engedje el a joystick gomb. Szervók lehet forgatni 0-180 fok, illetve át kell alakítani az érték tengely joystick 0 180. Csak osztani a visszatérési értéke 363, és megkapta a kimeneti értékek 0 és 180 Ezután levelet függvény, amely létrehoz egy húr szervo helyzetét és azt megküldi a port.
Nyomtató képeket és arcfelismerés segítségével írják OpenCV és nem tükrözik semmit komplex (nekünk).
További érdekes, miután kéznél távolságmérő, persze, azt akartam, hogy a radar és épít legalább néhány hozzávetőleges képet a terep.
Ismétlődő trigonometria és vektor levelet eljárás, amely kiszámítja a pont koordinátáit a mi távolságmérő kamerával a forgásszög a hajtómű és a távolság a tárgy, és felhívja a kapott eredmények PictureBox, a gomb indítja meg az eljárást az áramlás, hogy működik, de még mindig ki a szobából enyhítésére ez inkább inkább akadályozzák, hanem egy durva vázlat egybeesik a valósággal. Próbálok elsimítására az adatokat az érzékelőt a csúcsot és a rajz a két szegmens közötti, elvileg kiderült nem rossz, de meggondolta magát, mivel gyakran a csúcs értékek csak zaj.
Ennek eredményeképpen kapunk mindent, amit akartunk. A számítógép felismeri az arcokat, és automatikusan nyomon követi őket. kéz joystick vezérlés működik a bumm. Radar, bár nem teljesen pontos, de működik. A fő funkciója a robot modul dolgozott, és csak finomítani és javítani őket.
Ez történt a végén.
következtetés
Kiderült, nagyon egyszerű. A cél elérése után a prototípus kész. Van egy csomó tennivaló, és a szabadidejében, vár egy csomag alkatrészek egy robot.
Tervek a jövőre
A következő lépés az, hogy létrejöjjön egy kerekes robot platform, távvezérlő beállítása (WiFi, 3G). lóg érzékelők (hőmérséklet, nyomás, stb), a beszéd szintézist. Kívánságlista Ugyanígy, vannak tervek egy mechanikus kar.
Azt hiszem, ha van érdeklődés ebben a cikkben és folytatása, az biztos, hogy kövesse! Korrekciók és kritika várjuk!
Köszönjük a figyelmet!