This repository contains description files and meshes for Universal Robots manipulators.
| ROS2 Distro | Branch | Build status | Released packages |
|---|---|---|---|
| Galactic | galactic |
ur_description | |
| Humble | ros2 |
ur_description | |
| Rolling | ros2 |
ur_description |
Note that for ROS2 Foxy the description is in the driver's repository. Please do not clone this repository into a Foxy workspace.
The most relevant files are:
urdf/ur_macro.xacro- macro file with UR-manipulator description. This file is usually included into external projects to visualize and configure UR manipulators properly. An example how to use this macro is inurdf/ur.urdf.xacrofile.urdf/ur.ros2_control.xacro- definition of manipulator's joints and interfaces forros2_controlframework.
To visualize the robot install this repository to you workspace and execute the following:
ros2 launch ur_description view_ur.launch.py ur_type:=ur5e
To test other descriptions change the ur_type argument.
This package uses one description for all robots. The different robot variants are configured using four configuration files. These files can also be changed for further customizing a description.
Basically, the description can be modified using configuration values stored in four files:
config/urXX/default_kinematics.yaml- This contains the calibration values as they can be extracted from the robot. Changing these values with the one extracted from a real robot will result in a description matching the real robot exactly (w.r.t thetool0frame). It is highly recommended to use matching kinematic values in real-world applications.config/urXX/joint_limits.yaml- If you'd like to further restrict the robot's joint limits, these limits can be modified there.config/urXX/physical_parameters.yaml- Everything regarding physics simulation parameters (e.g. inertia poses and values) can be tuned hereconfig/urXX/visual_parameters.yaml- Some users change certain visual aspects, e.g. replacing the cap on the wrist_3_link. This config file specifies which meshes (both, visual and collision) should be used.
The four configuration files have to be passed to ur_macro.urdf (more specific to the macro
defined in that file) which is done inside the ur.urdf.macro. Contents of the files are parsed
inside ur_common.xacro.
Arguments that have to be passed to the main ur.urdf.xacro file are:
- kinematics_params - Filename to the
default_kinematics.yaml(or equivalent specific kinematics) file - joint_limit_params - Filename to the
joint_limits.yamlfile - physical_params - Filename to the
physical_parameters.yamlfile - visual_params - Filename to the
visual_params.yamlfile
The launchfile launch/view_ur.launch.py abstracts these four parameters to one ur_type argument
which will basically replace the urXX part of the paths as shown in the picture above.
In real-world applications you will most probably have a more complex description consisting of more objects than just the robot. It is recommended to create a separate ROS package containing this particular description. Inside this description you could also store your robot-specific kinematics parameters file.
As mentioned above, see the urdf/ur.urdf.xacro file as an example to integrate a UR robot into
your scene description. Basically, you could create a copy of that file and extend it with the
modifications from your specific scene.