In this repository we test multiple grippers with the same manipulator.
If you want to add a new gripper, you start can following the instructions in Adding New Grippers document.
Once you have a new gripper ready, you can add it to the manipulator by following the steps discussed in this document.
Combine the description files of the components you need to use into a single xacro file. For example, if you want to add a new gripper to the UR10 manipulator, you can create a new xacro file that includes both the UR10 and the new gripper descriptions.
We recommend creating a new xacro file in the grasping_description/xacro folder for each new combination of manipulator and gripper. This way you can keep the original component descriptions unchanged and easily switch between different combinations.
In this project we follow this and use the following naming convention for the combined descriptions:
<manipulator>-<gripper>.urdf.xacro
Currently we have,
- UR10 Manipulator Descriptions
- TM12s Manipulator Descriptions
- LD250 & TM12x Mobile Manipulator Descriptions
Once you have the combined description ready, you need to update/create the MoveIt configuration to use it.
This allows you to define self-collision and other properties for the new combination of manipulator and gripper.
You can create a new MoveIt configuration package for the new combination, or you can update an existing one if it already exists.
Recommended approach is to use the Moveit Setup Assistant to create a new MoveIt configuration package for the new combination. This way you can easily define the necessary properties and configurations for the new setup.
To create a new MoveIt configuration package using the MoveIt Setup Assistant, follow these steps:
- Build your workspace and source the setup file to make sure all your packages are available:
colcon build- Open the MoveIt Setup Assistant by running the following command in your terminal:
source install/setup.bash
ros2 launch moveit_setup_assistant setup_assistant.launch.py- Follow the instructions here to complete the setup.
Recommended naming convention for the MoveIt configuration packages is:
<manipulator>_<gripper>_moveit_config
Currently we have,
- UR10 Manipulator MoveIt Configuration
- TM12s Manipulator MoveIt Configuration
- LD250 & TM12x Mobile Manipulator MoveIt Configuration
Use the demonstration launch files to test the new setup. You can create a new launch file for the new combination, or you can update an existing one if it already exists.
If the MoveIt Setup Assistant generated only fake-hardware oriented file, you might have to update ur.ros2_control.xacro, ur.urdf.xacro and other files to match.
For fake-hardware demo support, prefer a single ros2_control owner in the generated MoveIt package. For the UR10 + soft-two-finger setup, the clean pattern is to disable the embedded UR ros2_control tag in the demo wrapper and let the generated ur.ros2_control.xacro provide one local fake GenericSystem for the combined arm+gripper model.
Finally, you need to update the launch files to use the new MoveIt configuration, combined description and hardware.
Recommended appraoch is to create the hardware_with_moveit.launch.py inside the newly created moveit config package as this allows you to keep this unique to correct hardware combination.
Currently we have,
To create a new launch file, you can copy an existing one and modify it to use the new MoveIt configuration and the combined description.
Once you have updated the launch files, you can test the new setup by launching the corresponding launch file and verifying that everything is working as expected.
For this repository, the recommended split is:
- MoveIt owns arm planning and, when desired, arm trajectory execution.
- The gripper remains in the robot description and SRDF so collision checking and reachability reflect the real combined tool.
- Gripper actuation stays external through the standard
/gripper_commandaction unless you specifically need synchronized arm+gripper trajectories.
This keeps task logic simple: external code can plan with MoveIt, execute arm motion, and call gripper actions at grasp-specific phases without forcing the gripper behavior into MoveIt's controller model.
Currently we support following systems
To test the gripper action, you can use the following commands:
source install/setup.bash
ros2 action send_goal /gripper_command control_msgs/action/GripperCommand "{command: {position: 0.09, max_effort: 0.0}}"source install/setup.bash
ros2 action send_goal /gripper_command control_msgs/action/GripperCommand "{command: {position: 0.0, max_effort: 5.0}}"