MISKOLCI EGYETEM GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR Korszerű információs technológiák Robot operációs rendszerek Tompa Tamás tanársegéd Általános Informatikai Intézeti Tanszék Miskolc, 2018. október 20. ; november 09.
Tartalom Robotika Robot operációs rendszerek ROS OpenRTM-aist Demonstráció : ) valós robot (TurtleBot, Lego EV3, btrover)
Robotika - bevezetés Mi a robot? A robot egy elektromechanikai szerkezet, amely előzetes programozás alapján képes különböző feladatok végrehajtására. A robotika 3 alaptörvénye A robotnak nem szabad kárt okoznia emberi lényben vagy tétlenül tűrnie, hogy emberi lény bármilyen kárt szenvedjen. A robot engedelmeskedni tartozik az emberi lények utasításainak, kivéve, ha ezek az utasítások az első törvény előírásaiba ütköznének. A robot tartozik saját védelméről gondoskodni, amennyiben ez nem ütközik az első és a második törvény előírásaiba.
Robotika - bevezetés Népszerű tématerület Sok, készletben (készen) megvásárolható robot létezik De sokan építenek is robotot barkács, hobby célból kutatási célból is pl. ember-robot interakció vizsgálata építsek vagy vegyek? cél függő
Robotika robotok csoportosítása Robotok csoportosítása Mobilitás alapján mobil helyhez kötött Felhasználás alapján anyagmozgató technológiai műveletet elvégző szociális Mobil robotok kinematikájuk alapján Helyhez kötött robotok kinematikájuk alapján
Robotika robotok csoportosítása Mobil robotok kinematikájuk alapján differenciális holonomikus egyéb Helyhez kötött robotok kinematikájuk alapján párhuzamos kinematikájú láncolt kinematikájú vegyes kinematikájú kinematika: robotmozgás leírása sebesség alapján matematikai feladat (koordináta transzformációk stb.)
Robotika robotok csoportosítása Differenciális vs. holonomikus hajtás
Robotika néhány szociális robot
Robotika néhány ipari robot
Robotika hardver
Robotika hardver Beágyazott rendszer néhány előre meghatározott feladatot lát el tartalmazhat olyan feladat-specifikus mechanikus és elektronikus alkatrészeket, melyek nem találhatók egy általános célú számítógépben A robot beágyazott rendszerekből épül fel mikrovezérlők (ARM, AVR, PIC, stb.) motorok szenzorok stb.
Robotika btrover hardver blokkvázlata
Robotika hardver Beágyazott rendszer feladata Jelek előállítása a motorok működtetéséhez szervok működtetéséhez szenzoroknak, stb. Jelek olvasása motorok enkódereitől (motor pozíciók) szenzoroktól, stb. Olvasott jelek feldolgozása Távolságszámítás, ütközésérzékelés, stb.
Robotika Csak csupán a beágyazott rendszerei segítségével nem tud önállóan valamilyen összetettebb feladatot, problémát megoldani pl. nem tud embert felismerni vagy térképet készíteni a környezetéről (SLAM) ezek csak az alacsonyszintű funkciókat valósítják meg Mitől tud majd egy összetettebb problémát megoldani? programozni kell magát a robotot. Hogyan? megoldás: központi PC, robot operációs rendszerrel kommunikációs kapcsolat a robot központi mikrovezérlőjével
Robot operációs rendszerek Eszköz komplex robot rendszer fejlesztéséhez egységes felületet biztosítsanak robotok programozására szabványosított komponensekkel kommunikációs csatornákkal programozói API-kal automatizmusokkal eszközökkel komponens alapú szemlélet
Robot operációs rendszerek Főbb funkcióik érzékelők, beavatkozók kezelése, integrációja vezérlési architektúra létrehozása kommunikációs csatornák definiálása működés közben adatok gyűjtése tesztelés meglévő adatmintákkal
Robot operációs rendszerek Példa komponens alapú szemléletre
Robot operációs rendszerek Elterjedtebbek: ROS OpenRTM-aist YARP OpenRDK
Robot operációs rendszerek Hogyan valósul meg a kommunikáció a köpntti PC és a robot hardvere között? általában soros port a mikrovezérlőn PC oldalon USB (virtuális soros port) kommunikáció adatkeretek segítségével keretfej + adat (több byte) + checksum adatkeretek írása a sororporta -> robot vezérlése adatkeretek olvasása a sorosportról
Robot Operating System Amerikai fejlesztésű, nyílt forráskódú rendszer 2007 Stanford Artificial Intelligence Laboratory (SAIL) a Stanford AI Robot projekt keretében, 2008-ban csatlakozott a fejlesztéshez a Willow Garage és még számos kutatócsoport
Támogatott OS Linux (főként) Mac OS X Windows Támogatott programozási nyelvek C++ Python
Az eddig megjelent ROS disztribúciók: Box Turtle (2010 Február) C Turtle (2010 Augusztus) Diamondback (2011 Február) Electric Emys (2011 Augusztus) Fuerte Turtle (2012 Március) Groovy Galapagos (2012 Október) Hydro (2013 szeptember) Indigo (2014 július) Jade (2015 május) Kinect Kame (2016 május) Lunar (2017 május)
Néhány ROS kompatibilis robot
A rendszer felépítése Nodes (csomópontok) Master (központi vezérlő) Parameter server (paraméter szerver) Messages (üzenetek) Topics (topik-ok, üzenetsorok) Services (szervizek, szolgáltatások) Bags
Csomópontok (nodes) Node-oknak,a rendszer futtatható alkalmazásait nevezik, melyek jól meghatározott feladatot hajtanak végre. A rendszerben több ilyen node is lehetséges. Központi vezérlő (master) A master a rendszer fontos eleme, ő valósítja meg az egyes csomópontok, illetve a rendszer elemi közötti kommunikációt, futtatókörnyezetet biztosítva azoknak. Paraméter szerver (parameter server) A csomópontoknak lehet segítségével paramétereket átadni, akár a csomópontok futása közben is.
Üzenetek (messages) A csomópontok kommunikációja üzeneteken keresztül történik, ezen üzenetek segítségével továbbítanak adatot egymásnak. Az üzenet tartalmazza a továbbítandó adatot. A rendszer tartalmaz előre beépített üzenettípusokat, de lehetőséget biztosít a fejlesztő számára, hogy saját üzenettípust is definiálhasson. Üzenetsorok, topik-ok (topics) A rendszer az üzenetek továbbítására üzenetsorokat, úgynevezett topikokat biztosít. Mikor egy csomópont üzenetet küld egy másik csomópont számára, akkor ezt egy üzenetsoron keresztül valósítja meg. A publikáló csomópont közzéteszi üzenetét a topikban, majd a fogadó csomópont pedig kiolvassa onnan. A rendszer lehetőséget biztosít saját, új topikok definiálásra, mindegyik topik saját névvel ellátva él a rendszerben.
Szervizek, szolgáltatások (services) A csomópontok közötti kommunikáció megvalósításának másik módja. A csomópontok közötti kérés-válasz típusú kommunikációt hívatottak megvalósítani. Bags Rendszerbeli üzenetek, adatok mentésére és azok visszajátszására biztosítanak lehetőséget. Fejlesztésnél különösen hasznos lehet például az egyes szenzorok által küldött adatok mentésére, majd azok visszajátszására tesztelés céljából.
Topic vs. Service
ROS fájlrendszer szerkezet
Jegyzékszerkezet, példa
Fontosabb parancsok és jelentésük
Telepíteni és konfigurálni kell a rendszert roscore szuperprocessz, központi mag, mindig futnia kell ROS workspace létrehozása catkin_init_workspace; ROS munkaterület, itt lesznek a node-ok catkin_ws jegyzékben ROS node létrehozása catkin_create_pkg <package_name> [depend1] [depend2] ROS node-ok fordítása catkin_make (a catkin_ws-ben!) ROS node futtatása rosrun [package_name] [node_name]
RVIZ - vizualizáció
RVIZ - vizualizáció
Gazebo - szimuláció
URDF robotmodel leíró xml
URDF
URDF model RVIZ-ben
Az RT-Middleware Robotvezérlő keretrendszer RT = Robot Technology Middleware: köztes réteg, az operációs rendszer és az alkalmazás között helyezkedik el Egy vázat biztosít, melyet feltölthetünk azzal a logikával, amely az adott problémát megoldja Önmagában nem használható, használatához olyan implementációra van szükség, amely teljesíti a specifikáció által definiált interfészeket. Ezekkel az interfészekkel lehetséges, hogy a komponensek, a middleware rendszer által vezérelve fussanak. CORBA alapú implementáció 40/17
Az OpenRTM RT-Middleware specifikáció nagy részét megvalósítja Japán fejlesztés Komponens alapú szemlélet Számos segédszoftver (pl.: RTSystemEditor) Több platform támogatása (Windows, Linux) Több programozási nyelv támogatása (Java, C++) Nyílt forráskódú 41/17
Az OpenRTM A rendszer komponensei több részből állnak Konfigurációs állományok Osztályok (programkód) Adatportok, szolgáltatás portok (IDL) A komponensek állapotai létrehozott aktív inaktív hibás 42/17
A komponens alapú szemlélet Minden komponens jól meghatározott feladatot lát el Rugalmas, könnyen bővíthető új modulokkal OpenRTM-aist + + + + + Nyílt forráskódú RT-Middlware implementáció (AIST) RT-Middleware 43/17
RT-Middleware és RT-komponensek Logika hardver vezérlés algoritmusok alkalmazások stb RT komponens Framework RT komponens Logika/algoritmus közös interfészekkel = RT-Komponens (RTC) RTC RTC RTC RTC RTC RTC RTC RTC RT-Middleware Futtató környezet=> RT-Middleware(RTM) RTC kommunikáció hálózaton keresztül (névszerver) 44/17 44
Az OpenRTM Eclipse fejlesztőkörnyezet RTC Builder 45/17
Az OpenRTM Eclipse fejlesztőkörnyezet RT System Editor 46/17
A rendszer működése - példa 47/17
Felhasznált irodalom www.ros.org http://www.openrtm.org/openrtm/ http://www.mogi.bme.hu/tamop/robotalkalmazasok/ch02.html http://www.mogi.bme.hu/tamop/robotmechanizmusok/index.html Aaron Martinez, Enrique Fernández - Learning ROS for Robotics Programming
Köszönöm a figyelmet!