Satura rādītājs:

ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi
ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi

Video: ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi

Video: ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Jūlijs
Anonim
Image
Image

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

Iepriekšējā raksta daļā mēs esam izveidojuši URDF un XACRO failus mūsu robotizētajai rokai un palaiduši RVIZ, lai kontrolētu mūsu robotu roku simulētā vidē.

Šoreiz mēs to darīsim ar īsto robotu roku! Mēs pievienosim satvērēju, uzrakstīsim robota kontrolieri un (pēc izvēles) ģenerēsim IKfast apgrieztās kinemātikas risinātāju.

Geronimo!

1. darbība: satvērēja pievienošana

Gripper pievienošana
Gripper pievienošana
Gripper pievienošana
Gripper pievienošana
Gripper pievienošana
Gripper pievienošana

Sākotnēji satvērēja pievienošana bija nedaudz mulsinoša, tāpēc es izlaidu šo daļu iepriekšējā rakstā. Galu galā tas izrādījās ne tik grūti.

Lai pievienotu satvērējus un savienojumus, jums būs jāmaina URDF fails.

Šim solim ir pievienots mana robota modificētais URDF fails. Būtībā tas notiek pēc tādas pašas loģikas kā rokas daļa, es tikko pievienoju trīs jaunas saites (claw_base, claw_r un claw_l) un trīs jaunas locītavas (šuve5 ir fiksēta, un savienojums6, savienojums7 ir apgriezienu savienojumi).

Pēc URDF faila mainīšanas jums būs jāatjaunina arī MoveIt ģenerētā pakotne un xacro fails, izmantojot MoveIt iestatīšanas palīgu.

Palaidiet iestatīšanas palīgu ar šādu komandu

roslaunch moveit_setup_assistant setup_assistant.launch

Noklikšķiniet uz Rediģēt esošo MoveIt konfigurāciju un izvēlieties mapi ar savu MoveIt pakotni.

Pievienojiet jaunu plānošanas grupas satvērēju (ar satvērējiem un savienojumiem satvērējam) un arī gala efektoru. Mani iestatījumi ir redzami zemāk esošajos ekrānuzņēmumos. Ņemiet vērā, ka jūs neizvēlaties satvērējam kinemātikas risinātāju, tas nav nepieciešams. Ģenerējiet paketi un pārrakstiet failus.

Skrien

kaķēns

komandu savā catkin darbvietā.

Labi, tagad mums ir roka ar satvērēju!

2. solis: rokas veidošana

Rokas veidošana
Rokas veidošana
Rokas veidošana
Rokas veidošana
Rokas veidošana
Rokas veidošana
Rokas veidošana
Rokas veidošana

Kā jau minēju, 3D modeļa roku izgatavoja Juergenlessner, paldies par apbrīnojamo darbu. Detalizētas montāžas instrukcijas var atrast, ja sekojat saitei.

Tomēr man bija jāmaina vadības sistēma. Servo vadīšanai es izmantoju Arduino Uno ar sensora vairogu. Sensora vairogs palīdz daudz vienkāršot elektroinstalāciju, kā arī ļauj viegli nodrošināt ārējo barošanu servos. Es izmantoju 12V 6A strāvas adapteri, kas savienots caur pazemināšanas moduli (6V) ar sensora vairogu.

Piezīme par servos. Es izmantoju MG 996 HR servos, kas nopirkti no Taobao, bet kvalitāte ir patiešām slikta. Tas noteikti ir lēts ķīniešu sitiens. Tas, kas paredzēts elkoņa locītavai, nenodrošināja pietiekamu griezes momentu un pat sāka dūmot vienreiz pie lielas slodzes. Man nācās nomainīt elkoņa locītavas servo pret labākas kvalitātes ražotāja MG 946 HR.

Īsumā - pērciet kvalitatīvus servos. Ja no jūsu servo izplūst burvju dūmi, izmantojiet labākus servos. 6V ir ļoti drošs spriegums, nepalieliniet to. Tas nepalielinās griezes momentu, bet var sabojāt servos.

Elektroinstalācijas vadi šādi:

bāze 2

plecs2 4 plecs1 3

elkonis 6

satvērējs 8

plaukstas locītava 11

Jūtieties brīvi to mainīt, ja vien atceraties arī mainīt Arduino skici.

Kad esat pabeidzis aparatūru, apskatīsim plašāku ainu!

3. darbība: MoveIt RobotCommander saskarne

MoveIt RobotCommander saskarne
MoveIt RobotCommander saskarne

Tātad, ko tagad? Kāpēc jums tomēr ir nepieciešami MoveIt un ROS? Vai jūs nevarat vienkārši kontrolēt roku, izmantojot Arduino kodu?

Jā tu vari.

Labi, tagad kā būtu izmantot GUI vai Python/C ++ kodu, lai nodrošinātu robota pozu, uz kuru doties? Vai Arduino to var izdarīt?

Kaut kā. Lai to izdarītu, jums būs jāraksta apgriezts kinemātikas risinātājs, kas uzņems robota pozu (tulkošanas un rotācijas koordinātas 3D telpā) un jāpārvērš par servo kopīgiem leņķa ziņojumiem.

Neskatoties uz to, ka varat to izdarīt pats, tas ir ellīgi daudz darba. Tātad, MoveIt un ROS nodrošina jauku saskarni IK (apgrieztās kinemātikas) risinātājam, lai veiktu visu smago trigonometrisko pacelšanu jūsu vietā.

Īsa atbilde: Jā, jūs varat izveidot vienkāršu robotu roku, kas izpildīs kodētu Arduino skici, lai pārietu no vienas pozas uz otru. Bet, ja vēlaties padarīt savu robotu gudrāku un pievienot datora redzes iespējas, MoveIt un ROS ir īstais ceļš.

Es izveidoju ļoti vienkāršotu diagrammu, kurā paskaidroju, kā darbojas MoveIt ietvars. Mūsu gadījumā tas būs vēl vienkāršāk, jo mums nav atsauksmes no mūsu servos un izmantojam tēmu /joint_states, lai robotu kontrolierim nodrošinātu servo leņķus. Mums trūkst tikai viena komponenta, kas ir robota kontrolieris.

Ko mēs gaidām? Uzrakstīsim dažus robotu kontrolierus, lai mūsu robots būtu… jūs zināt, vairāk kontrolējams.

4. solis: robota kontroliera Arduino kods

Arduino kods robota kontrolierim
Arduino kods robota kontrolierim
Arduino kods robota kontrolierim
Arduino kods robota kontrolierim
Arduino kods robota kontrolierim
Arduino kods robota kontrolierim

Mūsu gadījumā robota kontrolieris būs Arduino Uno, kas vada ROS mezglu ar rosserial. Arduino skices kods ir pievienots šim solim un pieejams arī vietnē GitHub.

ROS mezgls, kas darbojas Arduino Uno, pamatā abonē /JointState tēmu, kas publicēta datorā, kurā darbojas MoveIt, un pēc tam pārveido savienojuma leņķus no masīva no radiāniem uz grādiem un nodod tos servos, izmantojot standarta Servo.h bibliotēku.

Šis risinājums ir mazliet viltīgs, nevis tas, kā tas tiek darīts ar rūpnieciskajiem robotiem. Ideālā gadījumā jums vajadzētu publicēt kustības trajektoriju par /FollowJointState tēmu un pēc tam saņemt atsauksmes par /JointState tēmu. Bet mūsu rokās hobija servos nevar sniegt atgriezenisko saiti, tāpēc mēs vienkārši abonēsim /JointState tēmu, ko publicējis FakeRobotController mezgls. Būtībā mēs pieņemsim, ka neatkarīgi no leņķiem, kurus mēs pārlaidām servos, tiek izpildīti ideāli.

Lai iegūtu papildinformāciju par to, kā darbojas rosserial, skatiet šīs apmācības

wiki.ros.org/rosserial_arduino/Tutorials

Pēc skices augšupielādes Arduino Uno jums tā būs jāsavieno ar sērijas kabeli datoram, kurā darbojas jūsu ROS instalācija.

Lai parādītu visu sistēmu, izpildiet šādas komandas

roslaunch my_arm_xacro demo.launch rviz_tutorial: = true

sudo chmod -R 777 /dev /ttyUSB0

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

Tagad jūs varat izmantot RVIZ interaktīvos marķierus, lai pārvietotu robota roku uz pozu un pēc tam nospiediet Plānot un Izpildīt, lai tā faktiski pārvietotos šajā pozīcijā.

Maģija!

Tagad mēs esam gatavi rakstīt Python kodu mūsu rampas testam. Nu, gandrīz…

5. darbība: (pēc izvēles) IKfast spraudņa ģenerēšana

Pēc noklusējuma MoveIt iesaka izmantot KDL kinemātikas risinātāju, kas īsti nedarbojas ar mazāk nekā 6 DOF grupām. Ja jūs rūpīgi sekojat šai apmācībai, tad pamanīsit, ka rokas modelis RVIZ nevar pāriet uz dažām pozām, kuras būtu jāatbalsta roku konfigurācijai.

Ieteicamais risinājums ir izveidot pielāgotu kinemātikas risinātāju, izmantojot OpenRave. Tas nav tik grūti, taču jums tas būs jāveido, un tas ir atkarīgs no avota vai jāizmanto dokstacijas konteiners, atkarībā no tā, kuru vēlaties.

Procedūra ir ļoti labi dokumentēta šajā apmācībā. Ir apstiprināts, ka tas darbojas VM, kurā darbojas Ubuntu 16.04 un ROS Kinetic.

Risinātāja ģenerēšanai izmantoju šādu komandu

openrave.py -datu bāzes inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000

un tad skrēja

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

lai izveidotu MoveIt IKfast spraudni.

Visa procedūra ir nedaudz laikietilpīga, bet nav ļoti grūta, ja rūpīgi sekojat apmācībai. Ja jums ir jautājumi par šo daļu, lūdzu, sazinieties ar mani komentāros vai PM.

6. darbība: perona pārbaude

Rampas tests!
Rampas tests!
Rampas tests!
Rampas tests!

Tagad mēs esam gatavi izmēģināt rampas pārbaudi, kuru mēs veiksim, izmantojot ROS MoveIt Python API.

Python kods ir pievienots šim solim un pieejams arī github repozitorijā. Ja jums nav rampas vai vēlaties izmēģināt citu testu, jums būs jāmaina robota pozas kodā. Par pirmo izpildi

rostopic echo/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback

terminālī, kad jau darbojas RVIZ un MoveIt. Pēc tam pārvietojiet robotu ar interaktīvajiem marķieriem vēlamajā pozīcijā. Terminālī tiks parādītas pozīcijas un orientācijas vērtības. Vienkārši nokopējiet tos Python kodā.

Lai veiktu rampas testa braucienu

rosrun my_arm_xacro pick/pick_2.py

ar RVIZ un rosserial mezglu jau darbojas.

Sekojiet līdzi raksta trešajai daļai, kur es izmantošu stereokameru objektu noteikšanai un izpildīšu pick and place cauruļvadu vienkāršiem objektiem!

Ieteicams: