ROS2 industrial manipulation setup
In deze module leer je hoe je een robotarm kunt besturen met behulp van ROS2. We gebruiken de UFactory xarm6 robotarm in combinatie met een vacuum grijper.
We beginnen met het verkennen van de virtuele omgeving
ros2 launch manipulation view_environment.launch.py
Let op: Soms start de setup_assistant niet goed op. Dit is een bekend probleem dat je als volgt kunt oplossen, doe dit pas als het probleem zich voordoet:
cd ~
wget http://snapshots.ros.org/jazzy/2025-05-23/ubuntu/pool/main/r/ros-jazzy-rviz-common/ros-jazzy-rviz-common_14.1.11-1noble.20250520.201719_amd64.deb
sudo dpkg -i ros-jazzy-rviz-common_14.1.11-1noble.20250520.201719_amd64.deb
Opdracht 1
In deze opdracht ga je een nieuwe MoveIt configuratie aanmaken voor de robotarm.
Voordat we de robot kunnen besturen, moeten we een aantal configuratie bestanden aanmaken met behulp van de MoveIt Setup Assistant. Deze bestanden bevatten informatie over de robot, de omgeving en de bewegingen die de robot kan maken.
https://moveit.picknik.ai/main/doc/examples/setup_assistant/setup_assistant_tutorial.html
Je kunt een nieuwe configuratie aanmaken met het volgende commando:
ros2 launch moveit_setup_assistant setup_assistant.launch.py
Vervolgens kies je Create New MoveIt Configuration Package en selecteer je het urdf-bestand van de robot:
/home/student/ros2_industrial_ws/src/ROS2_industrial/4_manipulation/manipulation/urdf/environment.urdf.xacro
Klik op de knop “Load Files” in de MoveIt Setup Assistant interface. Nu wordt het urdf-bestand van de robot ingeladen en zie je aan de linkerkant het robot-model.
Let op: Als het robot-model niet verschijnt, controleer dan of het pad naar het URDF-bestand correct is en of er geen fouten in het URDF-bestand staan. Raadpleeg de terminal voor foutmeldingen en probeer het bestand opnieuw te laden.
Rechts staan de verschillende onderdelen van de configuratie die je kunt aanpassen. Voor deze workshop is het voldoende om alleen de volgende onderdelen aan te passen:
Self-Collisions:
Lees de “Optimize Self-Collision Checking” instructies (zie MoveIt documentatie)
Klik op “Generate Collision Matrix”
Bestudeer de gegenereerde matrix door op de verschillende items te klikken; let op welke robotdelen elkaar kunnen raken en controleer of de matrix overeenkomt met je verwachtingen over mogelijke botsingen.
Bestudeer de gegenereerde matrix door op de verschillende items te klikken
Virtual Joints (optioneel):
Voeg een virtual joint toe tussen de “world” en de “base_link” van de robot (alleen nodig als de robot niet fysiek aan de wereld is bevestigd, bijvoorbeeld bij mobiele robots), gebruik de Add Virtual Joint knop
Voeg een virtual joint toe tussen de “world” en de “base_link” van de robot, gebruik de Add Virtual Joint knop
Kies als type “fixed”
Planning Groups:
Maak een nieuwe planning group aan met de “Add Group” knop
Kies als type “Joint Model Group”
Geef de groep een naam, bijvoorbeeld “xarm6”
Kies voor Kinematic Solver: “kdl_kinematics_plugin/KDLKinematicsPlugin” (controleer de exacte naam met
ros2 pkg list | grep kdl_kinematics_pluginen pas aan indien nodig, bijvoorbeeld “kdl_kinematics_plugin/KDLKinematicsPlugin” of “kdl_kinematics_plugin/KDLKinematicsPlugin”)Kies voor Group Default Planner: “RRTConnect”
RRTConnect is aanbevolen omdat het een snelle en robuuste planner is voor robotarmen met veel vrijheidsgraden, zoals de xarm6, en goed werkt voor het plannen van complexe bewegingstrajecten.
Voer “Add Kin. Chain” uit
Selecteer de “base_link” als Start Link
Selecteer de “vacuum_gripper1_suction_cup” als End Link
Klik op “Save”
Robot Poses:
Maak een nieuwe 3 poses aan met de Pose Names “Home”, “Left”, “Right” aan door de “Add Pose” knop
“Home”: De standaard uitgangspositie van de robotarm, waarbij alle gewrichten in een neutrale stand staan zodat de arm compact is en geen onderdelen elkaar raken.
“Left”: Een positie waarbij de robotarm naar links is uitgestrekt, bijvoorbeeld om een object aan de linkerkant van het werkgebied te bereiken.
“Right”: Een positie waarbij de robotarm naar rechts is uitgestrekt, bijvoorbeeld om een object aan de rechterkant van het werkgebied te bereiken.
Stel de joint waarden in voor elke pose door de sliders te gebruiken zodat de arm de gewenste positie aanneemt.
Stel de joint waarden in voor elke pose door de sliders te gebruiken
Klik op “Save”
End Effectors:
Dit onderdeel wordt gebruikt om de grijper (end effector) te definiëren, bijvoorbeeld als je geavanceerde grijperfunctionaliteit wilt toevoegen.
Voor deze workshop is het niet strikt noodzakelijk, maar als je wilt leren hoe je een end effector definieert, raadpleeg dan de MoveIt End Effectors documentatie.
Hier kun je bijvoorbeeld de grijper koppelen aan een planning group en aangeven welke link als end effector wordt gebruikt.
Passive Joints:
Geen actie vereist; deze robot heeft geen passive joints
ros2_control URDF Modifications:
Doe niets, deze robot heeft geen ros2_control componenten
ROS 2 Controllers:
Kies “Auto Add JointTrajectoryController Controllers For Each Planning Group”
MoveIt Controllers:
Kies “Auto Add MoveItSimpleControllerManager For Each ROS2 Controller”
Deze optie genereert automatisch controller-configuraties voor elke ROS2 controller, waardoor je handmatige instellingen kunt overslaan en de kans op fouten wordt verminderd.
Kies “Auto Add MoveItSimpleControllerManager For Each ROS2 Controller”
Perception:
Doe niets, we gebruiken geen perceptie in deze workshop
Launch Files:
Zorg ervoor dat alle Launch Files zijn geselecteerd
Author Information:
Vul je naam en e-mailadres in
Configuration Files:
Selecteer Configuration Save Path:
/home/student/ros2_industrial_ws/src
* Klik op "Generate Package"
* Sluit de MoveIt Setup Assistant af
Je hebt nu een nieuwe MoveIt configuratie aangemaakt. Deze bevindt zich in de volgende directory:
/home/student/ros2_industrial_ws/src/workshop_moveit_config
Alvorens de nieuwe configuratie te gebruiken, moet je de de package bouwen met colcon build en velvolgens de omgeving opnieuw sourcen:
cd ~/ros2_industrial_ws
colcon build --symlink-install
source install/setup.bash
Je kunt de configuratie bewerken met het volgende commando:
ros2 launch workshop_moveit_config setup_assistant.launch.py (dit werkt helaas niet altijd)
Voor de volgende opdrachten gebruiken we een al voorbereide MoveIt configuratie.
Je kunt deze configuartie bewerken met het volgende commando:
ros2 launch manipulation_moveit_config setup_assistant.launch.py
Aandachtspunten:
De MoveIt configuratie is gebaseerd op de urdf.xacro file in de manipulation package
De MoveIt configuratie is gebaseerd op de planning group “arm” die de kinematic chain van “base_link” tot “link_eef” bevat
Pas in de confugratie alleen de volgende onderdelen aan:
Self-Collisions
Configuration Files, zorg ervoor dat alleen het volgende bestand geselecteerd zijn:
config/manipulation_environment.srdf. Let op: De andere bestanden zijn niet correct geconfigureerd en kunnen problemen veroorzaken.
Bestudeer de “Robot Poses” in de setup assistant. Deze poses worden gebruikt in de opdrachten. Voeg eventueel extra “eigen” pose toe. De poses worden opgeslagen in het bestand:
config/manipulation_environment.srdf
van de manipulation package. Bestudeer dit bestand, je kunt hier ook handmatig poses aan toevoegen.