Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 3.3.2
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version jazzy
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Robert Wilbrandt
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the Dashboard client documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ros2_control for any control statements. Therefore, it can be used with all position-based controllers available in ros2_control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver. See Operation Modes for details.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

3.3.2 (2025-06-10)

  • Remove unnecessary arguments. (backport of #1389) (#1390)
  • Contributors: mergify[bot]

3.3.1 (2025-05-28)

  • [force mode controller] Fix the task frame orientation (backport of #1379) (#1381)
  • Contributors: mergify[bot]

3.3.0 (2025-05-20)

  • Add support for UR15 (#1358)
  • [CI] Check links using lychee instead of a custom script (#1355)
  • Make check_starting_point of test_move launch files configurable (#1354)
  • Add troubleshooting section about handling ABI breaks (#1350)
  • Only append to start_modes in prepare_switch (#1344)
  • tool_contact_test: Check result status directly (#1345)
  • Contributors: Felix Exner

3.2.1 (2025-04-11)

  • Disable enforcing command limits (#1342)
  • Contributors: Felix Exner

3.2.0 (2025-04-10)

  • Added controller to enable and disable tool contact (#940)
  • Start executing passthrough trajectories earlier than all points are transferred. (#1313)
  • Support PolyScopeX robots (#1318)
  • Add support for UR7e and UR12e (#1320)
  • Use UrDriverConfig struct to initialize UrDriver (#1328)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314)
  • Fix links to forward command controllers (#1303)
  • Contributors: Felix Exner, URJala

3.1.1 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (#1287)
  • Update message documentation URLs (#1292)
  • Contributors: Felix Exner

3.1.0 (2025-03-05)

  • Port robot_state_helper to ROS2 (#933)
  • Fix crashes on shutting down (#1270)
  • Fix formatting (#1262)
  • Move some documentation to client_library (#1245)
  • Contributors: Felix Durchdewald, Felix Exner

3.0.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (#1238)
  • fix sphinx doc link in ur_robot_driver (#1240)
  • Disable pose broadcaster on mock hardware (#1229)
  • Add information about which driver features dont work with mock hardware (#1227)
  • Add instructions for enabling necessary services and remote control (#1224)
  • Contributors: Felix Exner, Rune Søe-Knudsen, URJala

3.0.1 (2024-12-30)

  • Remove unused include (#1220)
  • improve docs around usage of extracted calibration info (#1214)
  • Contributors: Bence Magyar, Carter Sifferman

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 4.0.2
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version main
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Robert Wilbrandt
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the Dashboard client documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ros2_control for any control statements. Therefore, it can be used with all position-based controllers available in ros2_control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver. See Operation Modes for details.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

4.0.2 (2025-06-13)

  • Remove unnecessary arguments. (#1389)
  • Contributors: Dr. Denis

4.0.1 (2025-05-28)

  • [force mode controller] Fix the task frame orientation (#1379)
  • Replace ament_target_dependencies calls (#1373)
  • Update feature list (#1372)
  • Contributors: Felix Exner

4.0.0 (2025-05-20)

  • Add support for UR15 (#1358)
  • [CI] Check links using lychee instead of a custom script (#1355)
  • Make check_starting_point of test_move launch files configurable (#1354)
  • Add troubleshooting section about handling ABI breaks (#1350)
  • Only append to start_modes in prepare_switch (#1344)
  • tool_contact_test: Check result status directly (#1345)
  • Contributors: Felix Exner

3.2.1 (2025-04-11)

  • Disable enforcing command limits (#1342)
  • Contributors: Felix Exner

3.2.0 (2025-04-10)

  • Added controller to enable and disable tool contact (#940)
  • Start executing passthrough trajectories earlier than all points are transferred. (#1313)
  • Support PolyScopeX robots (#1318)
  • Add support for UR7e and UR12e (#1320)
  • Use UrDriverConfig struct to initialize UrDriver (#1328)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314)
  • Fix links to forward command controllers (#1303)
  • Contributors: Felix Exner, URJala

3.1.1 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (#1287)
  • Update message documentation URLs (#1292)
  • Contributors: Felix Exner

3.1.0 (2025-03-05)

  • Port robot_state_helper to ROS2 (#933)
  • Fix crashes on shutting down (#1270)
  • Fix formatting (#1262)
  • Move some documentation to client_library (#1245)
  • Contributors: Felix Durchdewald, Felix Exner

3.0.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (#1238)
  • fix sphinx doc link in ur_robot_driver (#1240)
  • Disable pose broadcaster on mock hardware (#1229)
  • Add information about which driver features dont work with mock hardware (#1227)
  • Add instructions for enabling necessary services and remote control (#1224)
  • Contributors: Felix Exner, Rune Søe-Knudsen, URJala

3.0.1 (2024-12-30)

  • Remove unused include (#1220)
  • improve docs around usage of extracted calibration info (#1214)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 4.0.2
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version main
Last Updated 2025-06-13
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Robert Wilbrandt
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the Dashboard client documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ros2_control for any control statements. Therefore, it can be used with all position-based controllers available in ros2_control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver. See Operation Modes for details.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

4.0.2 (2025-06-13)

  • Remove unnecessary arguments. (#1389)
  • Contributors: Dr. Denis

4.0.1 (2025-05-28)

  • [force mode controller] Fix the task frame orientation (#1379)
  • Replace ament_target_dependencies calls (#1373)
  • Update feature list (#1372)
  • Contributors: Felix Exner

4.0.0 (2025-05-20)

  • Add support for UR15 (#1358)
  • [CI] Check links using lychee instead of a custom script (#1355)
  • Make check_starting_point of test_move launch files configurable (#1354)
  • Add troubleshooting section about handling ABI breaks (#1350)
  • Only append to start_modes in prepare_switch (#1344)
  • tool_contact_test: Check result status directly (#1345)
  • Contributors: Felix Exner

3.2.1 (2025-04-11)

  • Disable enforcing command limits (#1342)
  • Contributors: Felix Exner

3.2.0 (2025-04-10)

  • Added controller to enable and disable tool contact (#940)
  • Start executing passthrough trajectories earlier than all points are transferred. (#1313)
  • Support PolyScopeX robots (#1318)
  • Add support for UR7e and UR12e (#1320)
  • Use UrDriverConfig struct to initialize UrDriver (#1328)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314)
  • Fix links to forward command controllers (#1303)
  • Contributors: Felix Exner, URJala

3.1.1 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (#1287)
  • Update message documentation URLs (#1292)
  • Contributors: Felix Exner

3.1.0 (2025-03-05)

  • Port robot_state_helper to ROS2 (#933)
  • Fix crashes on shutting down (#1270)
  • Fix formatting (#1262)
  • Move some documentation to client_library (#1245)
  • Contributors: Felix Durchdewald, Felix Exner

3.0.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (#1238)
  • fix sphinx doc link in ur_robot_driver (#1240)
  • Disable pose broadcaster on mock hardware (#1229)
  • Add information about which driver features dont work with mock hardware (#1227)
  • Add instructions for enabling necessary services and remote control (#1224)
  • Contributors: Felix Exner, Rune Søe-Knudsen, URJala

3.0.1 (2024-12-30)

  • Remove unused include (#1220)
  • improve docs around usage of extracted calibration info (#1214)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.1.2
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version galactic
Last Updated 2022-10-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Denis Stogl
  • Felix Exner
  • Tristan Schnell

Authors

  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.1.2 (2022-07-27)

  • Silence a compilation warning (#425) (#427)
  • Fix dependencies for galactic (#392)
  • Contributors: Felix Exner, Robert Wilbrandt

2.1.1 (2022-05-05)

2.1.0 (2022-05-03)

  • Updated package maintainers (#360)
  • Add resource files from ROS World. (#226)
  • Add sphinx documentation (#340)
  • Update license to BSD-3-Clause (#277)
  • Update ROS_INTERFACE.md to current driver (#335)
  • Fix hardware interface names in error output (#329)
  • Added controller stopper node (#309)
  • Correct link to calibration extraction (#310)
  • Start the tool communication script if the flag is set (#267)
  • Change driver constructor and change calibration check (#282)
  • Use GPIO tag from URDF in driver. (#224)
  • Separate control node (#281)
  • Add missing dependency on angles and update formatting for linters. (#283)
  • Do not print an error output if writing is not possible (#266)
  • Update features.md (#250)
  • Tool communication (#218)
  • Payload service (#238)
  • Import transformation of force-torque into tcp frame from ROS1 driver (https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/src/hardware_interface.cpp). (#237)
  • Make reading and writing work when hardware is disconnected (#233)
  • Add missing command and state interfaces to get everything working with the fake hardware and add some comment into xacro file to be clearer. (#221)
  • Decrease the rate of async tasks. (#223)
  • Change robot type. (#220)
  • Driver to headless. (#217)
  • Test execution tests (#216)
  • Integration tests improvement (#206)
  • Set start modes to empty. Avoid position ctrl loop on start. (#211)
  • Add resend program service and enable headless mode (#198)
  • Implement "choices" for robot_type param (#204)
  • Calibration extraction package (#186)
  • Add breaking api changes from ros2_control to hardware_interface (#189)
  • Fix prepare and perform switch operation (#191)
  • Update CI configuration to support galactic and rolling (#142)
  • Dockerize ursim with driver in docker compose (#144)
  • Enabling velocity mode (#146)
  • Moved registering publisher and service to on_active (#151)
  • Converted io_test and switch_on_test to ROS2 (#124)
  • Added loghandler to handle log messages from the Client Library with … (#126)
  • Removed dashboard client from hardware interface
  • [WIP] Updated feature list (#102)
  • Moved Async check out of script running check (#112)
  • Fix gpio controller (#103)
  • Fixed speed slider service call

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.0.2
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version foxy
Last Updated 2023-04-17
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Marvin Große Besselmann
  • Lovro Ivanov
  • Denis Stogl
  • Andy Zelenak

Authors

  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.0.2 (2022-12-07)

2.0.1 (2022-08-01)

  • added ur_bringup to test_depend of ur_robot_driver (#454)
  • Contributors: Felix Exner

2.0.0 (2022-06-20)

  • Updated package dependencies (#399)
  • Foxy controller stopper (#324)
  • Backport: Change driver constructor and change calibration check (#282) (#302)
  • Moved registering publisher and service to on_active (#151)
  • Converted io_test and switch_on_test to ROS2 (#124)
  • Added loghandler to handle log messages from the Client Library with … (#126)
  • Removed dashboard client from hardware interface
  • [WIP] Updated feature list (#102)
  • Moved Async check out of script running check (#112)
  • Fix gpio controller (#103)
  • Fixed speed slider service call (#100)
  • Adding missing backslash and only setting workdir once (#108)
  • Added dockerfile for the driver (#105)
  • Using official Universal Robot Client Library (#101)
  • Reintegrating missing ur_client_library dependency since the break the building process (#97)
  • Fix readme hardware setup (#91)
  • Fix move to home bug (#92)
  • Using modern python
  • Some intermediate commit
  • Remove obsolete and unused files and packages. (#80)
  • Review CI by correcting the configurations (#71)
  • Add support for gpios, update MoveIt and ros2_control launching (#66)
  • Quickfix against move home bug
  • Added missing initialization
  • Use GitHub Actions, use pre-commit formatting (#56)
  • Put dashboard services into corresponding namespace
  • Start dashboard client from within the hardware interface
  • Added try catch blocks for service calls
  • Removed repeated declaration of timeout parameter which lead to connection crash
  • Removed static service name in which all auto generated services where mapped
  • Removed unused variable
  • Fixed clang-format issue
  • Removed all robot status stuff
  • Exchanged hardcoded value for RobotState msgs enum
  • Removed currently unused controller state variables
  • Added placeholder for industrial_robot_status_interface
  • Fixed clang issues
  • Added checks for internal robot state machine
  • Only load speed scaling interface
  • Changed state interface to combined speed scaling factor
  • Added missing formatting in hardware interface
  • Initial version of the speed_scaling_state_controller Controller is base on the current joint_state_controller of ros2 control
  • Fix clang tidy in multiple pkgs.
  • Clang tidy fix.
  • Update force torque state controller.
  • Prepare for testing.
  • Fix decision breaker for position control. Make decision effect instantaneous.
  • Use only position interface.
  • Update hardware interface for ROS2 (#8)
  • Update the dashboard client for ROS2 (#5)
  • Hardware interface framework (#3)
  • Add XML schema to all package.xml files Better enable ament_xmllint to check validity.
  • Silence ament_lint_cmake errors
  • Update packaging for ROS2
  • Update package.xml files so ros2 pkg list shows all pkgs
  • Clean out ur_robot_driver for initial ROS2 compilation
  • Compile ur_dashboard_msgs for ROS2
  • Delete all launch/config files with no UR5 relation
  • Initial work toward compiling ur_robot_driver

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 2.3.12
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version iron
Last Updated 2024-11-14
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Denis Stogl
  • Felix Exner
  • Robert Wilbrandt

Authors

  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.3.12 (2024-11-14)

  • Use pose_broadcaster to publish the TCP pose (#1108) (#1182) Adds a broadcaster for the robot's TCP pose.
  • Contributors: Felix Exner

2.3.11 (2024-10-28)

  • Allow setting the analog output domain when setting an analog output (backport of #1123)
  • Fix component lifecycle (backport of #1098)
  • Service to get software version of robot (#964) (#1128)
  • Assure the description is loaded as string (#1107)
  • Fix for forward_velocity_controller test (backport of #1076)
  • Contributors: Felix Exner (fexner), mergify[bot], Vincenzo Di Pentima, Jacob Larsen

2.3.10 (2024-08-09)

  • Fix passing launch_dashobard_client launch argument (backport of #1057)
  • Updated the UR family photo on the readme (backport of #1064)
  • Contributors: Felix Exner, Rune Søe-Knudsen

2.3.9 (2024-07-01)

  • Add sleep between controller stopper's controller queries (backport of #1038)
  • Contributors: Felix Exner

2.3.8 (2024-06-17)

  • Remove extra spaces from start_ursim statement in tests ( backport of #1010)
  • Use robot_receive_timeout instead of keepalive_count (#1003)
  • Added kinematics_params_file to launch arguments (#1006)
  • Contributors: Felix Exner, Vincenzo Di Pentima

2.3.7 (2024-05-16)

  • Remove dependency to docker.io (backport of #985)
  • Simplify tests (backport #849)
  • Reduce number of controller_spawners to 3 (backport #919)
  • Update installation instructions for source build (backport #967)
  • Fix multi-line strings in DeclareLaunchArgument (backport #948)
  • "use_fake_hardware" for UR20 (backport #950)
  • Contributors: Christoph Fröhlich, Matthijs van der Burgh, Vincenzo Di Pentima

2.3.6 (2024-04-08)

  • Add UR30 support (#949)
  • Move communication setup to on_configure instead of on_activate (#937)
  • Contributors: Felix Exner, Vincenzo Di Pentima, Robert Wilbrandt

2.3.5 (2023-12-06)

  • Move installation instructions to subpage (#885) (cherry picked from commit 202a70c5f8f67c9e3ee2723084c0170a5a1050ae) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>
  • Add backward_ros to driver (#872) (#879) (cherry picked from commit 21b7aa38e27382a206066111833c0a62377aa589) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>
  • Port configuration (#835) (#848) (cherry picked from commit f16ae2af7eb63f8d1c74c7e873347d4f32cacf4f) Co-authored-by: Felix Durchdewald <<145785497+fdurchdewald@users.noreply.github.com>>
  • Update link to MoveIt! documentation (#846) (cherry picked from commit 3311cf849578ae38408088555c79397932c03cc4) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>
  • Contributors: mergify[bot]

2.3.4 (2023-09-21)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 2.8.1
License BSD-3-Clause
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
VCS Type git
VCS Version humble
Last Updated 2025-06-11
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Denis Stogl
  • Marvin Große Besselmann
  • Lovro Ivanov
  • Andy Zelenak
  • Vincenzo Di Pentima
  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the ur_controllers package. See it’s documentation for details. Note: Speed scaling support will only be available using the controllers from ur_controllers

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

controller_stopper

A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true the stopped controllers are restarted. This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.

CHANGELOG

2.8.1 (2025-06-11)

  • [force mode controller] Fix the task frame orientation (backport #1379) (#1380)
  • Update feature list (backport of #1372) (#1374)
  • Contributors: mergify[bot]

2.8.0 (2025-05-20)

  • [CI] Check links using lychee instead of a custom script (backport #1355) (#1361)
  • Add support for launching a UR15 robot (#1359)
  • tool_contact_test: Check result status directly (backport of #1345) (#1353)
  • Added controller to enable and disable tool contact (backport of #940) (#1337)
  • Contributors: Felix Exner, mergify[bot]

2.7.0 (2025-04-10)

  • Start executing passthrough trajectories earlier than all points are transferred. (backport of #1313) (#1335)
  • Support PolyScopeX robots (backport of #1318) (#1333)
  • Add support for UR7e and UR12e (#1332)
  • Use UrDriverConfig struct to initialize UrDriver (backport of #1328) (#1330)
  • Fix passthrough controller to not read non-existing state_interfaces (#1314) (#1316)
  • Contributors: mergify[bot]

2.6.0 (2025-03-17)

  • Update transformForceTorque to handle whether it is a cb3 or an e-Series robot (backport of #1287) (#1299)
  • Port robot_state_helper to ROS2 (backport of #933) (#1286)
  • Fix crashes on shutting down (#1270) (#1271)
  • Remove build warnings for Humble (#1234)
  • Auto-update pre-commit hooks (backport #1260) (#1261)
  • Fix doc links (#1247)
  • Remove urdf folder (#1257)
  • Contributors: Felix Exner, mergify[bot]

2.5.2 (2025-01-21)

  • Check quaternions for equal dot_product instead of comparing their components individually (backport #1238) (#1243)
  • fix sphinx doc link in ur_robot_driver (#1240) (#1242)
  • Update pre-commit the same as on the main branch (#1232)
  • Disable pose broadcaster on mock hardware (backport of #1229) (#1230)
  • Remove unused include (backport of #1220) Co-authored-by: Bence Magyar <<bence.magyar.robotics@gmail.com>>
  • Contributors: Felix Exner, mergify[bot]

2.5.1 (2024-12-21)

2.5.0 (2024-12-18)

  • Freedrive Controller (#1114) (#1211)
  • Add force mode controller (#1049) (#1193)
  • Update package maintainers (backport of #1203)
  • Forward trajectory controller (backport of #944)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package symbol

ur_robot_driver package from ur_robot_driver repo

ur_calibration ur_dashboard_msgs ur_robot_driver

ROS Distro
melodic

Package Summary

Tags No category tags.
Version 2.4.1
License Apache-2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git
VCS Type git
VCS Version master
Last Updated 2025-05-28
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the scaled_trajectory_controller package. See its documentation for details. Note: Speed scaling support will only be available using the controllers from scaled_trajectory_controller

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

CHANGELOG

2.4.1 (2025-05-20)

  • Fix minimum required polyscope version in the output (#751) When we raised the version requirements to 3.14/5.9 we didn't update the output in the ROS driver.
  • Contributors: Felix Exner

2.4.0 (2025-05-13)

  • Add support for UR15 (#747)
  • Contributors: Felix Exner

2.3.0 (2025-04-17)

  • Add ROS param (robot_receive_timeout) to control reverse interface timeouts (#745)
  • Add launchfiles for ur7e and ur12e (#743)
  • Add support for ur7e and ur12e (#742)
  • Contributors: Felix Exner, cambel

2.2.0 (2025-02-24)

  • Allow setting the speed slider fraction to 0.0 from service (#738)
  • Update package maintainers (#735)
  • Parse the rx and tx idle chars as floats (#729)
  • Add a set_analog_output service (#714)
  • set receive timeout after connecting the client (#596)
  • Implemented get version service (#695)
  • Specify velocities for trajectory forwarding test (#721)
  • Updated the UR family photo on the readme (#713)
  • Contributors: Felix Exner, Rune Søe-Knudsen, URJala, steffen-roperobotics

2.1.5 (2024-06-17)

2.1.4 (2024-04-08)

  • Added support for UR30 (#688)
  • Added arg to enable/disable launch of ursim (#679)
  • Contributors: Vincenzo Di Pentima, mahp

2.1.3 (2023-12-18)

  • Added support for UR20 (#659)
  • Update documentation (#655)
  • Bump required cmake version to fix the CMake warning about CMP0048
  • Change initializer list ordering to match declaration in header file
  • Implemented spline interpolation in joint space (#543)
  • Use dedicated build for noetic main (#640)
  • fix typo and use ros logging
  • Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, RobertWilbrandt, Simon Schmeisser

2.1.2 (2023-01-23)

2.1.1 (2023-01-23)

  • Move controller_stopper to ur_robot_driver Since a standalone package with that name was declined during the release process, we decided to move the controller_stopper package over to the driver.
  • Update minimal required polyscope version in docs
  • Contributors: Felix Exner

2.1.0 (2022-12-08)

  • delete ros_control.urscript (#593) We've been using the script from the library for a while now

  • Use the RobotMode message inside the SetMode action (#381) This way we can make use of the predefined constants inside the RobotMode message.

  • Make several members of hw_interface atomic, for thread safety (#448) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>

  • Updated transformForceTorque to handle wheter it is a cb3 or an e-Series robot (#566)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/example_rviz.launch
  • launch/ur10_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur10_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur10.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur10/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur10e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur10e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur10e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur10e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur12e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur12e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur12e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur12e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur15_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur15_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur15.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur15/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur16e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur16e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur16e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur16e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur20_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur20_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur20.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur20/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur30_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur30_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur30.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur30/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur3_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur3_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur3.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur3/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur3e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur3e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur3e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur3e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur5_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur5_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur5.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur5/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur5e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur5e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur5e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur5e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur7e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur7e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur7e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur7e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur_common.launch
      • debug [default: false] — Debug flag that will get passed on to ur_control.launch
      • use_tool_communication — On e-Series robots tool communication can be enabled with this argument
      • controller_config_file — Config file used for defining the ROS-Control controllers.
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller robot_status_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • robot_description_file — Robot description launch file.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
      • use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
      • robot_receive_timeout [default: 0.02] — Timeout for the robot to respond to a command. This is used to prevent the robot from hanging if it does not respond to a command. Most be a multiple of 0.02
  • launch/ur_control.launch
      • debug [default: false] — If set to true, will start the driver inside gdb
      • use_tool_communication — On e-Series robots tool communication can be enabled with this argument
      • controller_config_file — Config file used for defining the ROS-Control controllers.
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. Pass the same config file that is passed to the robot_description.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller force_torque_sensor_controller robot_status_controller]
      • stopped_controllers [default: joint_group_vel_controller forward_joint_traj_controller forward_cartesian_traj_controller]
      • urscript_file [default: $(find ur_client_library)/resources/external_control.urscript] — Path to URScript that will be sent to the robot and that forms the main control program.
      • rtde_output_recipe_file [default: $(find ur_robot_driver)/resources/rtde_output_recipe.txt] — Recipe file used for the RTDE-outputs. Only change this if you know what you're doing.
      • rtde_input_recipe_file [default: $(find ur_robot_driver)/resources/rtde_input_recipe.txt] — Recipe file used for the RTDE-inputs. Only change this if you know what you're doing.
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • servoj_gain [default: 2000] — Specify gain for servoing to position in joint space. A higher gain can sharpen the trajectory.
      • servoj_lookahead_time [default: 0.03] — Specify lookahead time for servoing to position in joint space. A longer lookahead time can smooth the trajectory.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
      • use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
      • robot_receive_timeout [default: 0.02] — Timeout for the robot to respond to a command. This is used to prevent the robot from hanging if it does not respond to a command. Most be a multiple of 0.02

Messages

No message files found.

Services

No service files found

Recent questions tagged ur_robot_driver at Robotics Stack Exchange

Package symbol

ur_robot_driver package from ur_robot_driver repo

ur_calibration ur_dashboard_msgs ur_robot_driver

ROS Distro
noetic

Package Summary

Tags No category tags.
Version 2.4.1
License Apache-2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git
VCS Type git
VCS Version master
Last Updated 2025-05-28
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The new driver for Universal Robots UR3, UR5 and UR10 robots with CB3 controllers and the e-series.

Additional Links

Maintainers

  • Felix Exner
  • Rune Søe-Knudsen
  • Universal Robots A/S

Authors

  • Thomas Timm Andersen
  • Simon Rasmussen
  • Felix Exner
  • Lea Steffen
  • Tristan Schnell

ur_robot_driver

This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.

ROS-API

The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.

Technical details

The following image shows a very coarse overview of the driver’s architecture.

Architecture overview

Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.

Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.

To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.

The URScript that will be running on the robot is requested by the External Control program node from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file to select a different program than the default one that will be sent as a response to a program request.

Custom script snippets can be sent to the robot on a topic basis. By default, they will interrupt other programs (such as the one controlling the robot). For a certain subset of functions, it is however possible to send them as secondary programs. See UR documentation on details.
Note to e-Series users: The robot won’t accept script code from a remote source unless the robot is put into remote_control-mode. However, if put into remote_control-mode, the program containing the External Control program node can’t be started from the panel. For this purpose, please use the dashboard services to load, start and stop the main program running on the robot. See the ROS-API documentation for details on the dashboard services.

For using the tool communication interface on e-Series robots, a socat script is prepared to forward the robot’s tool communication interface to a local device on the ROS PC. See the tool communication setup guide for details.

This driver is using ROS-Control for any control statements. Therefore, it can be used with all position-based controllers available in ROS-Control. However, we recommend using the controllers from the scaled_trajectory_controller package. See its documentation for details. Note: Speed scaling support will only be available using the controllers from scaled_trajectory_controller

A note about modes

The term mode is used in different meanings inside this driver.

Remote control mode

On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.

The remote control mode is needed for many aspects of this driver such as

  • headless mode (see below)
  • sending script code to the robot
  • many dashboard functionalities such as
    • restarting the robot after protective / EM-Stop
    • powering on the robot and do brake release
    • loading and starting programs
  • the set_mode action, as it uses the dashboard calls mentioned above

Headless mode

Inside this driver, there’s the headless mode, which can be either enabled or not. When the headless mode is activated, required script code for external control will be sent to the robot directly when the driver starts. As soon as other script code is sent to the robot either by sending it directly through this driver or by pressing any motion-related button on the teach pendant, the script will be overwritten by this action and has to be restarted by using the resend_robot_program service. If this is necessary, you will see the output Connection to robot dropped, waiting for new connection. from the driver. Note that pressing “play” on the TP won’t start the external control again, but whatever program is currently loaded on the controller. This mode doesn’t require the “External Control” URCap being installed on the robot as the program is sent to the robot directly. However, we recommend to use the non-headless mode and leverage the set_mode action to start program execution without the teach pendant. The headless mode might be removed in future releases.

Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.

CHANGELOG

2.4.1 (2025-05-20)

  • Fix minimum required polyscope version in the output (#751) When we raised the version requirements to 3.14/5.9 we didn't update the output in the ROS driver.
  • Contributors: Felix Exner

2.4.0 (2025-05-13)

  • Add support for UR15 (#747)
  • Contributors: Felix Exner

2.3.0 (2025-04-17)

  • Add ROS param (robot_receive_timeout) to control reverse interface timeouts (#745)
  • Add launchfiles for ur7e and ur12e (#743)
  • Add support for ur7e and ur12e (#742)
  • Contributors: Felix Exner, cambel

2.2.0 (2025-02-24)

  • Allow setting the speed slider fraction to 0.0 from service (#738)
  • Update package maintainers (#735)
  • Parse the rx and tx idle chars as floats (#729)
  • Add a set_analog_output service (#714)
  • set receive timeout after connecting the client (#596)
  • Implemented get version service (#695)
  • Specify velocities for trajectory forwarding test (#721)
  • Updated the UR family photo on the readme (#713)
  • Contributors: Felix Exner, Rune Søe-Knudsen, URJala, steffen-roperobotics

2.1.5 (2024-06-17)

2.1.4 (2024-04-08)

  • Added support for UR30 (#688)
  • Added arg to enable/disable launch of ursim (#679)
  • Contributors: Vincenzo Di Pentima, mahp

2.1.3 (2023-12-18)

  • Added support for UR20 (#659)
  • Update documentation (#655)
  • Bump required cmake version to fix the CMake warning about CMP0048
  • Change initializer list ordering to match declaration in header file
  • Implemented spline interpolation in joint space (#543)
  • Use dedicated build for noetic main (#640)
  • fix typo and use ros logging
  • Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, RobertWilbrandt, Simon Schmeisser

2.1.2 (2023-01-23)

2.1.1 (2023-01-23)

  • Move controller_stopper to ur_robot_driver Since a standalone package with that name was declined during the release process, we decided to move the controller_stopper package over to the driver.
  • Update minimal required polyscope version in docs
  • Contributors: Felix Exner

2.1.0 (2022-12-08)

  • delete ros_control.urscript (#593) We've been using the script from the library for a while now

  • Use the RobotMode message inside the SetMode action (#381) This way we can make use of the predefined constants inside the RobotMode message.

  • Make several members of hw_interface atomic, for thread safety (#448) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>

  • Updated transformForceTorque to handle wheter it is a cb3 or an e-Series robot (#566)

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/example_rviz.launch
  • launch/ur10_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur10_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur10.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur10/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur10e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur10e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur10e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur10e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur12e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur12e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur12e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur12e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur15_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur15_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur15.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur15/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur16e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur16e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur16e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur16e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur20_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur20_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur20.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur20/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur30_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur30_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur30.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur30/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur3_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur3_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur3.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur3/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur3e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur3e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur3e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur3e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur5_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur5_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur5.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur5/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur5e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur5e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur5e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur5e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur7e_bringup.launch
      • debug [default: false] — Debug flag that will get passed on to ur_common.launch
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • controller_config_file [default: $(find ur_robot_driver)/config/ur7e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
      • robot_description_file [default: $(find ur_description)/launch/load_ur7e.launch] — Robot description launch file.
      • kinematics_config [default: $(find ur_description)/config/ur7e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
  • launch/ur_common.launch
      • debug [default: false] — Debug flag that will get passed on to ur_control.launch
      • use_tool_communication — On e-Series robots tool communication can be enabled with this argument
      • controller_config_file — Config file used for defining the ROS-Control controllers.
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller robot_status_controller] — Controllers that are activated by default.
      • stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • robot_description_file — Robot description launch file.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
      • use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
      • robot_receive_timeout [default: 0.02] — Timeout for the robot to respond to a command. This is used to prevent the robot from hanging if it does not respond to a command. Most be a multiple of 0.02
  • launch/ur_control.launch
      • debug [default: false] — If set to true, will start the driver inside gdb
      • use_tool_communication — On e-Series robots tool communication can be enabled with this argument
      • controller_config_file — Config file used for defining the ROS-Control controllers.
      • robot_ip — IP address by which the robot can be reached.
      • reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
      • reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
      • script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
      • trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
      • script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
      • kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. Pass the same config file that is passed to the robot_description.
      • tf_prefix [default: ] — tf_prefix used for the robot.
      • controllers [default: joint_state_controller scaled_pos_joint_traj_controller force_torque_sensor_controller robot_status_controller]
      • stopped_controllers [default: joint_group_vel_controller forward_joint_traj_controller forward_cartesian_traj_controller]
      • urscript_file [default: $(find ur_client_library)/resources/external_control.urscript] — Path to URScript that will be sent to the robot and that forms the main control program.
      • rtde_output_recipe_file [default: $(find ur_robot_driver)/resources/rtde_output_recipe.txt] — Recipe file used for the RTDE-outputs. Only change this if you know what you're doing.
      • rtde_input_recipe_file [default: $(find ur_robot_driver)/resources/rtde_input_recipe.txt] — Recipe file used for the RTDE-inputs. Only change this if you know what you're doing.
      • tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
      • tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
      • tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
      • headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
      • servoj_gain [default: 2000] — Specify gain for servoing to position in joint space. A higher gain can sharpen the trajectory.
      • servoj_lookahead_time [default: 0.03] — Specify lookahead time for servoing to position in joint space. A longer lookahead time can smooth the trajectory.
      • ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
      • use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
      • robot_receive_timeout [default: 0.02] — Timeout for the robot to respond to a command. This is used to prevent the robot from hanging if it does not respond to a command. Most be a multiple of 0.02

Messages

No message files found.

Services

No service files found

Recent questions tagged ur_robot_driver at Robotics Stack Exchange