
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59


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



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




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

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



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


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:
Matlab balstīts ROS robotu kontrolieris: 9 soļi

Matlab balstīts ROS robotu kontrolieris: Kopš bērnības es vienmēr esmu sapņojis būt Dzelzs vīrs un joprojām to daru. Dzelzs vīrs ir viens no tiem varoņiem, kas ir reāli iespējams, un vienkārši sakot, es vēlos kādreiz kļūt par dzelzs vīru, pat ja cilvēki par mani smejas vai saka, ka tas nav iespējams
Robotiskā roka ar Zio moduļiem 3. daļa: 4 soļi

Robotiskā roka ar Zio moduļiem 3. daļa: Šis emuāra ziņojums ir daļa no Zio Robotics sērijas. Ievads Iepriekšējā emuārā mēs ievietojām 1. un 2. daļas pamācību par to, kā vadīt robotu roku, izmantojot Zio moduļus. Pirmā daļa galvenokārt koncentrējās uz jūsu robotizētā rokas naga automātisku vadību
Robotiskā roka ar Zio moduļiem 2. daļa: 11 soļi

Robotiskā roka ar Zio moduļiem, 2. daļa: Šodienas apmācībā mēs izmantosim visus 4 servus un PS2 bezvadu kontrolieri, lai kontrolētu robotu roku. Šis emuāra ziņojums ir daļa no Zio Robotics sērijas. Ievads Iepriekšējā emuārā mēs ievietojām 1. daļu apmācība par to, kā kontrolēt robotu
ROS MoveIt robotu roka: 4 soļi

ROS MoveIt robotizētā roka: šī būs rakstu sērija par robotizētas rokas izveidošanu, izmantojot ROS (robotu operētājsistēmu) un MoveIt. Ja jūs domājat par robotiku, ROS ir lieliska sistēma, kas palīdzēs ātrāk izveidot labākus robotus. Tas ļauj atkārtoti izmantot
KĀ MONTĒT IMPRESĪVU KOKA ROBOTA ROKU (3. DAĻA: ROBOTA ROKA) - PAMATOJOTIES uz MIKRO: BITN: 8 soļi

KĀ MONTĒT IMPRESĪVU KOKA ROBOTA ROKU (3. DAĻA: ROBOTA ROKA) - PAMATOJOTIES MIKRO: BITN: Nākamais instalēšanas process ir balstīts uz izvairīšanās šķēršļu režīma pabeigšanu. Iepriekšējā sadaļā instalēšanas process ir tāds pats kā instalēšanas process līniju izsekošanas režīmā. Tad apskatīsim galīgo A formu