Taula de continguts:
- Pas 1: afegir la pinça
- Pas 2: Construint el braç
- Pas 3: Interfície MoveIt RobotCommander
- Pas 4: Codi Arduino per al controlador de robots
- Pas 5: (Opcional) Generació de connector IKfast
- Pas 6: la prova de rampa
Vídeo: ROS MoveIt Robotic Arm Part 2: Controlador de robots: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
github.com/AIWintermuteAI/ros-moveit-arm.git
A la part anterior de l'article hem creat fitxers URDF i XACRO per al nostre braç robòtic i hem llançat RVIZ per controlar el nostre braç robòtic en un entorn simulat.
Aquesta vegada ho farem amb el veritable braç robòtic! Afegirem la pinça, escriurem un controlador de robot i (opcional) generarem un solucionador de cinemàtica inversa IKfast.
Geronimo!
Pas 1: afegir la pinça
Afegir inicialment era una mica confús al principi, de manera que he saltat aquesta part a l’article anterior. Després de tot, va resultar no ser tan difícil.
Haureu de modificar el fitxer URDF per afegir enllaços i articulacions de pinça.
El fitxer URDF modificat del meu robot s’adjunta a aquest pas. Bàsicament, segueix la mateixa lògica que la part del braç, acabo d'afegir tres enllaços nous (claw_base, claw_r i claw_l) i tres articulacions noves (joint5 és fixa i joint6, joint7 són articulacions revolutes).
Després de modificar el fitxer URDF, també haureu d'actualitzar el paquet generat per MoveIt i el fitxer xacro mitjançant l'assistent de configuració de MoveIt.
Inicieu l'Assistent de configuració amb l'ordre següent
roslaunch moveit_setup_assistant setup_assistant.launch
Feu clic a Edita la configuració existent de MoveIt i trieu la carpeta amb el paquet MoveIt.
Afegiu una nova pinça de grup de planificació (amb enllaços i articulacions per a la pinça) i també un efector final. La meva configuració es troba a les captures de pantalla següents. Fixeu-vos que no trieu el solucionador cinemàtic per a la pinça, no és necessari. Genereu el paquet i sobreescriviu els fitxers.
Correr
fer aments
d'ordres a l'espai de treball de catkin.
Molt bé, ara tenim un braç amb una pinça.
Pas 2: Construint el braç
Com he esmentat abans, el model 3D del braç està fet per Juergenlessner, gràcies per un treball increïble. Podeu trobar les instruccions detallades de muntatge si seguiu l'enllaç.
Vaig haver de modificar el sistema de control. Utilitzo Arduino Uno amb protector de sensor per controlar servos. El blindatge del sensor ajuda molt a simplificar el cablejat i també facilita l’alimentació externa dels servos. Faig servir un adaptador de corrent de 12V 6A connectat a través del mòdul de descens (6V) a Sensor Shield.
Una nota sobre els servos. Utilitzo servos MG 996 HR comprats a Taobao, però la qualitat és realment dolenta. Sens dubte, és un knock-off xinès barat. El de l'articulació del colze no proporcionava prou parell i fins i tot va començar a fumar una vegada sota una forta càrrega. Vaig haver de substituir el servo articulació del colze per MG 946 HR d’un fabricant de millor qualitat.
Llarga història: compreu servos de qualitat. Si surt un fum màgic dels servos, utilitzeu millors servos. El voltatge de 6V és molt segur, no l’augmenteu. No augmentarà el parell, però pot danyar els servos.
Cablejat per servos de la següent manera:
base 2
espatlla2 4 espatlla1 3
colze 6
pinça 8
canell 11
No dubteu a canviar-lo sempre que recordeu de canviar l'esbós d'Arduino.
Un cop hàgiu acabat el maquinari, fem una ullada a la imatge més gran.
Pas 3: Interfície MoveIt RobotCommander
Llavors, què ara? Per què necessiteu MoveIt i ROS de totes maneres? No es pot controlar directament el braç mitjançant el codi Arduino?
Si, tu pots.
D’acord, ara, què hi ha d’utilitzar el codi GUI o el codi Python / C ++ per proporcionar la posició del robot? Ho pot fer Arduino?
Una mena de. Per a això, haureu d’escriure un solucionador de cinemàtica inversa que agafarà una posició del robot (coordenades de translació i rotació en l’espai 3D) i el convertirà en missatges d’angle conjunt per als servos.
Tot i que ho pugueu fer vosaltres mateixos, és una gran feina. Així doncs, MoveIt i ROS ofereixen una bona interfície perquè el solucionador IK (cinemàtica inversa) faci tot el que pugui fer.
Resposta breu: Sí, podeu fer un simple braç robòtic que executarà un esbós Arduino codificat per passar d'una posada a una altra. Però si voleu fer el vostre robot més intel·ligent i afegir funcions de visió per ordinador, MoveIt i ROS són el camí a seguir.
Vaig fer un diagrama molt simplificat que explicava com funciona el framework MoveIt. En el nostre cas, serà encara més senzill, ja que no tenim comentaris dels nostres servos i utilitzarem el tema / joint_states per proporcionar al controlador del robot els angles dels servos. Només ens falta un component que és el controlador del robot.
Què esperem? Escrivim alguns controladors de robots, de manera que el nostre robot seria … ja ho sabeu, més controlable.
Pas 4: Codi Arduino per al controlador de robots
En el nostre cas, Arduino Uno que executi un node ROS amb rosserial serà el controlador del robot. El codi d'esbós d'Arduino s'adjunta a aquest pas i també està disponible a GitHub.
El node ROS que s’executa a Arduino Uno bàsicament es subscriu al tema / JointState publicat a l’ordinador que executa MoveIt i, a continuació, converteix els angles conjunts de la matriu de radians a graus i els passa a servos mitjançant la biblioteca Servo.h estàndard.
Aquesta solució és una mica complicada i no com es fa amb robots industrials. Idealment se suposa que heu de publicar la trajectòria del moviment sobre el tema / FollowJointState i després rebre els comentaris sobre el tema / JointState. Però, al nostre braç, els servis d'afició no poden proporcionar els comentaris, de manera que només ens subscriureem directament al tema / JointState, publicat pel node FakeRobotController. Bàsicament, assumirem que qualsevol angle que passem als servos s'executa de manera ideal.
Per obtenir més informació sobre com funciona el rosserial, podeu consultar els següents tutorials
wiki.ros.org/rosserial_arduino/Tutorials
Després de penjar l'esbós a Arduino Uno, haureu de connectar-lo amb el cable sèrie a l'ordinador que executi la instal·lació de ROS.
Per mostrar tot el sistema, executeu les ordres següents
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
Ara podeu utilitzar marcadors interactius a RVIZ per moure el braç del robot a una posició i, a continuació, premeu Planificar i executar perquè es mogui realment a la posició.
Màgia!
Ara estem preparats per escriure el codi Python per a la nostra prova de rampa. Bé, gairebé …
Pas 5: (Opcional) Generació de connector IKfast
Per defecte, MoveIt suggereix utilitzar el solucionador de cinemàtica KDL, que realment no funciona amb menys de 6 braços DOF. Si seguiu de prop aquest tutorial, notareu que el model de braç a RVIZ no pot anar a algunes postures que haurien de ser compatibles amb la configuració de braç.
La solució recomanada és crear un solucionador de cinemàtica personalitzat mitjançant OpenRave. No és tan difícil, però l’haureu de construir i dependrà de la font o utilitzeu el contenidor d’acoblament, el que preferiu.
El procediment està molt ben documentat en aquest tutorial. Es confirma que funcionarà a màquines virtuals amb Ubuntu 16.04 i ROS Kinetic.
He utilitzat l'ordre següent per generar el solucionador
openrave.py --database inversekinematics --robot = arm.xml --iktype = translation3d --iktests = 1000
i després va córrer
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
per generar el connector MoveIt IKfast.
Tot el procediment requereix una mica de temps, però no és molt difícil si seguiu de prop el tutorial. Si teniu preguntes sobre aquesta part, poseu-vos en contacte amb mi als comentaris o PM.
Pas 6: la prova de rampa
Ara estem preparats per provar la prova de rampa, que executarem amb l'API de MoveIt Python de ROS.
El codi Python s’adjunta a aquest pas i també està disponible al repositori de github. Si no teniu cap rampa o voleu provar una altra prova, haureu de canviar les posicions del robot al codi. Per a aquesta primera execució
ressò rostopic / rviz_moveit_motion_planning_display / robot_interaction_interactive_marker_topic / feedback
al terminal quan ja s’executa RVIZ i MoveIt. A continuació, moveu el robot amb marcadors interactius a la posició desitjada. Els valors d’orientació i posició es mostraran al terminal. Simplement copieu-les al codi Python.
Per executar la prova de rampa
rosrun my_arm_xacro pick / pick_2.py
amb RVIZ i el node rosserial ja en execució.
Estigueu atents a la tercera part de l'article, on faré servir càmera estèreo per a la detecció d'objectes i executaré una canonada de recollida i col·locació d'objectes senzills.
Recomanat:
Controlador robòtic ROS basat en Matlab: 9 passos
Controlador robotitzat ROS basat en Matlab: des de petit, sempre he somiat amb ser Iron Man i encara ho faig. Iron Man és un d'aquests personatges realment possibles i, en poques paraules, aspiro a ser Iron Man algun dia, fins i tot si la gent es riu de mi o diu que és impossible
Braç robòtic amb mòduls Zio Part 3: 4 passos
Braç robòtic amb mòduls Zio Part 3: Aquesta entrada al bloc forma part de la Sèrie Zio Robotics. Introducció Al nostre bloc anterior, vam publicar tutorial de les parts 1 i 2 sobre com controlar un braç robotitzat mitjançant mòduls Zio. La primera part es concentra principalment a controlar automàticament la vostra ungla de robòtica
Braç robòtic amb mòduls Zio Part 2: 11 passos
Braç robòtic amb mòduls Zio Part 2: en el tutorial d’avui utilitzarem els 4 servos i un controlador sense fils PS2 per controlar el braç robòtic. Aquesta entrada al bloc forma part de la sèrie Zio Robotics. Introducció Al nostre bloc anterior vam publicar la primera part. tutorial sobre com controlar un Ar Robotic
Controlar un braç robòtic amb mòduls Zio Part 1: 8 passos
Controlar un braç robòtic amb mòduls Zio Part 1: aquesta entrada al bloc forma part de la sèrie Zio Robotics. Introducció En aquest tutorial, construirem un projecte on utilitzarem els mòduls Zio per controlar el braç robotitzat. Aquest projecte us ensenyarà a fer que la vostra arpa del braç robòtic s’obri i es tanqui. Aquest n
ROS MoveIt Robotic Braç: 4 passos
ROS MoveIt Robotic Braç: Serà una sèrie d'articles sobre com fer un braç robòtic controlat amb ROS (Robotic Operating System) i MoveIt. Si us interessa la robòtica, el ROS és un marc fantàstic que us ajudarà a construir millors robots més ràpidament. Permet tornar a utilitzar