Janko Hraško - Miroslav Cibula, Tomáš Búcsi, Juraj Gavura

From RoboWiki
Revision as of 04:02, 12 February 2023 by Robot (talk | contribs) (Pridanie videa)
Jump to: navigation, search

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.




Referencie

  1. Pukančík, P. (2012). Riadiaci systém s inverznou kinematikou pre mobilné robotické rameno. Bakalárska práca, FMFI UK, Bratislava.
  2. Pukančík, P. (2015). Robotický systém pre hranie stolovej hry. Diplomová práca, FMFI UK, Bratislava
  3. Tučáni, M. (2015). Mobilný inteligentný robot s ramenom a stereovidením. Diplomová práca, FMFI UK, Bratislava
  4. https://github.com/pexpect/pexpect
  5. https://abhitronix.github.io/vidgear
  6. https://zeromq.org
  7. https://github.com/petercorke/robotics-toolbox-python