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