Janko Hraško - Miroslav Cibula, Tomáš Búcsi, Juraj Gavura
Contents
Ciele projektu
Cieľom nášho projektu bolo opraviť a zlepšiť funkcionalitu už vytvoreného robota Janko Hraško, ktorý vznikol ako bakalárska a diplomová práca Petra Pukančíka [1,2] a diplomová práca Mareka Tučániho [3].
Cieľmi bolo konkrétne vymeniť zastaralú stereokameru Surveyor Stereo Vision System a SBC počítač Gumstix Overo Air slúžiaci na spracovanie obrazu za modernejšiu stereokameru Intel RealSense D435i prepojenú s počítačom Raspberry Pi 4.
Ďalej sme chceli vytvoriť a sprevádzkovať kontrolný server na RPi 4, pomocou ktorého by bolo možné ovládať robota na diaľku.
Realizácia projektu
Hardvér a hardvérový interface
Do robota sme pridali počítač Raspberry Pi 4 s 8 GB RAM a 64 GB pamäte, ktorý komunikuje cez USB-TTL prevodník s mikrokontrolérovým riadiacim obvodom, ktorý riadi servá robotického ramena a motory. Keďže dokumentácia pôvodného riadiaceho obvodu nebola dostatočná na jeho replikáciu alebo obnovenie, rozhodli sme sa ho ponechať v pôvodnom stave.
Raspberry Pi bol spolu s kontrolným obvodom osadený do nami navrhnutého rámu vytlačeného v 3D tlačiarni. K RPi sme pripojili napäťový step-down menič pre potreby napájania z batérie. Stereokamera Intel RealSense D435i bola pripevnená na prednú stranu základne robota a prepojená cez USB kábel s RPi 4.
Iné výraznejšie zmeny v hardvéri alebo konštrukcii robota nebolo možné realizovať, keďže to jeho konštrukcia nedovoľovala.
Predchádzajúceho práce poskytovali funkčný kód pre nízkoúrovňové ovládanie robota, riešenie inverznej kinematiky ramena a detekciu kolízii medzi ním a telom robota. Tieto kódy sme upravili a prispôsobili pre naše použitie a zaobalili sme ich do formy C++ knižníc.
K ním sme vytvorili zjednodušení terminálový interface, cez ktorý je možné ovládať základné funkcie robota aj volaním z Pythonu a iných jazykov. Na vrch sme postavili wrapper v jazyku Python, z ktorého sme pomocou knižnice pexpect [4] volali terminálový interface a nižšie úrovne.
Servery a webové rozhranie
Na RPi sme vytvorili primárny server, ktorý prijíma inštrukcie od klienta a respektívne volá metódy Python wrappera, čím riadi robota. Server komunikuje cez TCP pomocou Socket API a pre každého pripojeného klienta dynamicky vytvára nové vlákno. Keďže niektoré inštrukcie vracajú stav robota, server komunikuje s klientom obojsmerne.
RPi taktiež vysiela stream zo stereokamery, a to cez sekundárny video server využívajúci knižnicu Vidgear [5] komunikujúcu pomocou protokolu ZeroMQ [6]. Pre zvýšenie výkonu vysielame len v rozlíšení 240p pri 10 FPS a každý frame komprimujeme pomocou JPEG kompresie.
Front-end webového rozhrania sme implementovali pomocou frameworku Streamlit. Rozhranie posiela dáta na ovládanie robota na primárny server a prijíma a zobrazuje video stream z video servera.
Webové rozhranie má taktiež implementovanú vizualizáciu robotického ramena, ktorú sme vytvorili pomocou knižnice Robotics Toolbox for Python [7]. Virtuálnu verziu ramena sme skonštruovali pomocou Denavit-Hartenberg parametrov nájdených v práci [2], ktoré sme kvôli nezrovnalostiam upravili. Primárny server potom odosiela do webového rozhrania konfiguráciu servomotorov, ktoré sú použité na vizualizáciu.
DH-parametre použité na konfiguráciu však zrejme nie sú korektné a je potrebné ich prerobiť. Z tohto dôvodu je táto časť vo finálnej implementácii skrytá.
Rozhranie umožňuje používateľovi pohybovať základňou robota, manipulovať s robotickou rukou umiestňovaním jej efektoru na zadané súradnice, zatvárať a otvárať gripper, ako aj spúšťať procedúru na zdvihnutie objektu zo zadaných súradníc a jeho uloženie do ukladacieho priestoru umiestneného na robotovi.
Záver
V rámci tohto projektu sa nám podarilo obnoviť robota Janko Hráško.
Aktualizovali sme hardvér tak, aby nebolo potrebné zasahovať do vnútornej elektroniky v nasledujúcich projektov. Taktiež sme pridali počítač Raspberry Pi a zaobalili sme staršie knižnice do skriptov, s ktorými sme zjednodušili používanie robota a aj vývoj ďalších funkcionalít.
Vďaka týmto zmenám sa budúce práce na robotovi môžu viac zamerať na vývoj softvérovej stránky robota a implementáciu funkcií, ktoré sme v rámci nášho projektu nestihli dokončiť, ako napríklad vizualizáciu robotického ramena na webovom rozhraní, plné využitie počítačového videnia pomocou obrazu zo stereokamery a zjemnenie pohybu robotickej ruky.
Zdrojové kódy
Zdrojové kódy tohto projektu sa nachádzajú na https://github.com/Mcibula/jh3. Predchádzajúce verzie projektu a ich zdrojové kódy je možné vidieť na https://github.com/Robotics-DAI-FMFI-UK/janko-hrasko
Referencie
- Pukančík, P. (2012). Riadiaci systém s inverznou kinematikou pre mobilné robotické rameno. Bakalárska práca, FMFI UK, Bratislava.
- Pukančík, P. (2015). Robotický systém pre hranie stolovej hry. Diplomová práca, FMFI UK, Bratislava
- Tučáni, M. (2015). Mobilný inteligentný robot s ramenom a stereovidením. Diplomová práca, FMFI UK, Bratislava
- https://github.com/pexpect/pexpect
- https://abhitronix.github.io/vidgear
- https://zeromq.org
- https://github.com/petercorke/robotics-toolbox-python