Cuprins:
- Pasul 1: Adăugarea Gripper-ului
- Pasul 2: Construirea brațului
- Pasul 3: Interfața MoveIt RobotCommander
- Pasul 4: Cod Arduino pentru Robot Controller
- Pasul 5: (Opțional) Generarea pluginului IKfast
- Pasul 6: Testul Rampei
Video: ROS MoveIt Robotic Arm Partea 2: Controler robot: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
github.com/AIWintermuteAI/ros-moveit-arm.git
În partea anterioară a articolului am creat fișiere URDF și XACRO pentru brațul nostru robotizat și am lansat RVIZ pentru a ne controla brațul robotizat într-un mediu simulat.
De data aceasta o vom face cu adevăratul braț robotizat! Vom adăuga dispozitivul de prindere, vom scrie un controler pentru robot și (opțional) vom genera un rezolvător de kinematică inversă IKfast.
Geronimo!
Pasul 1: Adăugarea Gripper-ului
Adăugarea de gripper a fost puțin confuză la început, așa că am sărit această parte în articolul precedent. La urma urmei, s-a dovedit a nu fi atât de dificil.
Va trebui să vă modificați fișierul URDF pentru a adăuga legături de prindere și articulații.
Fișierul URDF modificat pentru robotul meu este atașat la acest pas. Practic, urmează aceeași logică ca și partea brațului, tocmai am adăugat trei legături noi (claw_base, claw_r și claw_l) și trei articulații noi (joint5 este fix, iar joint6, joint7 sunt articulații revolute).
După ce ați modificat fișierul URDF, va trebui, de asemenea, să actualizați pachetul generat de MoveIt și fișierul xacro utilizând asistentul de configurare MoveIt.
Lansați asistentul de configurare cu următoarea comandă
roslaunch moveit_setup_assistant setup_assistant.launch
Faceți clic pe Editați configurația existentă MoveIt și alegeți folderul cu pachetul dvs. MoveIt.
Adăugați un nou dispozitiv de prindere pentru grup (cu legături și articulații pentru prindere) și, de asemenea, un efector final. Setările mele sunt în capturile de ecran de mai jos. Observați că nu alegeți soluția cinematică pentru prindere, nu este necesar. Generați pachetul și suprascrieți fișierele.
Alerga
face pisica
comandă în spațiul dvs. de lucru catkin.
Bine, acum avem un braț cu mâner!
Pasul 2: Construirea brațului
Așa cum am menționat înainte, modelul braț 3D este realizat de Juergenlessner, vă mulțumesc pentru o muncă uimitoare. Instrucțiunile detaliate de asamblare pot fi găsite dacă urmați linkul.
Totuși, a trebuit să modific sistemul de control. Folosesc Arduino Uno cu scut senzor pentru controlul servoarelor. Ecranul senzorului ajută foarte mult la simplificarea cablării și, de asemenea, face mai ușoară furnizarea de energie externă servomotoarelor. Folosesc un adaptor de alimentare 12V 6A conectat prin modulul step-down (6V) la ecranul senzorului.
O notă despre servos. Folosesc servome MG 996 HR cumpărate de la Taobao, dar calitatea este foarte proastă. Este cu siguranță un knock-off chinezesc ieftin. Cel pentru articulația cotului nu a oferit un cuplu suficient și chiar a început să fumege o singură dată sub sarcină grea. A trebuit să înlocuiesc servo articulația cotului cu MG 946 HR de la un producător de calitate mai bună.
Scurtă poveste lungă - cumpărați servo de calitate. Dacă fumul magic iese din servo-urile dvs., utilizați servos mai bune. 6V este o tensiune foarte sigură, nu o creșteți. Nu va crește cuplul, dar poate deteriora servomotoarele.
Cablare pentru servo după cum urmează:
baza 2
umăr2 4 umăr1 3
cotul 6
gripper 8
încheietura mâinii 11
Simțiți-vă liber să o modificați atâta timp cât vă amintiți și să schimbați schița Arduino.
După ce ați terminat cu hardware-ul, să aruncăm o privire asupra imaginii de ansamblu!
Pasul 3: Interfața MoveIt RobotCommander
Si acum ce? De ce ai nevoie oricum de MoveIt și ROS? Nu poți controla direct brațul prin codul Arduino direct?
Da, poti.
Bine, acum ce zici de folosirea codului GUI sau Python / C ++ pentru a furniza poziția robotului? Poate Arduino să facă asta?
Un fel de. Pentru aceasta, va trebui să scrieți un rezolvător de cinematică inversă care va lua o poziție a robotului (coordonate de traducere și rotație în spațiul 3D) și o va converti în mesaje unghiulare comune pentru servome.
În ciuda faptului că o poți face singur, e o muncă dracului de făcut. Deci, MoveIt și ROS oferă o interfață plăcută pentru rezolvatorul IK (cinematică inversă) pentru a face toate ridicările trigonometrice grele pentru dvs.
Răspuns scurt: Da, puteți face un braț robot simplu, care va executa o schiță Arduino codificată pentru a trece de la o poziție la alta. Dar dacă doriți să vă faceți robotul mai inteligent și să adăugați capabilități de viziune pe computer, MoveIt și ROS sunt calea de urmat.
Am făcut o diagramă foarte simplificată, explicând modul în care funcționează cadrul MoveIt. În cazul nostru, va fi și mai simplu, deoarece nu avem feedback de la servo-urile noastre și vom folosi / joint_states topic pentru a oferi controlerului robot unghiurile pentru serv-uri. Ne lipsește doar o componentă care este controlerul robotului.
Ce asteptam? Să scriem niște controlere pentru roboți, astfel încât robotul nostru să fie … să știți, mai controlabil.
Pasul 4: Cod Arduino pentru Robot Controller
În cazul nostru, Arduino Uno care rulează un nod ROS cu rosserial va fi controlerul robotului. La acest pas este atașat codul de schiță Arduino și este disponibil și pe GitHub.
Nodul ROS care rulează pe Arduino Uno se abonează practic la subiectul / JointState publicat pe computerul care rulează MoveIt și apoi convertește unghiurile articulare din matrice de la radiani la grade și le trece la servos folosind biblioteca Servo.h standard.
Această soluție este cam ciudată și nu cum se face cu roboții industriali. În mod ideal ar trebui să publicați traiectoria mișcării pe subiectul / FollowJointState și apoi să primiți feedback-ul despre / subiectul JointState. Dar în brațul nostru, serviciile hobby nu pot oferi feedback, așa că ne vom abona direct la subiectul / JointState, publicat de nodul FakeRobotController. Practic, vom presupune că orice unghiuri pe care le-am trecut către servouri sunt executate în mod ideal.
Pentru mai multe informații despre cum funcționează rosserial, puteți consulta următoarele tutoriale
wiki.ros.org/rosserial_arduino/Tutorials
După ce încărcați schița pe Arduino Uno, va trebui să o conectați cu cablul serial la computerul care rulează instalarea ROS.
Pentru a afișa întregul sistem executați următoarele comenzi
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
Acum puteți utiliza markere interactive în RVIZ pentru a muta brațul robotului într-o poziție și apoi apăsați Plan și Executare pentru ca acesta să se deplaseze efectiv în poziție.
Magie!
Acum suntem gata să scriem codul Python pentru testul nostru de rampă. Ei bine aproape…
Pasul 5: (Opțional) Generarea pluginului IKfast
În mod implicit, MoveIt sugerează utilizarea rezolvătorului cinematic KDL, care nu funcționează cu mai puțin de 6 brațe DOF. Dacă urmăriți îndeaproape acest tutorial, veți observa că modelul brațului din RVIZ nu poate merge la unele ipostaze care ar trebui susținute de configurația brațului.
Soluția recomandată este de a crea un rezolvator cinematic personalizat folosind OpenRave. Nu este atât de dificil, dar va trebui să-l construiți și depinde de sursă sau să utilizați containerul de andocare, oricare preferați.
Procedura este foarte bine documentată în acest tutorial. Este confirmat că funcționează pe VM care rulează Ubuntu 16.04 și ROS Kinetic.
Am folosit următoarea comandă pentru a genera soluția
openrave.py --database inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
și apoi a fugit
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
pentru a genera pluginul MoveIt IKfast.
Întreaga procedură consumă puțin timp, dar nu este foarte dificilă dacă urmezi îndeaproape tutorialul. Dacă aveți întrebări despre această parte, vă rugăm să mă contactați în comentarii sau PM.
Pasul 6: Testul Rampei
Acum suntem gata să încercăm testul de rampă, pe care îl vom executa folosind API-ul ROS MoveIt Python.
Codul Python este atașat la acest pas și este disponibil și în depozitul github. Dacă nu aveți o rampă sau doriți să încercați un alt test, va trebui să schimbați poziția robotului în cod. Pentru prima executare
ecou rostopic / rviz_moveit_motion_planning_display / robot_interaction_interactive_marker_topic / feedback
în terminal atunci când rulează deja RVIZ și MoveIt. Apoi mutați robotul cu markere interactive în poziția dorită. Valorile poziției și orientării vor fi afișate în terminal. Doar copiați-le în codul Python.
Pentru a executa testul de rampă
rosrun my_arm_xacro pick / pick_2.py
cu RVIZ și nodul rosserial deja rulează.
Rămâneți la curent cu cea de-a treia parte a articolului, unde voi folosi camera stereo pentru detectarea obiectelor și voi executa pipeline pick și place pentru obiecte simple!
Recomandat:
Joc Robotic Arm - Controler Smartphone: 6 pași
Joc Robotic Arm - Controler Smartphone: Bună ziua! Iată un joc distractiv de vară: Brațul robotizat controlat de Smartphone !! După cum puteți vedea în videoclip, puteți controla brațul cu niște joystick-uri pe smartphone-ul dvs. De asemenea, puteți salva un model, că robotul se va reproduce într-o buclă, pentru a
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM: 4 pași
Xbox 360 ROBOTIC ARM [ARDUINO]: AXIOM ARM:
ROS MoveIt Robotic Arm: 4 pași
ROS MoveIt Robotic Arm: Acesta va fi o serie de articole despre realizarea unui braț robot controlat cu ROS (Robotic Operating System) și MoveIt. Dacă vă place robotica, ROS este un cadru excelent care vă va ajuta să construiți roboți mai buni mai repede. Vă permite să reutilizați
Controler de încărcare MPPT Partea 1: 4 pași
MPPT Charge Controller Partea 1: Deoarece știm că energia solară va fi viitorul tuturor electronice, dar folosind energia solară eficient avem nevoie de circuite puțin complicate, așa cum știm despre încărcătorul solar tradițional bazat pe PWM, este ușor de construit, dar și de cost redus. dar risipește o mulțime de
Controler de rețea IoT. Partea 9: IoT, Home Automation: 10 pași (cu imagini)
Controler de rețea IoT. Partea 9: IoT, Home Automation: Declinare de responsabilitate CITIȚI ACEST PRIM: Acest instructabil detaliază un proiect care folosește rețeaua de alimentare (în acest caz, 240VAC RMS din Marea Britanie), în timp ce s-a acordat o atenție deosebită utilizării practicii sigure și a principiilor bune de proiectare, există întotdeauna un risc de potențial letal. alege