Migration Notes

Iron to Jazzy

ur_robot_driver

keep_alive_count -> robot_receive_timeout

Doing real-time control with a robot requires the control pc to conform to certain timing constraints. For this keep_alive_count was used to estimate the tolerance that was given to the ROS controller in terms of multiples of 20 ms. Now the timeout is directly configured using the robot_receive_timeout parameter of the hardware interface.

ros2_control xacro tag moved to driver package

The description package no longer adds the ros2_control tag to the robot’s URDF. This is done in the driver now. Therefore, there is a urdf folder containing the macro for generating a ros2_control tag and a ready-to-use xacro file for a UR robot with a ros2_control tag.

If you want to create your own controlled robot, you should mimic that structure, as done e.g. in the custom_workcell_tutorial.

robot_description is now distributed by the robot_state_publisher

The robot_description isn’t propagated to all interested parties as a parameter. Instead, only the robot_state_publisher is provided with the parameter, republishing it on the robot_description topic.

Therefore, there is a new launchfile ur_rsp.launch.py which takes care about loading the description and starting the robot_state_publisher. If you create a description that needs other parameters than the packaged one, you can write your own rsp launch file and pass that as description_launchfile argument to ur_control.launch.py.

Enforce absolute paths in launchfiles

All launchfiles now expect an absolute path for files that should be used to alter the launch process (e.g. description file, controllers file). Before it was expecting e.g. a description_package and a description_file argument with a relative path to the package.

The default files have not been changed, so unless you specified your custom package / file combinations, you will need to update that to an absolute path.

Absolute paths can still be generated dynamically using a package + relative path structure inside other launchfiles or by using ros2 pkg prefix on the command line. For example, you can do

$ ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur20 robot_ip:=192.168.56.101 \
  kinematics_params_file:=$(ros2 pkg prefix my_robot_cell_control)/share/my_robot_cell_control/config/my_robot_calibration.yaml

ur_description

ros2_control xacro tag moved to driver package

The description package no longer adds the ros2_control tag to the robot’s URDF. This is done in the driver / simulation repos now. The description package still provides macros for the system-independent parts such as joint configurations and an example using mock_hardware with the robot.

Enforce absolute paths in launchfiles

The view_ur.launch.py launchfile now expects an absolute path for the description file and RViz config file. Before it was expecting a description_package and a description_file argument with a relative path to the package. This way, users can provide their own description file and / or RViz config without the need to replicate the complete package structure.

Absolute paths can still be generated dynamically using a package + relative path structure inside other launchfiles or by using ros2 pkg prefix on the command line.

ur_simulation_gz

Updated argument name for tf_prefix

To have coherency between the driver and the GZ simulation, the launch argument to use tf_prefix has been changed from prefix to tf_prefix. Moreover, differently from the driver, using such argument for this package requires the user to also provide their own controllers file, as explained in tf_prefix for GZ.

Update arguments for MoveIt!

As part of the restructuring of the ur_moveit_config pkg, all the arguments that were previously passed to ur_moveit.launch.py (e.g. description_file, safety_limits or prefix) have been removed, in favor of the only moveit_launch_file argument.

This is due to the underlying assumption for the specified launch file to be part of a custom moveit_config pkg that already contains the correct references to a custom description pkg and related parameters.

In particular, the option of specifying a tf_prefix for the ur_moveit_config has been removed, hence if it is needed in a GZ simulation with MoveIt!, it is expected to be handled by the user through a proper definition for it in a custom moveit_config.

Enforce absolute paths in launchfiles

All launchfiles now expect an absolute path for files that should be used to alter the launch process (e.g. description file, controllers file). Before it was expecting e.g. a description_package and a description_file argument with a relative path to the package.

The default files have not been changed, so unless you specified your custom package / file combinations, you won’t need to update that to an absolute path.

Absolute paths can still be generated dynamically using a package + relative path structure inside other launchfiles or by using ros2 pkg prefix on the command line. For example, you can do

$ ros2 launch ur_gz_simulation ur_sim_control.launch.py ur_type:=ur20 \
  controllers_file:=$(ros2 pkg prefix my_robot_cell_control)/share/my_robot_cell_control/config/ros2_controllers.yaml