2023. május 30.
-
3.1. PhantomX URDF
3.2. ROS control - csomag
3.3.1. Taszító Kuramoto-modell
Jelen projektfeladat a Kognitív robotika (BMEGEMINMKR) tárgy labor részéhez készült. A laborgyakorlatok célja a ROS-al való megbarátkozás volt, így ez a munka is, ahogyan a labor feladatok, ROS Noetic-et használ.
A munka során egy hatlábú robot implementálására, majd annak egy részben önszerveződő modellel való vezérlésére került sor.
A szimuláció, egy a valóságban is létező (PhantomX Mark III Hexapod), hatlábú lépkedő robotot használ. Ez egy kutatási célokra kifejlesztett robot, a hat láb mindegyike három csuklóval rendelkezik, melyek közül eggyel csatlakozik a robot testéhez, így a teljes robot 18 csuklóval bír.
A szimulációhoz használt virtuális robot modellje URDF fájlként érhető el.
A projekt kipróbálásához ezt a git repot kell lehúzni, valamint pár ROS csomag telepítése is szükséges, melyek nem szerepelnek alapból a Noetic-ben. Ezek a következőek:
-
A csuklók mozgatásához szükséges, a következő paranccsal lehetséges telepíteni:
sudo apt-get install ros-noetic-ros-control
-
A csuklókat pozíció szerint vezéreljük (az eredeti, robotot leíró URDF-ben, effort controller van). Ez a csomag a
position_controllers/JointGroupPositionController
típus használata miatt szükséges, így 1 kontrollerben lehet kezelni az összes csuklót. Telepítése:sudo apt-get install ros-noetic-position-controllers
A projekt felépítése az alábbi főbb lépésekre bontható:
Az URDF fájl betöltése a /launch/phantomx_gazebo.launch
fájlban található, az üres világgal együtt. Az alábbi gif szemlélteti ekkor, hogyan vielkedik a robot, tehát szükség van, a következő fejezet alapján, egy a csuklókat vezérlő csomagra.
A kontrollerhez tartozó fájlok a /controller
mappában találhatóak. Itt vannak a csuklók implementálva és a hozzájuk tartozó PID szabályozó értékei megadva. Ezek meghívása is a fent említett launch fájlban található.
A csuklókat vezérlő node a /scripts/set_angles.py
python fájl. Ebbe van implementálva a következő fejezetben összefoglalt modell, mely a csuklókoordinátákat iterálja lépésről lépésre. A csomópont std_msgs.msg/Float64MultiArray
típusú üzenetekként küldi a Gazebo-nak az új csuklókoordinátákat, másodpercenként 40-szer, hogy a mozgás biztosan folytonosnak tűnjön. Az egyszerűség kedvéért lábanként csak az egyik fel-le mozgásért felelős csukló van folyamatosan vezérelve, a másik a kezdőpozíciót tartja.
Szinkornizációs jelenségek modellezésére gyakran használunk fázisoszcillátorokat. Szinkronizáció alatt jelen esetben olyan jelenségeket értünk, amely során csatolt oszcillátorok fázisai között kialakul egy időben állandó fáziskülönbség. A hatlábú robot vezérléséhez 6 darab csatolt fázisoszcillátorból álló taszító Kuramoto- rendszert alkalmazunk. A 6 rotátor egy-egy lábat írányít, mind az előre-hátra mind a fel-le mozgásért felelős csuklók csuklószögei a rotátorok fázisaiból vannak kiszámolva. Egy oszcillátort leíró egyenlet:
ahol
A ROS Master a roscore
paranccsal indítható el. Ezt követően a szimuláció a következő paranccsal.
roslaunch phantomx_gazebo phantomx_gazebo.launch
Ha minden rendben a következő üzeneteket érdemes megfigyelni:
Loaded 'joint_state_controller'
Started ['joint_state_controller'] successfully
Loaded 'legs_controller'
Started ['legs_controller'] successfully
[urdf_spawner-3] process has finished cleanly
Ezt követően elindítható a csuklókat vezérlő node:
rosrun phantomx_ros set_angles.py
A vezérlő node-ban lévő paramétereket próbálgatva az alábbihoz hasonló haladó mozgások hozhatóak létre, megfigyelhető a szinkronálódás jelensége is.
[1] Robotrendszerek (BMEGEMINMRL) tárgy 9.-10. heti anyaga
[2] Harkó Csanád, "Hatlábú robot kísérleti tanulmányozása: önszerveződő dinamika csatolt neuronok által", 2022