Obsah:

Robotické rameno ROS MoveIt Časť 2: Ovládač robota: 6 krokov
Robotické rameno ROS MoveIt Časť 2: Ovládač robota: 6 krokov

Video: Robotické rameno ROS MoveIt Časť 2: Ovládač robota: 6 krokov

Video: Robotické rameno ROS MoveIt Časť 2: Ovládač robota: 6 krokov
Video: Makeblock Untimate Robot Kit Part 2 : Robtic Arm Explaine, Software, Code App and Having Fun demo 2024, Júl
Anonim
Image
Image

github.com/AIWintermuteAI/ros-moveit-arm.git

V predchádzajúcej časti článku sme vytvorili súbory URDF a XACRO pre naše robotické rameno a spustili sme RVIZ na ovládanie nášho robotického ramena v simulovanom prostredí.

Tentokrát to zvládneme so skutočným robotickým ramenom! Pridáme chápadlo, napíšeme robotický ovládač a (voliteľné) vygenerujeme riešenie inverznej kinematiky IKfast.

Geronimo!

Krok 1: Pridanie chápadla

Pridanie chápadla
Pridanie chápadla
Pridanie chápadla
Pridanie chápadla
Pridanie chápadla
Pridanie chápadla

Pridanie chápadla bolo spočiatku trochu mätúce, preto som túto časť v predchádzajúcom článku preskočil. Ukázalo sa, že to nakoniec nie je také ťažké.

Budete musieť upraviť svoj súbor URDF, aby ste pridali odkazy a kĺby uchopovača.

K tomuto kroku je priložený upravený súbor URDF pre môjho robota. V zásade sa riadi rovnakou logikou ako ramenná časť, len som pridal tri nové články (claw_base, claw_r a claw_l) a tri nové kĺby (joint5 je pevný a join6, joint7 sú otočné kĺby).

Po úprave súboru URDF budete tiež musieť aktualizovať generovaný balík MoveIt a súbor xacro pomocou asistenta nastavenia MoveIt.

Spustite asistenta nastavenia nasledujúcim príkazom

roslaunch moveit_setup_assistant setup_assistant.launch

Kliknite na položku Upraviť existujúcu konfiguráciu MoveIt a vyberte priečinok s balíkom MoveIt.

Pridajte nový plánovací skupinový chápadlo (s článkami a kĺbmi pre chápadlo) a tiež koncový efektor. Moje nastavenia sú na obrázkoch nižšie. Všimnite si, že pre chápadlo si nevyberáte kinematický riešič, nie je to potrebné. Vytvorte balík a prepíšte súbory.

Utekaj

výroba mačiek

príkaz vo vašom pracovnom priestore Catkin.

Dobre, teraz máme rameno s uchopovačom!

Krok 2: Budovanie ruky

Budovanie ramena
Budovanie ramena
Budovanie ramena
Budovanie ramena
Budovanie ramena
Budovanie ramena
Budovanie ramena
Budovanie ramena

Ako som už spomenul, ramenný 3D model vyrába spoločnosť Juergenlessner, ďakujem za úžasnú prácu. Podrobný návod na montáž nájdete, ak kliknete na odkaz.

Musel som však upraviť riadiaci systém. Na ovládanie serv používam Arduino Uno so senzorovým štítom. Kryt snímača veľmi pomáha pri zjednodušovaní zapojenia a tiež uľahčuje poskytovanie externého napájania servomotorov. Na štít senzora používam napájací adaptér 12 V 6A zapojený cez zostupný modul (6 V).

Poznámka k servám. Používam serva MG 996 HR kúpené od Taobao, ale kvalita je skutočne zlá. Je to určite lacný čínsky knock-off. Ten pre lakťový kĺb neposkytoval dostatok krútiaceho momentu a dokonca začal dymiť pri veľkom zaťažení. Servo lakťového kĺbu som musel vymeniť za kvalitnejší výrobca MG 946 HR.

Stručne povedané - kúpte si kvalitné servá. Ak z vašich serva vychádza magický dym, použite lepšie serva. 6V je veľmi bezpečné napätie, nezvyšujte ho. Nezvyšuje točivý moment, ale môže poškodiť serva.

Elektroinštalácia pre servá nasledovne:

základňa 2

rameno2 4 ramenník1 3

lakeť 6

chápadlo 8

zápästie 11

Nebojte sa ho zmeniť, pokiaľ si budete pamätať aj zmenu skici Arduina.

Keď skončíte s hardvérom, pozrime sa na celkový obraz!

Krok 3: Rozhranie RobotCommander MoveIt

Rozhranie MoveIt RobotCommander
Rozhranie MoveIt RobotCommander

Tak čo teraz? Prečo vlastne potrebujete MoveIt a ROS? Nemôžete jednoducho ovládať rameno cez kód Arduino priamo?

Áno môžeš.

Dobre, čo teraz pomocou kódu GUI alebo kódu Python/C ++ na poskytnutie pozície robota ísť? Dokáže to Arduino?

Druh. Na to budete musieť napísať inverzný kinematický riešič, ktorý zaujme pozíciu robota (súradnice prekladu a rotácie v 3D priestore) a skonvertuje ju na správy spoločného uhla pre serva.

Napriek tomu, že to dokážete sami, je to sakra veľa práce. MoveIt a ROS teda poskytujú pekné rozhranie pre riešenie IK (inverzná kinematika), ktoré za vás urobí všetky ťažké trigonometrické zdvíhania.

Krátka odpoveď: Áno, môžete urobiť jednoduchú robotickú ruku, ktorá spustí naprogramovaný náčrt Arduina a prejde z jednej pózy do druhej. Ale ak chcete, aby bol váš robot inteligentnejší a pridal možnosti počítačového videnia, MoveIt a ROS sú tou správnou cestou.

Vytvoril som veľmi zjednodušený diagram, ktorý vysvetľuje, ako funguje rámec MoveIt. V našom prípade to bude ešte jednoduchšie, pretože nemáme spätnú väzbu od našich serv a budeme používať tému /joint_states na poskytnutie ovládača robota uhlom pre serva. Chýba nám iba jeden komponent, ktorým je ovládač robota.

Na čo čakáme? Napíšeme niekoľko ovládačov robotov, aby bol náš robot … viete, lepšie ovládateľný.

Krok 4: Arduino kód pre ovládač robota

Arduino kód pre ovládač robota
Arduino kód pre ovládač robota
Arduino kód pre ovládač robota
Arduino kód pre ovládač robota
Arduino kód pre ovládač robota
Arduino kód pre ovládač robota

V našom prípade bude ovládačom robota Arduino Uno s uzlom ROS s rosseriálom. K tomuto kroku je pripojený kód náčrtu Arduino a je tiež k dispozícii na GitHub.

Uzol ROS bežiaci na Arduino Uno sa v zásade prihlási k téme /JointState publikovanej na počítači so systémom MoveIt a potom prevádza uhly spojov z poľa z radiánov na stupne a prenáša ich na servá pomocou štandardnej knižnice Servo.h.

Toto riešenie je trochu hackerské a nie ako sa robí s priemyselnými robotmi. V ideálnom prípade by ste mali zverejniť trajektóriu pohybu na tému /FollowJointState a potom dostať spätnú väzbu na tému /JointState. V našej náruči však hobby servá nedokážu poskytnúť spätnú väzbu, takže sa priamo prihlásime k téme /JointState, publikovanej uzlom FakeRobotController. V zásade budeme predpokladať, že akékoľvek uhly, ktoré sme prešli k servám, sú vykonávané ideálne.

Ďalšie informácie o tom, ako rosseriál funguje, nájdete v nasledujúcich návodoch

wiki.ros.org/rosserial_arduino/Návody

Po nahraní náčrtu do Arduino Uno ho budete musieť prepojiť so sériovým káblom s počítačom, na ktorom je spustená inštalácia ROS.

Na spustenie celého systému spustite nasledujúce príkazy

roslaunch my_arm_xacro demo. spustenie rviz_tutorial: = pravda

sudo chmod -R 777 /dev /ttyUSB0

rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200

Teraz môžete pomocou interaktívnych značiek v RVIZ presunúť rameno robota do pózy a potom stlačením Plan and Execute, aby sa skutočne presunulo do polohy.

Mágia!

Teraz sme pripravení napísať kód Pythonu pre náš test rampy. Takmer…

Krok 5: (Voliteľné) Generovanie doplnku IKfast

V predvolenom nastavení MoveIt navrhuje použiť kinematický riešič KDL, ktorý v skutočnosti nefunguje s menej ako 6 ramenami DOF. Ak budete tento návod pozorne sledovať, všimnete si, že model ramena v RVIZ nemôže ísť do niektorých pozícií, ktoré by mala konfigurácia ramena podporovať.

Odporúčaným riešením je vytvoriť vlastné riešenie kinematiky pomocou OpenRave. Nie je to také ťažké, ale budete si to musieť vybudovať a závisí to od zdroja alebo použiť kontajner docker, podľa toho, čo uprednostňujete.

Tento postup je veľmi dobre zdokumentovaný v tomto návode. Je potvrdené, že funguje na VM so systémom Ubuntu 16.04 a ROS Kinetic.

Na vygenerovanie riešiteľa som použil nasledujúci príkaz

openrave.py -inverzná databázová databáza --robot = arm.xml --iktype = translation3d --iktests = 1000

a potom bežal

rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp

na generovanie doplnku MoveIt IKfast.

Celý postup je trochu časovo náročný, ale nie veľmi náročný, ak sa budete dôsledne riadiť týmto návodom. Ak máte otázky k tejto časti, kontaktujte ma v komentároch alebo PM.

Krok 6: Test rampy

Test rampy!
Test rampy!
Test rampy!
Test rampy!

Teraz sme pripravení vyskúšať rampový test, ktorý vykonáme pomocou rozhrania ROS MoveIt Python API.

K tomuto kroku je pripojený kód Pythonu a je tiež k dispozícii v úložisku github. Ak nemáte nájazd alebo chcete skúsiť iný test, budete musieť zmeniť polohy robota v kóde. Na to prvé spustenie

rostopic echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback

v termináli, keď už sú spustené RVIZ a MoveIt. Potom presuňte robota s interaktívnymi značkami do požadovanej polohy. V termináli sa zobrazia hodnoty polohy a orientácie. Stačí ich skopírovať do kódu Python.

Vykonajte testovací beh na ploche

rosrun my_arm_xacro pick/pick_2.py

s už spusteným RVIZ a rosseriálnym uzlom.

Zostaňte naladení na tretiu časť článku, kde použijem stereokameru na detekciu objektov a spustím vyberanie a umiestňovanie potrubí pre jednoduché objekty!

Odporúča: