
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:48


github.com/AIWintermuteAI/ros-moveit-arm.git
A cikk előző részében URDF és XACRO fájlokat hoztunk létre robotkarunkhoz, és elindítottuk az RVIZ -t, hogy szimulált környezetben vezéreljük robotkarunkat.
Ezúttal az igazi robotkarral csináljuk! Hozzáadjuk a fogót, írunk egy robotvezérlőt, és (opcionális) IKfast inverz kinematikai megoldót készítünk.
Geronimo!
1. lépés: A fogó hozzáadása



A fogó hozzáadása először kissé zavaró volt, ezért ezt a részt kihagytam az előző cikkben. Végül is kiderült, hogy nem is olyan nehéz.
Módosítania kell az URDF fájlt, hogy megfogó linkeket és ízületeket adjon hozzá.
A robotom módosított URDF -fájlja ehhez a lépéshez csatolva van. Alapvetően ugyanazt a logikát követi, mint a karrész, csak hozzáadtam három új linket (claw_base, claw_r és claw_l) és három új csuklót (az ízület5 rögzített, és a csukló6, a csukló7 forgatócsukló).
Miután módosította az URDF fájlt, frissítenie kell a MoveIt által generált csomagot és az xacro fájlt a MoveIt beállítási asszisztens használatával.
Indítsa el a beállítási asszisztenst a következő paranccsal
roslaunch moveit_setup_assistant setup_assistant.launch
Kattintson a Meglévő MoveIt konfiguráció szerkesztése elemre, és válassza ki a mappát a MoveIt csomaggal.
Adjon hozzá új tervezőcsoport megfogót (linkekkel és illesztésekkel a fogóhoz) és egy véghatást. A beállításaim az alábbi képernyőképeken találhatók. Vegye figyelembe, hogy nem a kinematikai megoldót választja a fogóhoz, ez nem szükséges. Generálja a csomagot és írja felül a fájlokat.
Fuss
macska gyártmány
parancsot a macska munkaterületén.
Rendben, most van egy karunk egy fogóval!
2. lépés: A kar felépítése




Amint már említettem, a kar 3D modellt Juergenlessner készítette, köszönöm a csodálatos munkát. A részletes összeszerelési utasítások megtalálhatók, ha követi a linket.
Viszont módosítanom kellett a vezérlőrendszert. A szervók vezérléséhez Arduino Uno -t használok érzékelőpajzzsal. Az érzékelőpajzs sokat segít a kábelezés egyszerűsítésében, és megkönnyíti a szervók külső áramellátását is. 12 V-os 6A-es tápegységet használok a lefelé irányuló modulon (6V) keresztül az érzékelőpajzshoz.
Megjegyzés a szervókról. A Taobao -tól vásárolt MG 996 HR szervókat használom, de a minőség nagyon rossz. Határozottan olcsó kínai leütés. A könyökcsuklóhoz tartozó nem nyújtott elegendő nyomatékot, és nagy terhelés mellett egyszer is füstölni kezdett. A könyökcsukló szervót le kellett cserélnem egy jobb minőségű gyártó MG 946 HR -jére.
Röviden - vásároljon minőségi szervókat. Ha varázsfüst jön ki a szervóból, használjon jobb szervókat. A 6V nagyon biztonságos feszültség, ne növelje. Nem növeli a nyomatékot, de károsíthatja a szervókat.
Szervók bekötése az alábbiak szerint:
bázis 2
váll2 4 váll1 3
könyök 6
fogó 8
csukló 11
Nyugodtan változtassa meg, amíg eszébe sem jut az Arduino vázlat megváltoztatása.
Miután befejezte a hardvert, nézzük meg a nagyobb képet!
3. lépés: MoveIt RobotCommander interfész

Akkor most mi legyen? Miért van szüksége a MoveIt -re és a ROS -ra? Nem tudod csak irányítani a kart közvetlenül az Arduino kódon keresztül?
Igen tudsz.
Oké, most mit szólnál ahhoz, ha GUI -t vagy Python/C ++ kódot használnál a robotpóz biztosításához? Arduino képes erre?
Féle. Ehhez meg kell írnia egy fordított kinematikai megoldót, amely felveszi a robotpózot (fordítási és forgáskoordináták 3D térben), és át kell alakítani a szervók közös szögüzeneteivé.
Annak ellenére, hogy maga is meg tudja csinálni, baromi sok munka vár rá. Tehát a MoveIt és a ROS szép felületet biztosít az IK (inverz kinematika) megoldó számára, hogy elvégezze az összes nehéz trigonometrikus emelést az Ön számára.
Rövid válasz: Igen, megtehet egy egyszerű robotkart, amely végrehajtja a kódolt Arduino vázlatot az egyik pózról a másikra való áttéréshez. De ha intelligensebbé szeretné tenni robotját, és számítógépes látási képességeket szeretne hozzáadni, akkor a MoveIt és a ROS az út.
Készítettem egy nagyon egyszerűsített diagramot, amely elmagyarázza a MoveIt keretrendszer működését. Esetünkben ez még egyszerűbb lesz, mivel nem kapunk visszajelzést a szervóinktól, és a /joint_states témát használva biztosítjuk a robotvezérlő számára a szervók szögeit. Csak egy alkatrészünk hiányzik, ez a robotvezérlő.
Mire várunk? Írjunk néhány robotvezérlőt, így a robotunk… tudod, jobban irányítható.
4. lépés: Arduino kód a robotvezérlőhöz



Esetünkben a robotvezérlő Arduino Uno, amely ROS csomópontot futtat rosseria -val. Az Arduino vázlatkódja ehhez a lépéshez csatolt, és a GitHubon is elérhető.
Az Arduino Uno -n futó ROS -csomópont alapvetően feliratkozik a MoveIt -t futtató számítógépen közzétett /JointState témára, majd átalakítja a tömb illesztési szögeit radiánból fokra, és átadja azokat szervóknak a szabványos Servo.h könyvtár segítségével.
Ez a megoldás kissé vagány, és nem az, ahogy az ipari robotokkal történik. Ideális esetben a mozgáspályát a /FollowJointState témában kell közzétennie, majd visszajelzést kapnia a /JointState témáról. De a karunkban a hobbi szervók nem tudnak visszajelzést adni, ezért csak előfizetünk a /JointState témára, amelyet a FakeRobotController node publikált. Alapvetően azt fogjuk feltételezni, hogy bármilyen szögből átvittük a szervókat, az ideális.
Ha többet szeretne megtudni a rosserial működéséről, olvassa el az alábbi oktatóanyagokat
wiki.ros.org/rosserial_arduino/Tutorials
Miután feltöltötte a vázlatot az Arduino Uno -ba, csatlakoztatnia kell azt a soros kábellel az ROS telepítést futtató számítógéphez.
Az egész rendszer megjelenítéséhez hajtsa végre az alábbi parancsokat
roslaunch my_arm_xacro demo.launch rviz_tutorial: = igaz
sudo chmod -R 777 /dev /ttyUSB0
rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200
Az interaktív jelölők segítségével az RVIZ -ben mozgathatja a robotkart egy pózba, majd nyomja meg a Tervezés és Végrehajtás gombot, hogy ténylegesen a helyzetbe kerüljön.
Varázslat!
Most készen állunk a Python kód írására a rámpa tesztünkhöz. Hát majdnem…
5. lépés: (Opcionális) IKfast beépülő modul létrehozása
Alapértelmezés szerint a MoveIt azt javasolja, hogy használjon KDL kinematikai megoldót, amely valójában nem működik kevesebb, mint 6 DOF karral. Ha alaposan követi ezt az oktatóanyagot, akkor észre fogja venni, hogy az RVIZ karmodellje nem tud olyan pózokba menni, amelyeket a kar konfigurációjának támogatnia kell.
Az ajánlott megoldás az egyéni kinematikai megoldó létrehozása az OpenRave használatával. Ez nem olyan nehéz, de meg kell építenie, és a források függőségei vagy a dokkoló tárolóját kell használni.
Az eljárás nagyon jól dokumentált ebben az oktatóanyagban. Megerősítették, hogy működik az Ubuntu 16.04 és ROS Kinetic rendszert futtató virtuális gépen.
A következő parancsot használtam a megoldó létrehozásához
openrave.py -adatbázis inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
majd futott
rosrun moveit_kinematics create_ikfast_moveit_plugin.py teszt_robot kar my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
a MoveIt IKfast beépülő modul létrehozásához.
Az egész eljárás kissé időigényes, de nem túl nehéz, ha alaposan követi az oktatóanyagot. Ha kérdése van ezzel a résszel kapcsolatban, kérjük, vegye fel velem a kapcsolatot megjegyzésekben vagy PM -ben.
6. lépés: A rámpa teszt


Most készen állunk arra, hogy kipróbáljuk a rámpa tesztet, amelyet a ROS MoveIt Python API segítségével hajtunk végre.
A Python -kód ehhez a lépéshez van csatolva, és a github lerakatban is elérhető. Ha nincs rámpája, vagy másik tesztet szeretne kipróbálni, akkor meg kell változtatnia a robot pozícióját a kódban. Az első végrehajtáshoz
rostopic echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
a terminálban, amikor már fut az RVIZ és a MoveIt. Ezután helyezze a robotot az interaktív jelölőkkel a kívánt pozícióba. A pozíció és tájolás értékei megjelennek a terminálon. Csak másolja őket a Python kódba.
A rámpa próbaüzem végrehajtásához
rosrun my_arm_xacro pick/pick_2.py
az RVIZ és a rosserial csomópont már fut.
Maradjon velünk a cikk harmadik részéhez, ahol sztereó kamerát fogok használni az objektumok észlelésére, és végrehajtom a pick and place folyamatot az egyszerű tárgyakhoz!
Ajánlott:
Matlab alapú ROS robotvezérlő: 9 lépés

Matlab-alapú ROS robotvezérlő: Gyermekkorom óta mindig arról álmodtam, hogy vasember leszek, és még mindig az vagyok. Az Iron Man egyike azoknak a karaktereknek, akik reálisan lehetségesek, és egyszerűen megfogalmazva vágyom arra, hogy egyszer vasember lehessek, még akkor is, ha az emberek nevetnek rajtam, vagy azt mondják, hogy ez lehetetlen
Robotkar Zio modulokkal 3. rész: 4 lépés

Robotkar Zio modulokkal 3. rész: Ez a blogbejegyzés a Zio Robotics sorozat része. Bevezetés Korábbi blogunkban közzétettük az 1. és 2. rész oktatóanyagát arról, hogyan lehet Zio modulok segítségével vezérelni egy robotkart. Az első rész többnyire a robotkar karjának automatikus vezérlésére összpontosított
Robotkar Zio modulokkal 2. rész: 11 lépés

Robotkar Zio modulokkal 2. rész: A mai oktatóanyagban mind a 4 szervót és egy PS2 vezeték nélküli vezérlőt fogjuk használni a robotkar vezérléséhez. Ez a blogbejegyzés a Zio Robotics sorozat része. Bevezetés Korábbi blogunkban közzétettük az 1. részt oktatóanyag a Robot Ar vezérléséről
Robotkar vezérlése Zio modulokkal 1. rész: 8 lépés

Robotkar vezérlése Zio modulokkal 1. rész: Ez a blogbejegyzés a Zio Robotics sorozat része. Ez a projekt megtanítja, hogyan kell kinyitni és bezárni a robotkar karját. Ezt az n
ROS MoveIt robotkar: 4 lépés

ROS MoveIt Robot Arm: Ez egy cikksorozat lesz egy robotkar létrehozásáról, amely ROS (Robotic Operating System) és MoveIt segítségével vezérelhető. Ha szereted a robotikát, a ROS egy nagyszerű keretrendszer, amely segít gyorsabb robotok felépítésében. Lehetővé teszi az utólagos használatot