Sommario:
- Passaggio 1: aggiunta della pinza
- Passaggio 2: costruire il braccio
- Passaggio 3: interfaccia MoveIt RobotCommander
- Passaggio 4: codice Arduino per controller robot
- Passaggio 5: (Facoltativo) Generazione del plug-in IKfast
- Passaggio 6: il test della rampa
Video: Braccio robotico ROS MoveIt Parte 2: Controller robot: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
github.com/AIWintermuteAI/ros-moveit-arm.git
Nella parte precedente dell'articolo abbiamo creato file URDF e XACRO per il nostro braccio robotico e lanciato RVIZ per controllare il nostro braccio robotico in un ambiente simulato.
Questa volta lo faremo con il vero braccio robotico! Aggiungeremo la pinza, scriveremo un controller robot e (opzionale) genereremo il risolutore cinematico inverso IKfast.
Geronimo!
Passaggio 1: aggiunta della pinza
L'aggiunta della pinza era un po' confusa all'inizio, quindi ho saltato questa parte nell'articolo precedente. Alla fine si è rivelato non così difficile.
Dovrai modificare il tuo file URDF per aggiungere collegamenti e giunti di presa.
Il file URDF modificato per il mio robot è allegato a questo passaggio. Fondamentalmente segue la stessa logica della parte del braccio, ho appena aggiunto tre nuovi collegamenti (claw_base, claw_r e claw_l) e tre nuovi giunti (joint5 è fisso e joint6, joint7 sono giunti revoluti).
Dopo aver modificato il file URDF, dovrai anche aggiornare il pacchetto generato da MoveIt e il file xacro utilizzando l'assistente di installazione di MoveIt.
Avvia l'assistente di installazione con il seguente comando
roslaunch moveit_setup_assistant setup_assistant.launch
Fare clic su Modifica configurazione MoveIt esistente e scegliere la cartella con il pacchetto MoveIt.
Aggiungi un nuovo gripper del gruppo di pianificazione (con collegamenti e giunti per il gripper) e anche un effettore finale. Le mie impostazioni sono negli screenshot qui sotto. Notare che non si sceglie il risolutore cinematico per la pinza, non è necessario. Genera il pacchetto e sovrascrivi i file.
Correre
fare amento
comando nel tuo spazio di lavoro amento.
Bene, ora abbiamo un braccio con una pinza!
Passaggio 2: costruire il braccio
Come ho detto prima, il modello 3D del braccio è realizzato da Juergenlessner, grazie per l'incredibile lavoro. Le istruzioni di montaggio dettagliate possono essere trovate se si segue il collegamento.
Ho dovuto modificare il sistema di controllo però. Uso Arduino Uno con Sensor shield per controllare i servi. Lo scudo del sensore aiuta molto a semplificare il cablaggio e rende anche facile fornire l'alimentazione esterna ai servi. Uso un adattatore di alimentazione 12V 6A cablato tramite modulo step-down (6V) a Sensor Shield.
Una nota sui servi. Uso i servi MG 996 HR acquistati da Taobao, ma la qualità è davvero pessima. È sicuramente un'imitazione cinese a buon mercato. Quello per l'articolazione del gomito non ha fornito una coppia sufficiente e ha persino iniziato a emettere fumo una volta sotto carico pesante. Ho dovuto sostituire il servo del giunto a gomito con MG 946 HR di un produttore di qualità migliore.
Per farla breve: acquista servi di qualità. Se dai tuoi servi esce fumo magico, usa servi migliori. 6V è una tensione molto sicura, non aumentarla. Non aumenterà la coppia, ma può danneggiare i servi.
Cablaggio per i servi come segue:
base 2
spalla2 4spalla1 3
gomito 6
pinza 8
polso 11
Sentiti libero di cambiarlo purché ti ricordi anche di cambiare lo schizzo di Arduino.
Dopo aver finito con l'hardware, diamo un'occhiata al quadro generale!
Passaggio 3: interfaccia MoveIt RobotCommander
E ora? Perché hai bisogno di MoveIt e ROS comunque? Non puoi semplicemente controllare il braccio tramite il codice Arduino direttamente?
Si, puoi.
Ok, ora che ne dici di usare la GUI o il codice Python/C++ per fornire la posa del robot a cui andare? Arduino può farlo?
Una specie di. Per questo dovrai scrivere un risolutore di cinematica inversa che prenderà una posa del robot (coordinate di rotazione e traslazione nello spazio 3D) e la convertirà in messaggi di angolo di giunzione per i servi.
Nonostante tu possa farlo da solo, è un sacco di lavoro da fare. Quindi, MoveIt e ROS forniscono una bella interfaccia per il risolutore IK (cinematica inversa) per fare tutto il pesante sollevamento trigonometrico per te.
Risposta breve: Sì, puoi fare un semplice braccio robotico che eseguirà uno schizzo Arduino hard-coded per passare da una posa all'altra. Ma se vuoi rendere il tuo robot più intelligente e aggiungere capacità di visione artificiale, MoveIt e ROS sono la strada da percorrere.
Ho realizzato un diagramma molto semplificato che spiega come funziona il framework MoveIt. Nel nostro caso sarà ancora più semplice, dal momento che non abbiamo feedback dai nostri servi e useremo l'argomento /joint_states per fornire al controller del robot gli angoli per i servi. Ci manca solo un componente che è il controller del robot.
Cosa stiamo aspettando? Scriviamo alcuni controller di robot, così il nostro robot sarebbe… sai, più controllabile.
Passaggio 4: codice Arduino per controller robot
Nel nostro caso Arduino Uno che esegue un nodo ROS con rosserial sarà il controller del robot. Il codice dello sketch Arduino è allegato a questo passaggio ed è disponibile anche su GitHub.
Il nodo ROS in esecuzione su Arduino Uno sottoscrive fondamentalmente l'argomento /JointState pubblicato sul computer che esegue MoveIt e quindi converte gli angoli del giunto dall'array da radianti a gradi e li passa ai servi utilizzando la libreria Servo.h standard.
Questa soluzione è un po' ingannevole e non come si fa con i robot industriali. Idealmente dovresti pubblicare la traiettoria del movimento sull'argomento /FollowJointState e quindi ricevere il feedback sull'argomento /JointState. Ma nel nostro braccio i servi dell'hobby non possono fornire il feedback, quindi ci limiteremo a sottoscrivere direttamente l'argomento /JointState, pubblicato dal nodo FakeRobotController. Fondamentalmente assumeremo che qualsiasi angolo passato ai servi venga eseguito idealmente.
Per maggiori informazioni su come funziona il rosserial potete consultare i seguenti tutorial
wiki.ros.org/rosserial_arduino/Tutorials
Dopo aver caricato lo sketch su Arduino Uno, dovrai collegarlo con il cavo seriale al computer che esegue l'installazione del ROS.
Per far apparire l'intero sistema eseguire i seguenti comandi
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
Ora puoi utilizzare i marcatori interattivi in RVIZ per spostare il braccio del robot in una posa e quindi premere Plan ed Esegui affinché si sposti effettivamente nella posizione.
Magia!
Ora siamo pronti per scrivere il codice Python per il nostro test di rampa. Be 'quasi…
Passaggio 5: (Facoltativo) Generazione del plug-in IKfast
Per impostazione predefinita, MoveIt suggerisce di utilizzare il risolutore cinematico KDL, che in realtà non funziona con meno di 6 bracci DOF. Se segui attentamente questo tutorial, noterai che il modello del braccio in RVIZ non può assumere alcune pose che dovrebbero essere supportate dalla configurazione del braccio.
La soluzione consigliata è creare un risolutore cinematico personalizzato utilizzando OpenRave. Non è così difficile, ma dovrai compilarlo e le sue dipendenze dall'origine o utilizzare il contenitore docker, a seconda delle tue preferenze.
La procedura è molto ben documentata in questo tutorial. È confermato che funziona su VM con Ubuntu 16.04 e ROS Kinetic.
Ho usato il seguente comando per generare il risolutore
openrave.py --database inversekinematics --robot=arm.xml --iktype=translation3d --iktests=1000
e poi corse
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp
per generare il plug-in MoveIt IKfast.
L'intera procedura richiede un po' di tempo, ma non è molto difficile se segui attentamente il tutorial. Se hai domande su questa parte, contattami nei commenti o in PM.
Passaggio 6: il test della rampa
Ora siamo pronti per provare il test di rampa, che eseguiremo utilizzando ROS MoveIt Python API.
Il codice Python è allegato a questo passaggio e disponibile anche sul repository github. Se non hai una rampa o vuoi provare un altro test dovrai cambiare le pose del robot nel codice. Per quella prima esecuzione
rostopic echo /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
nel terminale quando RVIZ e MoveIt sono già in esecuzione. Quindi sposta il robot con i marker interattivi nella posizione desiderata. I valori di posizione e orientamento verranno visualizzati nel terminale. Basta copiarli nel codice Python.
Per eseguire il test di rampa
rosrun my_arm_xacro pick/pick_2.py
con RVIZ e nodo rosserial già in esecuzione.
Resta sintonizzato per la terza parte dell'articolo, in cui utilizzerò la telecamera stereo per il rilevamento degli oggetti ed eseguirò la pipeline di prelievo e posizionamento per oggetti semplici!
Consigliato:
Braccio robotico con moduli Zio Parte 3: 4 passaggi
Braccio robotico con moduli Zio Parte 3: questo post del blog fa parte della serie Zio Robotics.Introduzione Nel nostro blog precedente, abbiamo pubblicato tutorial Parte 1 e 2 su come controllare un braccio robotico utilizzando i moduli Zio. La prima parte si è concentrata principalmente sul controllo automatico dell'artiglio del braccio robotico t
Braccio robotico con moduli Zio Parte 2: 11 passaggi
Braccio robotico con moduli Zio Parte 2: Nel tutorial di oggi, utilizzeremo tutti e 4 i servi e un controller wireless PS2 per controllare il braccio robotico. Questo post del blog fa parte della serie Zio Robotics. Introduzione Nel nostro blog precedente, abbiamo pubblicato la parte 1 tutorial su come controllare un Robotic Ar
Braccio robotico ROS MoveIt: 4 passaggi
ROS MoveIt Robotic Arm: Questa sarà una serie di articoli sulla realizzazione di un braccio robotico controllato con ROS (Robotic Operating System) e MoveIt. Se ti piace la robotica, ROS è un ottimo framework che ti aiuterà a costruire robot migliori più velocemente. Ti permette di riutilizzare
COME ASSEMBLARE UN IMPRESSIONANTE BRACCIO ROBOT IN LEGNO (PARTE 3: BRACCIO ROBOT) -- BASATO SUL MICRO: BITN: 8 passaggi
COME ASSEMBLARE UN IMPRESSIONANTE BRACCIO ROBOT IN LEGNO (PART3: BRACCIO ROBOT) -- BASATO SUL MICRO: BITN: Il prossimo processo di installazione si basa sul completamento della modalità di evitamento degli ostacoli. Il processo di installazione nella sezione precedente è lo stesso del processo di installazione nella modalità di tracciamento della linea. Allora diamo un'occhiata alla forma finale di A
Come assemblare un impressionante braccio robotico in legno (Parte 1: Robot per il tracciamento della linea) - Basato sul Micro: Bit: 9 passaggi
Come assemblare un impressionante braccio robotico in legno (Parte 1: Robot per il tracciamento della linea) - Basato sul Micro: Bit: questo ragazzo di legno ha tre forme, è molto diverso e impressionante. Allora entriamoci uno per uno