-
 

Package Summary

Tags No category tags.
Version 2.2.16
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 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.2.16 (2024-10-28)

  • Allow setting the analog output domain when setting an analog output (backport of #1123)
  • Fix component lifecycle (backport of #1098)
  • [moveit] Disable execution_duration_monitoring by default (#1133)
  • Service to get software version of robot (backport of #964)
  • Assure the description is loaded as string (backport of #1107)
  • Contributors: Felix Exner (fexner), mergify[bot], Jacob Larsen

2.2.15 (2024-07-26)

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

2.2.14 (2024-07-01)

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

2.2.13 (2024-06-17)

  • Use robot_receive_timeout instead of keepalive_count (#1009)
  • Remove extra spaces from start_ursim statement in tests (backport of #1010)
  • Add calibration file to launch arguments (#1001)
  • Contributors: Vincenzo Di Pentima, Felix Exner

2.2.12 (2024-05-16)

  • Remove dependency to docker.io (backport #985)
  • Simplify tests (backport of #849)
  • Update installation instructions for source build (backport #967)
  • Move installation instructions to subpage (backport #870)
  • Reduce number of controller_spawners to 3 (#928)
  • Fix multi-line strings in DeclareLaunchArgument (backport #948)
  • "use_fake_hardware" for UR20 (#950)
  • Contributors: Vincenzo Di Pentima, Felix Exner, Robert Wilbrandt, Matthijs van der Burgh

2.2.11 (2024-04-08)

  • Add UR30 support (#930)
  • Move communication setup to on_configure instead of on_activate (#936)
  • Contributors: Felix Exner, Vincenzo Di Pentima

2.2.10 (2024-01-03)

  • Add backward_ros to driver (#872) (#878)
  • Port configuration (#835) (#847)
  • Update link to MoveIt! documentation (#845)
  • Contributors: mergify[bot]

2.2.9 (2023-09-22)

  • Added a test that sjtc correctly aborts on violation of constraints
  • Added support for UR20 (#805)
  • Introduced tf_prefix into log handler (#713)
  • Start ursim from lib (#733)
  • Run robot driver test also with tf_prefix (#729)
  • Urscript interface (#721) (#742)
  • Contributors: Felix Exner, Lennart Nachtigall, mergify[bot]

2.2.8 (2023-06-26)

  • Use tf prefix properly (backport #688) (#725)
  • Use SCHED_FIFO for controller_manager's main thread (#719) (#722)
  • Contributors: mergify[bot]

2.2.7 (2023-06-02)

  • Calling on_deactivate in dtr (#679) (#704)
  • Adds full nonblocking readout support (Multiarm part 4) - v2 (#673) (#703)
  • Correct calibration correction launch file in doc (#590)
  • Introduce hand back control service (#528) (#670)
  • Update definition of test goals to new version. (backport #637) (#668)
  • Default path to ur_client_library urscript (#316) (#553)
    • Change default path for urscript for headless mode.
    • Replace urscript path also in newer ur_robot_driver launchfile
  • Wait longer for controllers to load and activate
  • Fix flaky tests (#641)
  • Added services to set tool voltage and zero force torque sensor (#466) (#582)
  • Controller spawner timeout (backport #608) (#609)
  • Fix cmake dependency on controller_manager (backport #598) (#599)
  • Increase timeout for first test service call to driver (Backport of #605) (#607)
  • Update linters & checkers (backport #426) (#556)
  • Clean up & improve execution tests (Backport of #512) (#552)
  • Contributors: Felix Exner (fexner), Lennart Nachtigall, Robert Wilbrandt, mergify[bot], Denis Stogl, livanov93, Mads Holm Peters

2.2.6 (2022-11-28)

  • Cleanup humble branch (#545)
  • Contributors: Felix Exner (fexner)

2.2.5 (2022-11-19)

  • ur_robot_driver: Controller_stopper fix deprecation warning
  • Fix tool voltage setup (#526)
    • Move BEGIN_REPLACE inside of header

    * Change default value of tool_voltage Keeping this at 0 requires users to explicitly set it to non-zero. This way we won't accitentally destroy hardware that cannot handle 24V.

  • Added dependency to socat (#527) This is needed for the tool forwarding.
  • Add a note in the tool_comm doc about a URCap conflict (#524)
    • Add a note in the tool_comm doc about a URCap conflict

    * Update ur_robot_driver/doc/setup_tool_communication.rst Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>> * Fix formatting and one spelling mistake Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>>

  • Contributors: Felix Exner, Felix Exner (fexner)

2.2.4 (2022-10-07)

  • Remove the custom ursim docker files (#478) This has been migrated inside the docs and is not needed anymore.
  • Remove duplicated update_rate parameter (#479)
  • Contributors: Felix Exner

2.2.3 (2022-07-27)

  • Adapt ros control api (#448)
    • scaled jtc: Use get_interface_name instead of get_name

    * Migrate from stopped controllers to inactive controllers stopped controllers has been depreated upstream

  • Contributors: Felix Exner

2.2.2 (2022-07-19)

  • Made sure all past maintainers are listed as authors (#429)
  • Silence a compilation warning (#425) Since setting the receive timeout takes the time_buffer as an argument this raises a "may be used uninitialized" warning. Setting this to 0 explicitly should prevent that.
  • Doc: Fix IP address in usage->ursim section (#422)
  • Contributors: Felix Exner

2.2.1 (2022-06-27)

  • Fixed controller name for force_torque_sensor_broadcaster (#411)
  • Contributors: Felix Exner

2.2.0 (2022-06-20)

  • Updated package maintainers
  • Rework bringup (#403)
  • Prepare for humble (#394)
  • Update dependencies on all packages (#391)
  • Update HW-interface API for humble. (#377)
  • Use types in hardware interface from ros2_control in local namespace (#339)
  • Update header extension to remove compile warning. (#285)
  • 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 (#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
  • 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
  • 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
  • Update CMakeLists and package.xml for:
    • ur5_moveit_config
    • ur_bringup
    • ur_description
  • Change pkg versions to 0.0.0
  • Contributors: AndyZe, Denis Stogl, Denis Štogl, Felix Exner, John Morris, Lovro, Mads Holm Peters, Marvin Große Besselmann, Rune Søe-Knudsen, livanov93, Robert Wilbrandt

0.0.3 (2019-08-09)

  • Added a service to end ROS control from ROS side
  • Publish IO state on ROS topics
  • Added write channel through RTDE with speed slider and IO services
  • Added subscriber to send arbitrary URScript commands to the robot

0.0.2 (2019-07-03)

  • Fixed dependencies and installation
  • Updated README
  • Fixed passing parameters through launch files
  • Added support for correctly switching controllers during runtime and using the standard joint_trajectory_controller
  • Updated externalcontrol URCap to version 1.0.2
    • Fixed Script timeout when running the URCap inside of a looping tree
    • Fixed a couple of typos
  • Increased minimal required UR software version to 3.7/5.1

0.0.1 (2019-06-28)

Initial release

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)

  • Added a test that sjtc correctly aborts on violation of constraints (#813)
  • Added support for UR20 (#806)
  • Introduced tf_prefix into log handler (#713)
  • Contributors: Felix Exner, Lennart Nachtigall

2.3.3 (2023-08-23)

  • Run robot driver test also with tf_prefix (#729) (#752)
    • Run robot driver test also with tf_prefix
    • Use tf_prefix substitution in controllers config file

    * Set default value of tf_prefix in launchfile to empty instead of '""' ---------Co-authored-by: Robert Wilbrandt <<wilbrandt@fzi.de>> (cherry picked from commit 79bfddc7ac4cd3a69594da26ce6ae8b8024eae73) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>

  • Urscript interface (#721)
    • Add a urscript interface node
    • Add urscript_interface to standard launchfile
    • Added documentation for urscript_interface
    • Add a notice about incorrect script code
    • Add test for urscript interface

    * Move tests to one single tests This should avoid that different tests run in parallel

    • Wait for IO controller before checking IOs
    • Write an initial textmessage when connecting the urscript_interface
    • Wait for controller_manager services longer

    * Make sure we have a clean robot state without any program running once we enter our test similar to how we did it on the robot_driver test

    • Remove unneeded Destructor definition
  • Use SCHED_FIFO for controller_manager's main thread (#719) Previous investigations showed that using FIFO scheduling helps keeping cycle times also non non-RT kernels. This combined with non-blocking read can result in a very stable system. This is, in fact, very close to what the actual controller_manager_node does except that we always use FIFO scheduling independent of the actual kernel in use.
  • Contributors: Felix Exner (fexner), mergify[bot]

2.3.2 (2023-06-02)

  • Adds full nonblocking readout support (Multiarm part 4) - v2 (#673)
  • Removed workaround also in export_command_interfaces (#692)
  • Calling on_deactivate in dtr (#679)
  • Fixed formatting (#685)
  • Remove tf_prefix workaround in hw interface
  • Ported controllers to generate_parameters library and added prefix for controllers (Multiarm part 2) (#594)
  • Remove ur_bringup package (#666)
  • Introduce hand back control service (#528)
  • Apply suggestions from code review
  • Update definition of test goals to new version.
  • Wait longer for controllers to load and activate
  • Fix flaky tests (#641)
    • Move robot startup into test's setUp function
    • Robustify robot startup
  • This commits adds additional configuration parameters needed for multiarm support.
  • Add timeout to execution test
  • Improve logging for robot execution tests
  • Contributors: Denis Štogl, Dr. Denis, Felix Exner, Felix Exner (fexner), Lennart Nachtigall, Robert Wilbrandt, livanov93

2.3.1 (2023-03-16)

  • Adjust controller switching to message change
  • Controller spawner timeout (#608)
    • Simplify controller spawner definitions
    • Ignore flake8 W503 as it clashes with black and goes against PEP8 style
    • Add argument to set controller spawner timeout

    * Use longer controller manager timeout in CI The default timeout of 10s is the same as our RTDE retry timeout, which means if RTDE does not immediately connect (which happens regularly in CI runners) controller spawning would fail.

  • Increase timeout for first test service call to driver (#605)
  • Contributors: Robert Wilbrandt, RobertWilbrandt

2.3.0 (2023-03-02)

  • Fix cmake dependency on controller_manager
  • Correct calibration correction launch file in doc
  • Added services to set tool voltage and zero force torque sensor (#466) Added launch arguments for reverse ip and script command interface port.
  • Fix comment in test file
  • Default path to ur_client_library urscript (#316)
    • Change default path for urscript for headless mode.
    • Replace urscript path also in newer ur_robot_driver launchfile

    * Remove ros_control.urscript Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Clean up & improve execution tests (#512)
    • Clean up execution test files
    • Start ursim as part of the execution tests
    • Dont use custom dockerursim for humble and rolling execution tests
    • Clean up test implementations
    • pep257 fixes
    • Perform rolling and humble execution tests as part of normal pipelines
    • Increase admissible timeouts as the CI needs to pull ursim first
    • Add more debug messages during tests
    • Wait until robot is in POWER_OFF mode before trying to power it on
    • Fix error introduced in last commit
    • Add additional cmake option to enable integration tests
    • Increase timeout for robot tests
    • Add CMake comment describing the execution test integration

    * Run source tests on pull request This is only here for testing the test setup! Remove before merging * call resend_robot_program twice This seems to be necessary, as otherwise the robot hangs after bootup. The first program execution (that gets automatically started at driver startup because of the headless_mode) gets paused, since it is sent while the robotis not yet switched on. To mitigate this, we send the robot program again after switching on the robot, but this seems to stop the robot program. Sending it again seems to set it correctly to a started state. * Increase timeouts for dashboard_client tests Otherwise they can fail, since in parallel we pull and start the docker container. Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Update and thin down README (#494) Avoid duplication between README and package doc.
    • Updated documentation about fake_hardware and MoveIt!
    • Remove trailing WS
    • [documentation] do not suggest -r for rosdep install
    • Added note about tool0_controller to docs.
    • Add additional part about calibration to toplevel README.
    • Added note about sourcing ROS in build instructions
  • ur_robot_driver: Controller_stopper fix deprecation warning Use activate_controllers instead of start_controllers.
  • Fix tool voltage setup (#526)
    • Move BEGIN_REPLACE inside of header

    * Change default value of tool_voltage Keeping this at 0 requires users to explicitly set it to non-zero. This way we won't accitentally destroy hardware that cannot handle 24V.

  • Added dependency to socat (#527) This is needed for the tool forwarding.
  • Add a note in the tool_comm doc about a URCap conflict (#524)
    • Add a note in the tool_comm doc about a URCap conflict

    * Update ur_robot_driver/doc/setup_tool_communication.rst Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>> * Fix formatting and one spelling mistake Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>>

  • Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, Robert Wilbrandt, RobertWilbrandt, livanov93

2.2.4 (2022-10-07)

  • Remove the custom ursim docker files (#478) This has been migrated inside the docs and is not needed anymore.
  • Remove duplicated update_rate parameter (#479)
  • Contributors: Felix Exner

2.2.3 (2022-07-27)

  • Adapt ros control api (#448)
    • scaled jtc: Use get_interface_name instead of get_name

    * Migrate from stopped controllers to inactive controllers stopped controllers has been deprecated upstream

  • Contributors: Felix Exner

2.2.2 (2022-07-19)

  • Made sure all past maintainers are listed as authors (#429)
  • Silence a compilation warning (#425) Since setting the receive timeout takes the time_buffer as an argument this raises a "may be used uninitialized" warning. Setting this to 0 explicitly should prevent that.
  • Doc: Fix IP address in usage->ursim section (#422)
  • Contributors: Felix Exner

2.2.1 (2022-06-27)

  • Fixed controller name for force_torque_sensor_broadcaster (#411)
  • Contributors: Felix Exner

2.2.0 (2022-06-20)

  • Updated package maintainers
  • Rework bringup (#403)
  • Prepare for humble (#394)
  • Update dependencies on all packages (#391)
  • Update HW-interface API for humble. (#377)
  • Use types in hardware interface from ros2_control in local namespace (#339)
  • Update header extension to remove compile warning. (#285)
  • 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 (#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
  • 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
  • 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
  • Update CMakeLists and package.xml for:
    • ur5_moveit_config
    • ur_bringup
    • ur_description
  • Change pkg versions to 0.0.0
  • Contributors: AndyZe, Denis Stogl, Denis Štogl, Felix Exner, John Morris, Lovro, Mads Holm Peters, Marvin Große Besselmann, Rune Søe-Knudsen, livanov93, Robert Wilbrandt

0.0.3 (2019-08-09)

  • Added a service to end ROS control from ROS side
  • Publish IO state on ROS topics
  • Added write channel through RTDE with speed slider and IO services
  • Added subscriber to send arbitrary URScript commands to the robot

0.0.2 (2019-07-03)

  • Fixed dependencies and installation
  • Updated README
  • Fixed passing parameters through launch files
  • Added support for correctly switching controllers during runtime and using the standard joint_trajectory_controller
  • Updated externalcontrol URCap to version 1.0.2
    • Fixed Script timeout when running the URCap inside of a looping tree
    • Fixed a couple of typos
  • Increased minimal required UR software version to 3.7/5.1

0.0.1 (2019-06-28)

Initial release

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.4.13
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 2024-11-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
  • Vincenzo Di Pentima

Authors

  • Denis Stogl
  • Robert Wilbrandt
  • 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 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.

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.4.13 (2024-10-28)

  • Fix component lifecycle (#1098)
  • Add missing state interfaces for get_robot_software_version (#1153)
  • Contributors: Felix Exner (fexner)

2.4.12 (2024-10-14)

  • Revert "Add passthrough interfaces for joints (#1121)" (#1151)
  • Contributors: Felix Exner (fexner)

2.4.11 (2024-10-10)

  • Add note about TEM (#1136)
  • Allow setting the analog output domain when setting an analog IO (#1123)
  • Service to get software version of robot (#964)
  • Add passthrough interfaces for joints (#1121)
  • Fix for Controller Switching Issue and Refactor Controller Spawning (#1093)
  • Improve usage documentation (#1110)
  • Assure the description is loaded as string (#1106)
  • Contributors: Chen Chen, Felix Exner (fexner), URJala

2.4.10 (2024-09-11)

  • Fix for forward_velocity_controller test (#1076)
  • Update maintainers team (#1088)
  • Contributors: Vincenzo Di Pentima

2.4.9 (2024-08-09)

  • Added dynamics tag when using mock_components/GenericSystem (#1075)
  • Updated the UR family photo on the readme (#1064)
  • Fix passing launch_dashboard_client launch argument (#1057)
  • [doc] Add more documentation regarding usage (#1055)
  • Add doc to custom URScript commands that it needs to be in headless mode (#1051)
  • Update reference to ros2_controllers test node (#1054)
  • [doc] Update required polyscope version (#1052)
  • Add migration notes for jazzy (#1045)
  • Contributors: Felix Exner (fexner), Rune Søe-Knudsen

2.4.8 (2024-07-01)

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

2.4.7 (2024-06-19)

  • Fix launching without a tf_prefix specified (#1029)
  • Contributors: Felix Exner (fexner)

2.4.6 (2024-06-17)

  • Remove tf_prefix from ur_control.launch.py (#1020)
  • Make moveit_config compatible to moveit_configs_builder (#998)
  • Remove extra spaces from start_ursim statement in tests (#1010)
  • Replace keepalive count (#1002)
  • Restructure documentation for full stack documentation (#984)
  • Contributors: Felix Exner, Ruddick Lawrence, Vincenzo Di Pentima

2.4.5 (2024-05-16)

  • Remove dependency to docker.io (#985)
  • Move starting the robot_state_publisher to an own launch file (#977) Co-authored-by: Vincenzo Di Pentima <<DiPentima@fzi.de>>
  • Update installation instructions for source build (#967)
  • Fix multi-line strings in DeclareLaunchArgument (#948)
  • Contributors: Christoph Fröhlich, Felix Exner (fexner), Matthijs van der Burgh

2.4.4 (2024-04-04)

  • Use ros2 control node from controller_manager and description topic (#939)
  • Move communication setup to on_configure instead of on_activate (#732)
  • [URDF] Fix initial value of speed scaling factor syntax (#920)
  • Reduce number of controller_spawners to 3 (#919)
  • Contributors: Felix Exner

2.4.3 (2024-02-02)

  • Add UR30 support (#899)
  • Add control description and ros2_control tag to driver. (#877)
  • Contributors: Felix Exner (fexner)

2.4.2 (2023-11-23)

  • [README] Move installation instructions to subpage (#870)
  • Add backward_ros to driver (#872)
  • Simplify tests (#849)
  • Port configuration (#835) Added possibility to change the reverse_port, script_sender_port and trajectory_port
  • [README] Update link to MoveIt! documentation
  • Do not start urscipt_interface when using mock hardware
  • Contributors: Felix Durchdewald, Felix Exner, RobertWilbrandt

2.4.1 (2023-09-21)

  • Added a test that sjtc correctly aborts on violation of constraints (#810)
  • Added support for UR20 (#797)
  • Contributors: Felix Exner

2.4.0 (2023-08-28)

  • Start ursim from lib (#733)
    • Forward start_ursim.sh to the one from the client library
    • Update docs and tests to start ursim from the ur_client_library script
  • Update velocity-control on feature list (#573) ros2_controllers jtc does support velocity control by now, so we should not state it doesn't.
  • Introduced tf_prefix into log handler (#713)
    • Introduced tf_prefix into log handler

    * added default argument to prefix ---------Co-authored-by: Lennart Nachtigall <<firesurfer@firesurfer.de>> Co-authored-by: Felix Exner <<exner@fzi.de>> Co-authored-by: Lennart Nachtigall <<lennart.nachtigall@sci-mo.de>>

  • Run robot driver test also with tf_prefix (#729)
    • Run robot driver test also with tf_prefix
    • Use tf_prefix substitution in controllers config file

    * Set default value of tf_prefix in launchfile to empty instead of '""' ---------Co-authored-by: Robert Wilbrandt <<wilbrandt@fzi.de>>

  • Use mock_hardware and mock_sensor_commands instead of fake (#739) * Use mock_hardware and mock_sensor_commands instead of fake This has been deprecated a while back and was never adapted.
    • Update documentation to mock_hardware
  • Urscript interface (#721)
    • Add a urscript interface node
    • Add urscript_interface to standard launchfile
    • Added documentation for urscript_interface
    • Add a notice about incorrect script code
    • Add test for urscript interface

    * Move tests to one single tests This should avoid that different tests run in parallel

    • Wait for IO controller before checking IOs
    • Write an initial textmessage when connecting the urscript_interface
    • Wait for controller_manager services longer

    * Make sure we have a clean robot state without any program running once we enter our test similar to how we did it on the robot_driver test

    • Remove unneeded Destructor definition
  • Use SCHED_FIFO for controller_manager's main thread (#719) Previous investigations showed that using FIFO scheduling helps keeping cycle times also non non-RT kernels. This combined with non-blocking read can result in a very stable system. This is, in fact, very close to what the actual controller_manager_node does except that we always use FIFO scheduling independent of the actual kernel in use.
  • Contributors: Felix Exner (fexner), Lennart Nachtigall

2.3.2 (2023-06-02)

  • Adds full nonblocking readout support (Multiarm part 4) - v2 (#673)
  • Removed workaround also in export_command_interfaces (#692)
  • Calling on_deactivate in dtr (#679)
  • Fixed formatting (#685)
  • Remove tf_prefix workaround in hw interface
  • Ported controllers to generate_parameters library and added prefix for controllers (Multiarm part 2) (#594)
  • Remove ur_bringup package (#666)
  • Introduce hand back control service (#528)
  • Apply suggestions from code review
  • Update definition of test goals to new version.
  • Wait longer for controllers to load and activate
  • Fix flaky tests (#641)
    • Move robot startup into test's setUp function
    • Robustify robot startup
  • This commits adds additional configuration parameters needed for multiarm support.
  • Add timeout to execution test
  • Improve logging for robot execution tests
  • Contributors: Denis Štogl, Dr. Denis, Felix Exner, Felix Exner (fexner), Lennart Nachtigall, Robert Wilbrandt, livanov93

2.3.1 (2023-03-16)

  • Adjust controller switching to message change
  • Controller spawner timeout (#608)
    • Simplify controller spawner definitions
    • Ignore flake8 W503 as it clashes with black and goes against PEP8 style
    • Add argument to set controller spawner timeout

    * Use longer controller manager timeout in CI The default timeout of 10s is the same as our RTDE retry timeout, which means if RTDE does not immediately connect (which happens regularly in CI runners) controller spawning would fail.

  • Increase timeout for first test service call to driver (#605)
  • Contributors: Robert Wilbrandt, RobertWilbrandt

2.3.0 (2023-03-02)

  • Fix cmake dependency on controller_manager
  • Correct calibration correction launch file in doc
  • Added services to set tool voltage and zero force torque sensor (#466) Added launch arguments for reverse ip and script command interface port.
  • Fix comment in test file
  • Default path to ur_client_library urscript (#316)
    • Change default path for urscript for headless mode.
    • Replace urscript path also in newer ur_robot_driver launchfile

    * Remove ros_control.urscript Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Clean up & improve execution tests (#512)
    • Clean up execution test files
    • Start ursim as part of the execution tests
    • Dont use custom dockerursim for humble and rolling execution tests
    • Clean up test implementations
    • pep257 fixes
    • Perform rolling and humble execution tests as part of normal pipelines
    • Increase admissible timeouts as the CI needs to pull ursim first
    • Add more debug messages during tests
    • Wait until robot is in POWER_OFF mode before trying to power it on
    • Fix error introduced in last commit
    • Add additional cmake option to enable integration tests
    • Increase timeout for robot tests
    • Add CMake comment describing the execution test integration

    * Run source tests on pull request This is only here for testing the test setup! Remove before merging * call resend_robot_program twice This seems to be necessary, as otherwise the robot hangs after bootup. The first program execution (that gets automatically started at driver startup because of the headless_mode) gets paused, since it is sent while the robotis not yet switched on. To mitigate this, we send the robot program again after switching on the robot, but this seems to stop the robot program. Sending it again seems to set it correctly to a started state. * Increase timeouts for dashboard_client tests Otherwise they can fail, since in parallel we pull and start the docker container. Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Update and thin down README (#494) Avoid duplication between README and package doc.
    • Updated documentation about fake_hardware and MoveIt!
    • Remove trailing WS
    • [documentation] do not suggest -r for rosdep install
    • Added note about tool0_controller to docs.
    • Add additional part about calibration to toplevel README.
    • Added note about sourcing ROS in build instructions
  • ur_robot_driver: Controller_stopper fix deprecation warning Use activate_controllers instead of start_controllers.
  • Fix tool voltage setup (#526)
    • Move BEGIN_REPLACE inside of header

    * Change default value of tool_voltage Keeping this at 0 requires users to explicitly set it to non-zero. This way we won't accitentally destroy hardware that cannot handle 24V.

  • Added dependency to socat (#527) This is needed for the tool forwarding.
  • Add a note in the tool_comm doc about a URCap conflict (#524)
    • Add a note in the tool_comm doc about a URCap conflict

    * Update ur_robot_driver/doc/setup_tool_communication.rst Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>> * Fix formatting and one spelling mistake Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>>

  • Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, Robert Wilbrandt, RobertWilbrandt, livanov93

2.2.4 (2022-10-07)

  • Remove the custom ursim docker files (#478) This has been migrated inside the docs and is not needed anymore.
  • Remove duplicated update_rate parameter (#479)
  • Contributors: Felix Exner

2.2.3 (2022-07-27)

  • Adapt ros control api (#448)
    • scaled jtc: Use get_interface_name instead of get_name

    * Migrate from stopped controllers to inactive controllers stopped controllers has been deprecated upstream

  • Contributors: Felix Exner

2.2.2 (2022-07-19)

  • Made sure all past maintainers are listed as authors (#429)
  • Silence a compilation warning (#425) Since setting the receive timeout takes the time_buffer as an argument this raises a "may be used uninitialized" warning. Setting this to 0 explicitly should prevent that.
  • Doc: Fix IP address in usage->ursim section (#422)
  • Contributors: Felix Exner

2.2.1 (2022-06-27)

  • Fixed controller name for force_torque_sensor_broadcaster (#411)
  • Contributors: Felix Exner

2.2.0 (2022-06-20)

  • Updated package maintainers
  • Rework bringup (#403)
  • Prepare for humble (#394)
  • Update dependencies on all packages (#391)
  • Update HW-interface API for humble. (#377)
  • Use types in hardware interface from ros2_control in local namespace (#339)
  • Update header extension to remove compile warning. (#285)
  • 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 (#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
  • 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
  • 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
  • Update CMakeLists and package.xml for:
    • ur5_moveit_config
    • ur_bringup
    • ur_description
  • Change pkg versions to 0.0.0
  • Contributors: AndyZe, Denis Stogl, Denis Štogl, Felix Exner, John Morris, Lovro, Mads Holm Peters, Marvin Große Besselmann, Rune Søe-Knudsen, livanov93, Robert Wilbrandt

0.0.3 (2019-08-09)

  • Added a service to end ROS control from ROS side
  • Publish IO state on ROS topics
  • Added write channel through RTDE with speed slider and IO services
  • Added subscriber to send arbitrary URScript commands to the robot

0.0.2 (2019-07-03)

  • Fixed dependencies and installation
  • Updated README
  • Fixed passing parameters through launch files
  • Added support for correctly switching controllers during runtime and using the standard joint_trajectory_controller
  • Updated externalcontrol URCap to version 1.0.2
    • Fixed Script timeout when running the URCap inside of a looping tree
    • Fixed a couple of typos
  • Increased minimal required UR software version to 3.7/5.1

0.0.1 (2019-06-28)

Initial release

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.4.13
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 2024-11-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
  • Vincenzo Di Pentima

Authors

  • Denis Stogl
  • Robert Wilbrandt
  • 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 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.

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.4.13 (2024-10-28)

  • Fix component lifecycle (#1098)
  • Add missing state interfaces for get_robot_software_version (#1153)
  • Contributors: Felix Exner (fexner)

2.4.12 (2024-10-14)

  • Revert "Add passthrough interfaces for joints (#1121)" (#1151)
  • Contributors: Felix Exner (fexner)

2.4.11 (2024-10-10)

  • Add note about TEM (#1136)
  • Allow setting the analog output domain when setting an analog IO (#1123)
  • Service to get software version of robot (#964)
  • Add passthrough interfaces for joints (#1121)
  • Fix for Controller Switching Issue and Refactor Controller Spawning (#1093)
  • Improve usage documentation (#1110)
  • Assure the description is loaded as string (#1106)
  • Contributors: Chen Chen, Felix Exner (fexner), URJala

2.4.10 (2024-09-11)

  • Fix for forward_velocity_controller test (#1076)
  • Update maintainers team (#1088)
  • Contributors: Vincenzo Di Pentima

2.4.9 (2024-08-09)

  • Added dynamics tag when using mock_components/GenericSystem (#1075)
  • Updated the UR family photo on the readme (#1064)
  • Fix passing launch_dashboard_client launch argument (#1057)
  • [doc] Add more documentation regarding usage (#1055)
  • Add doc to custom URScript commands that it needs to be in headless mode (#1051)
  • Update reference to ros2_controllers test node (#1054)
  • [doc] Update required polyscope version (#1052)
  • Add migration notes for jazzy (#1045)
  • Contributors: Felix Exner (fexner), Rune Søe-Knudsen

2.4.8 (2024-07-01)

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

2.4.7 (2024-06-19)

  • Fix launching without a tf_prefix specified (#1029)
  • Contributors: Felix Exner (fexner)

2.4.6 (2024-06-17)

  • Remove tf_prefix from ur_control.launch.py (#1020)
  • Make moveit_config compatible to moveit_configs_builder (#998)
  • Remove extra spaces from start_ursim statement in tests (#1010)
  • Replace keepalive count (#1002)
  • Restructure documentation for full stack documentation (#984)
  • Contributors: Felix Exner, Ruddick Lawrence, Vincenzo Di Pentima

2.4.5 (2024-05-16)

  • Remove dependency to docker.io (#985)
  • Move starting the robot_state_publisher to an own launch file (#977) Co-authored-by: Vincenzo Di Pentima <<DiPentima@fzi.de>>
  • Update installation instructions for source build (#967)
  • Fix multi-line strings in DeclareLaunchArgument (#948)
  • Contributors: Christoph Fröhlich, Felix Exner (fexner), Matthijs van der Burgh

2.4.4 (2024-04-04)

  • Use ros2 control node from controller_manager and description topic (#939)
  • Move communication setup to on_configure instead of on_activate (#732)
  • [URDF] Fix initial value of speed scaling factor syntax (#920)
  • Reduce number of controller_spawners to 3 (#919)
  • Contributors: Felix Exner

2.4.3 (2024-02-02)

  • Add UR30 support (#899)
  • Add control description and ros2_control tag to driver. (#877)
  • Contributors: Felix Exner (fexner)

2.4.2 (2023-11-23)

  • [README] Move installation instructions to subpage (#870)
  • Add backward_ros to driver (#872)
  • Simplify tests (#849)
  • Port configuration (#835) Added possibility to change the reverse_port, script_sender_port and trajectory_port
  • [README] Update link to MoveIt! documentation
  • Do not start urscipt_interface when using mock hardware
  • Contributors: Felix Durchdewald, Felix Exner, RobertWilbrandt

2.4.1 (2023-09-21)

  • Added a test that sjtc correctly aborts on violation of constraints (#810)
  • Added support for UR20 (#797)
  • Contributors: Felix Exner

2.4.0 (2023-08-28)

  • Start ursim from lib (#733)
    • Forward start_ursim.sh to the one from the client library
    • Update docs and tests to start ursim from the ur_client_library script
  • Update velocity-control on feature list (#573) ros2_controllers jtc does support velocity control by now, so we should not state it doesn't.
  • Introduced tf_prefix into log handler (#713)
    • Introduced tf_prefix into log handler

    * added default argument to prefix ---------Co-authored-by: Lennart Nachtigall <<firesurfer@firesurfer.de>> Co-authored-by: Felix Exner <<exner@fzi.de>> Co-authored-by: Lennart Nachtigall <<lennart.nachtigall@sci-mo.de>>

  • Run robot driver test also with tf_prefix (#729)
    • Run robot driver test also with tf_prefix
    • Use tf_prefix substitution in controllers config file

    * Set default value of tf_prefix in launchfile to empty instead of '""' ---------Co-authored-by: Robert Wilbrandt <<wilbrandt@fzi.de>>

  • Use mock_hardware and mock_sensor_commands instead of fake (#739) * Use mock_hardware and mock_sensor_commands instead of fake This has been deprecated a while back and was never adapted.
    • Update documentation to mock_hardware
  • Urscript interface (#721)
    • Add a urscript interface node
    • Add urscript_interface to standard launchfile
    • Added documentation for urscript_interface
    • Add a notice about incorrect script code
    • Add test for urscript interface

    * Move tests to one single tests This should avoid that different tests run in parallel

    • Wait for IO controller before checking IOs
    • Write an initial textmessage when connecting the urscript_interface
    • Wait for controller_manager services longer

    * Make sure we have a clean robot state without any program running once we enter our test similar to how we did it on the robot_driver test

    • Remove unneeded Destructor definition
  • Use SCHED_FIFO for controller_manager's main thread (#719) Previous investigations showed that using FIFO scheduling helps keeping cycle times also non non-RT kernels. This combined with non-blocking read can result in a very stable system. This is, in fact, very close to what the actual controller_manager_node does except that we always use FIFO scheduling independent of the actual kernel in use.
  • Contributors: Felix Exner (fexner), Lennart Nachtigall

2.3.2 (2023-06-02)

  • Adds full nonblocking readout support (Multiarm part 4) - v2 (#673)
  • Removed workaround also in export_command_interfaces (#692)
  • Calling on_deactivate in dtr (#679)
  • Fixed formatting (#685)
  • Remove tf_prefix workaround in hw interface
  • Ported controllers to generate_parameters library and added prefix for controllers (Multiarm part 2) (#594)
  • Remove ur_bringup package (#666)
  • Introduce hand back control service (#528)
  • Apply suggestions from code review
  • Update definition of test goals to new version.
  • Wait longer for controllers to load and activate
  • Fix flaky tests (#641)
    • Move robot startup into test's setUp function
    • Robustify robot startup
  • This commits adds additional configuration parameters needed for multiarm support.
  • Add timeout to execution test
  • Improve logging for robot execution tests
  • Contributors: Denis Štogl, Dr. Denis, Felix Exner, Felix Exner (fexner), Lennart Nachtigall, Robert Wilbrandt, livanov93

2.3.1 (2023-03-16)

  • Adjust controller switching to message change
  • Controller spawner timeout (#608)
    • Simplify controller spawner definitions
    • Ignore flake8 W503 as it clashes with black and goes against PEP8 style
    • Add argument to set controller spawner timeout

    * Use longer controller manager timeout in CI The default timeout of 10s is the same as our RTDE retry timeout, which means if RTDE does not immediately connect (which happens regularly in CI runners) controller spawning would fail.

  • Increase timeout for first test service call to driver (#605)
  • Contributors: Robert Wilbrandt, RobertWilbrandt

2.3.0 (2023-03-02)

  • Fix cmake dependency on controller_manager
  • Correct calibration correction launch file in doc
  • Added services to set tool voltage and zero force torque sensor (#466) Added launch arguments for reverse ip and script command interface port.
  • Fix comment in test file
  • Default path to ur_client_library urscript (#316)
    • Change default path for urscript for headless mode.
    • Replace urscript path also in newer ur_robot_driver launchfile

    * Remove ros_control.urscript Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Clean up & improve execution tests (#512)
    • Clean up execution test files
    • Start ursim as part of the execution tests
    • Dont use custom dockerursim for humble and rolling execution tests
    • Clean up test implementations
    • pep257 fixes
    • Perform rolling and humble execution tests as part of normal pipelines
    • Increase admissible timeouts as the CI needs to pull ursim first
    • Add more debug messages during tests
    • Wait until robot is in POWER_OFF mode before trying to power it on
    • Fix error introduced in last commit
    • Add additional cmake option to enable integration tests
    • Increase timeout for robot tests
    • Add CMake comment describing the execution test integration

    * Run source tests on pull request This is only here for testing the test setup! Remove before merging * call resend_robot_program twice This seems to be necessary, as otherwise the robot hangs after bootup. The first program execution (that gets automatically started at driver startup because of the headless_mode) gets paused, since it is sent while the robotis not yet switched on. To mitigate this, we send the robot program again after switching on the robot, but this seems to stop the robot program. Sending it again seems to set it correctly to a started state. * Increase timeouts for dashboard_client tests Otherwise they can fail, since in parallel we pull and start the docker container. Co-authored-by: Felix Exner <<exner@fzi.de>>

  • Update and thin down README (#494) Avoid duplication between README and package doc.
    • Updated documentation about fake_hardware and MoveIt!
    • Remove trailing WS
    • [documentation] do not suggest -r for rosdep install
    • Added note about tool0_controller to docs.
    • Add additional part about calibration to toplevel README.
    • Added note about sourcing ROS in build instructions
  • ur_robot_driver: Controller_stopper fix deprecation warning Use activate_controllers instead of start_controllers.
  • Fix tool voltage setup (#526)
    • Move BEGIN_REPLACE inside of header

    * Change default value of tool_voltage Keeping this at 0 requires users to explicitly set it to non-zero. This way we won't accitentally destroy hardware that cannot handle 24V.

  • Added dependency to socat (#527) This is needed for the tool forwarding.
  • Add a note in the tool_comm doc about a URCap conflict (#524)
    • Add a note in the tool_comm doc about a URCap conflict

    * Update ur_robot_driver/doc/setup_tool_communication.rst Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>> * Fix formatting and one spelling mistake Co-authored-by: Mads Holm Peters <<79145214+urmahp@users.noreply.github.com>>

  • Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, Robert Wilbrandt, RobertWilbrandt, livanov93

2.2.4 (2022-10-07)

  • Remove the custom ursim docker files (#478) This has been migrated inside the docs and is not needed anymore.
  • Remove duplicated update_rate parameter (#479)
  • Contributors: Felix Exner

2.2.3 (2022-07-27)

  • Adapt ros control api (#448)
    • scaled jtc: Use get_interface_name instead of get_name

    * Migrate from stopped controllers to inactive controllers stopped controllers has been deprecated upstream

  • Contributors: Felix Exner

2.2.2 (2022-07-19)

  • Made sure all past maintainers are listed as authors (#429)
  • Silence a compilation warning (#425) Since setting the receive timeout takes the time_buffer as an argument this raises a "may be used uninitialized" warning. Setting this to 0 explicitly should prevent that.
  • Doc: Fix IP address in usage->ursim section (#422)
  • Contributors: Felix Exner

2.2.1 (2022-06-27)

  • Fixed controller name for force_torque_sensor_broadcaster (#411)
  • Contributors: Felix Exner

2.2.0 (2022-06-20)

  • Updated package maintainers
  • Rework bringup (#403)
  • Prepare for humble (#394)
  • Update dependencies on all packages (#391)
  • Update HW-interface API for humble. (#377)
  • Use types in hardware interface from ros2_control in local namespace (#339)
  • Update header extension to remove compile warning. (#285)
  • 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 (#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
  • 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
  • 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
  • Update CMakeLists and package.xml for:
    • ur5_moveit_config
    • ur_bringup
    • ur_description
  • Change pkg versions to 0.0.0
  • Contributors: AndyZe, Denis Stogl, Denis Štogl, Felix Exner, John Morris, Lovro, Mads Holm Peters, Marvin Große Besselmann, Rune Søe-Knudsen, livanov93, Robert Wilbrandt

0.0.3 (2019-08-09)

  • Added a service to end ROS control from ROS side
  • Publish IO state on ROS topics
  • Added write channel through RTDE with speed slider and IO services
  • Added subscriber to send arbitrary URScript commands to the robot

0.0.2 (2019-07-03)

  • Fixed dependencies and installation
  • Updated README
  • Fixed passing parameters through launch files
  • Added support for correctly switching controllers during runtime and using the standard joint_trajectory_controller
  • Updated externalcontrol URCap to version 1.0.2
    • Fixed Script timeout when running the URCap inside of a looping tree
    • Fixed a couple of typos
  • Increased minimal required UR software version to 3.7/5.1

0.0.1 (2019-06-28)

Initial release

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 (#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
  • 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
  • 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
  • Update CMakeLists and package.xml for:
    • ur5_moveit_config
    • ur_bringup
    • ur_description
  • Change pkg versions to 0.0.0
  • Contributors: AndyZe, Denis Stogl, Denis Štogl, Felix Exner, John Morris, Lovro, Mads Holm Peters, Marvin Große Besselmann, Rune Søe-Knudsen, livanov93

0.0.3 (2019-08-09)

  • Added a service to end ROS control from ROS side
  • Publish IO state on ROS topics
  • Added write channel through RTDE with speed slider and IO services
  • Added subscriber to send arbitrary URScript commands to the robot

0.0.2 (2019-07-03)

  • Fixed dependencies and installation
  • Updated README
  • Fixed passing parameters through launch files
  • Added support for correctly switching controllers during runtime and using the standard joint_trajectory_controller
  • Updated externalcontrol URCap to version 1.0.2
    • Fixed Script timeout when running the URCap inside of a looping tree
    • Fixed a couple of typos
  • Increased minimal required UR software version to 3.7/5.1

0.0.1 (2019-06-28)

Initial release

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