ur_robot_driver package from ur_robot_driver repour ur_bringup ur_calibration ur_controllers ur_dashboard_msgs ur_moveit_config ur_robot_driver |
|
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
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.
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.
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
Package Dependencies
System Dependencies
Name |
---|
socat |
Dependant Packages
Name | Deps |
---|---|
ur | |
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour ur_calibration ur_controllers ur_dashboard_msgs ur_moveit_config ur_robot_driver |
|
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
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.
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.
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 ofstart_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
Package Dependencies
System Dependencies
Name |
---|
socat |
Dependant Packages
Name | Deps |
---|---|
ur | |
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour ur_calibration ur_controllers ur_dashboard_msgs ur_moveit_config ur_robot_driver |
|
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-25 |
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
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.
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.
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)
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 ofstart_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
Package Dependencies
System Dependencies
Name |
---|
socat |
Dependant Packages
Name | Deps |
---|---|
ur | |
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour ur_calibration ur_controllers ur_dashboard_msgs ur_moveit_config ur_robot_driver |
|
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-25 |
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
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.
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.
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)
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 ofstart_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
Package Dependencies
System Dependencies
Name |
---|
socat |
Dependant Packages
Name | Deps |
---|---|
ur | |
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour_calibration ur_dashboard_msgs ur_robot_driver |
|
Package Summary
Tags | No category tags. |
Version | 2.1.5 |
License | Apache-2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-10-23 |
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
Additional Links
Maintainers
- Felix Exner
Authors
- Thomas Timm Andersen
- Simon Rasmussen
- Felix Exner
- Lea Steffen
- Tristan Schnell
ur_robot_driver
This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.
ROS-API
The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.
Technical details
The following image shows a very coarse overview of the driver’s architecture.
Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.
Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.
To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.
The URScript that will be running on the robot is requested by the External Control program node
from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file
to
select a different program than the default one that will be sent as a response to a program
request.
Custom script snippets can be sent to the robot on a topic basis. By default, they will
interrupt other programs (such as the one controlling the robot). For a certain subset of functions,
it is however possible to send them as secondary programs. See UR
documentation
on details.
Note to e-Series users:
The robot won’t accept script code from a remote source unless the robot is put into
remote_control-mode. However, if put into remote_control-mode, the program containing the
External Control program node can’t be started from the panel.
For this purpose, please use the dashboard services to load, start and stop the main program
running on the robot. See the ROS-API documentation for details on the
dashboard services.
For using the tool communication interface on e-Series robots, a socat
script is prepared to
forward the robot’s tool communication interface to a local device on the ROS PC. See the tool
communication setup guide for details.
This driver is using ROS-Control for any control statements.
Therefore, it can be used with all position-based controllers available in ROS-Control. However, we
recommend using the controllers from the scaled_trajectory_controller
package. See its
documentation for details. Note: Speed scaling support will only be
available using the controllers from scaled_trajectory_controller
A note about modes
The term mode is used in different meanings inside this driver.
Remote control mode
On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.
The remote control mode is needed for many aspects of this driver such as
- headless mode (see below)
- sending script code to the robot
- many dashboard functionalities such as
- restarting the robot after protective / EM-Stop
- powering on the robot and do brake release
- loading and starting programs
- the
set_mode
action, as it uses the dashboard calls mentioned above
Headless mode
Inside this driver, there’s the headless mode, which can be either enabled or not. When the
headless mode is activated, required script
code for external control will be sent to the robot directly when the driver starts. As soon as
other script code is sent to the robot either by sending it directly through this driver or by
pressing any motion-related button on the teach pendant, the script will be overwritten by this
action and has to be restarted by using the
resend_robot_program service. If this
is necessary, you will see the output Connection to robot dropped, waiting for new connection.
from the driver. Note that pressing “play” on the TP won’t start the external control again, but
whatever program is currently loaded on the controller. This mode doesn’t require the “External
Control” URCap being installed on the robot as the program is sent to the robot directly. However,
we recommend to use the non-headless mode and leverage the set_mode
action to start program
execution without the teach pendant. The headless mode might be removed in future releases.
Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.
2.1.5 (2024-06-17)
2.1.4 (2024-04-08)
- Added support for UR30 (#688)
- Added arg to enable/disable launch of ursim (#679)
- Contributors: Vincenzo Di Pentima, mahp
2.1.3 (2023-12-18)
- Added support for UR20 (#659)
- Update documentation (#655)
- Bump required cmake version to fix the CMake warning about CMP0048
- Change initializer list ordering to match declaration in header file
- Implemented spline interpolation in joint space (#543)
- Use dedicated build for noetic main (#640)
- fix typo and use ros logging
- Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, RobertWilbrandt, Simon Schmeisser
2.1.2 (2023-01-23)
2.1.1 (2023-01-23)
- Move controller_stopper to ur_robot_driver Since a standalone package with that name was declined during the release process, we decided to move the controller_stopper package over to the driver.
- Update minimal required polyscope version in docs
- Contributors: Felix Exner
2.1.0 (2022-12-08)
- delete ros_control.urscript (#593) We've been using the script from the library for a while now
- Use the RobotMode message inside the SetMode action (#381) This way we can make use of the predefined constants inside the RobotMode message.
- Make several members of hw_interface atomic, for thread safety (#448) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>
- Updated transformForceTorque to handle wheter it is a cb3 or an e-Series robot (#566) The force torque is returned at the tool flange on e-series robots and at the tcp for CB3, this is now handled correctly, so that all force/torque measurements will be relative to the active TCP
- Updated set payload, zero ftsensor and set tool voltage to use the
ur…
(#567)
* Updated set payload, zero ftsensor and set tool voltage to use
the urdriver This makes it possible to call the commands when the
robot is in local control if the external control script is running
on the robot.
- Update ROS interface docs
* Fix argument passing in include instruction Co-authored-by: Miguel Prada <<miguel.prada@tecnalia.com>>
- Remove URCap installation files from driver and replace references (#580) Link to the respective Github release pages instead.
- Drop old C++ compiler flags (#577) Co-authored-by: Jochen Sprickerhof <<git@jochen.sprickerhof.de>>
- Fix MoveIt! command in Example (#575)
- Allow empty stopped_controllers argument. (#572)
- Dashboard service to query whether the robot is in remote control
(#561)
- new dashboard msg to check remote control
- test_move: Load controller only if it is not already loaded (#552)
- Add optional topic rename for speed scaling factor
(#544)
- Add optional topic rename for speed scaling factor
- Update ROS_INTERFACE.md
- Wait for controller action server in test_move. (#535)
- Minor update to display robot_ip parameter without _ (#521)
- Make hw_interface-node required-argument optional (#450) The UR-robot is only one part of our roslaunch-setup, so I would like to be able to have the rest of the system (non-UR) continue to run even if the ur_hardware_interface-node dies.
- Fix test move python3
(#492)
* make test_move work with python2 and python3 As suggested in
http://wiki.ros.org/UsingPython3/SourceCodeChanges#Changing_shebangs
- Use a version-independent shebang
- Use catkin_install_python to install the test_move script
- Update feature list (#490) Some minor formatting and reducing the wrench features to one features to make it more clear.
- Contributors: Adam Heins, AndyZe, Felix Exner, Felix Exner (fexner), Johnson, Mads Holm Peters, Michael Görner, Mingu Kwon, steinmn, teapfw, williamnavaraj
2.0.0 (2021-09-07)
- Merge pull request
#408
from UniversalRobots/staging Adds new features to the driver:
- Cartesian position-based control
- Cartesian twist-based control
- Trajectory forwarding for execution on robot
- More documentation and examples
- Merge branch 'master' into staging
- Merge pull request #437 from UniversalRobots/test_move Add test_move script
- Move test_move files into one
- Added a full guide for starting with the driver
- Add more documentation to new features
(#423)
- Added a description for all controllers
- Link repositories of URCap repos in feature list
- Added note about blending with pass_through_controllers
* Apply suggestions from code review Thanks \@stefanscherzinger Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>> Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- Add missing license header to tool_communication
- Added Cartesian test_move script
- Added choice of trajectory controller and require confirmation
- Fix default controller in common launchfile As mentioned in #206 this lists a non-existing controller
- Added test_move script
- Added log handler for handling log messages from client library with
…
(#398)
- Added log handler for handling log messages from client library with ROS logging
- Merge pull request #420 from fmauch/update_feature_list Update feature list
- Added new control modes
- Removed comparison to ur_modern driver no point in doing this anymore.
- Updated ROS2 notice
- Added "On behalf of Universal Robots A/S" notice (#416) Removed copyright notice from LICENSE file, as the license file itself isn't copyrighted by FZI
- Merge pull request #413 from fmauch/cartesian_control Cartesian control
- Fix wait_for_server calls Rospy action_client.wait_for_server returns false instead of raising an exception
- Removed unneeded debug output
- Made twist controller an exec_depend
- Added Test for twist interface (#2)
- Added test for pose based cartesian trajectory execution
- added tcp pose of robot to cartesian pose interface read
- Adapt to new controller namespaces The namespaces have been moved upstream and we shall adapt to that
- added interface for cartesian pose streaming
- Added new controllers to controller configuration
- added twist interface for cartesian velocity control of the robot co-authored by Tristan Schnell <<schnell@fzi.de>>
- Merge pull request #396 from fmauch/trajectory_interface Adds an interface for trajectory forwarding Complete trajectories (joint-based and Cartesian) can be forwarded to the robot controller for interpolation and execution.
- Added test for pose based cartesian trajectory execution
- Add trajectory_port to hw-interface config
- Fix execution states
- Adapt to pass_though_controllers refactoring
- Register DoneCallback to trajectory passthrough
- added comment about angle representation Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- changed trajectory action parameter for trajectory control messages to enum
- added feedback output to cartesian and joint-based trajectory forwarding
- controller config and launchfile updates for pass-through controllers
- added interface for cartesian trajectory forwarding
- added interfaces for joint trajectory forwarding controller
- Call calibration check in ROS driver (#366) Mandatory check in the client library has been deprecated.
- add reverse_ip argument (#412) Co-authored-by: JS00000 <<winyangyuxin22@hotmail.com>>
- Use urscript file from client library by default
- Merge pull request #400 from fmauch/external_scaling_interface Use speed scaling interface from external package and remove ur_contr…
- Update ur_robot_driver/README.md Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- use the changed namespace of the scaling interface
- Use speed scaling interface from external package and remove ur_controllers
- Add partner logos to README (#393)
- Merge pull request #389 from fmauch/run_trajectory_test rename test method to be actually run by unittest
- power cycle robot before trajectory test to make sure the controller is running
- rename test method to be actually run by unittest
- Fix heading level for set_payload service
- Fixes reading has_realtime property Reading this from system may end up in undefined behavior. (https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/issues/306)
- ensure extractToolPose always returns a valid transform (#372) Quaternion() returns 0,0,0,0 which leads to an invalid transform.
- Merge pull request #97 from fmauch/description_dev Use new ur_description_model
- Merge pull request #382 from fmauch/trajectory_tests Trajectory tests
- Run all integration tests in one test
- Make trajectory test monolithic Otherwise the trajectory tests might be running in parallel.
- Added note about the kinematics_config file
- Adapted to changed payload service
- Removed double yaml
- Updated default kinematics filename and removed ur_e_description
- Adapt to renamed description launchfiles
- Added ur16 support
- Use new description package with unified xacro arguments
- add arg for servoj_gain servoj_lookahead_time in
ur_control.launch
(#354)
- add arg for servoj_gain servoj_lookahead_time in ur_control.launch
- add default
- Added robot_ip and robot_type argument for integrations test
- Added headless mode to the feature list
- Remove manual keepalive message from script This is actually not properly checked by the driver, as keepalive signals won't be sent when the program is paused.
- Merge pull request #342 from fmauch/urcap_1.0.5 Use external_control urcap version 1.0.5
- Added header and control loop definitions.
- Update external_control urcap to version 1.0.5
- Replace two logging macros with ROS logging macros. (#330) Inside the driver we want to use plain ROS logging instead of the library's logging macros.
- Use catkin_install_python macro for python files (#318) This macro works just like the normal [install]{.title-ref} macro, but it also automatically changes the shebang line in the python file to [python2]{.title-ref} or [python3]{.title-ref}, depending which version is used. See: http://wiki.ros.org/UsingPython3/SourceCodeChanges#Changing_shebangs What this means is that this package can be used with Python3 without any further changes, for example in ROS Noetic.
-
Wait for reverse socket response (#288) * Remove timeout and wait for response on reverse socket read Co-authored-by: Tom Queen <<tom_q@hotmail.co.uk>>
- Merge pull request #266 from UniversalRobots/separation Use ur_client_library package for building this driver
- Merge pull request #270 from UniversalRobots/ur16e Ur16e
- Replaced image by a version containing all 4 e-Series robots
- Add launchfile for ur16e
- Updated externalcontrol to v1.0.3
(#245)
- Updated externalcontrol to v1.0.3
- Updated externalcontrol to v1.0.4
- remove check_urls job This is done in the upstream library now
- Removed rtde_client test That moved to the library and makes more sense there.
- Moved files out of redundant "ros" subfolder Before, we had library compnents in other subfolders, but they got moved out.
- Use namespace urcl instead of ur_driver
- Renamed library
- Make tests use separate library, as well. Ultimately, this test should be moved to the library itself.
- Made library fully independent
- use ur_lib from separate package
- Disable trajectory test for now (#264) The trajectory test seems to not work anymore since a couple of weeks. Running those locally (also with a ursim running inside a docker container) works perfectly fine, but running it inside the github action not. As this is blocking many merges currently, I suggest to disable this temporarily while opening an issue to fix it.
- Use Robot_hw_nh node handle for joints. (#227) modified hardware interface to look for joints parameter under the robot_hw node handle
- Correct name of e-series in README
- Specify container IP addresses for testing purposes Before, the default Docker network in the range 172.17.0.0/16 was used. Since a specific IP cannot be chosen/guaranteed within this range, a network is now created with range 192.168.0.0/16, which allows for assigning specific IPs to the containers. Co-authored-by: Emil Vincent Ancker <<emva@universal-robots.com>>
- Added a service to setup the active payload
(#50)
- Added a service to setup the active payload
- Add prefix to wrench hw interface (#217) Use a parameter to set the wrench name This name will be picked up by the [force_torque_sensor_controller]{.title-ref} in order to name the respective topic. Co-authored-by: carebare47 <<tom@shadowrobot.com>>
- Merge pull request #209 from fmauch/testing_scripts Add integration tests for automated testing
- Install resources directory (#225)
- Tests: Update the name of the trajectory controller
- Merge remote-tracking branch 'origin/master' into testing_scripts
- Install resources directory
- Add a gtest for RTDE client only
- Throw an exception when the recipe file cannot be read
- Added a running member to actually join the RTDEWriter thread
- Use a remap for the controller topic
- Use a test_depend for rostest
- replaced legacy package name
- specifically initialize robot before trajectory test
- Use enum identifier instead of hard coded value
- Added test for explicitly scaled trajectory execution
- Add a failing test I want to see whether the tests actually fail
- Moved everything to rostests Run docker ursim externally in GH action
- Renamed _traj_controllers to_joint_traj_controller (#214)
- driver: use default rate for JTC goal monitor. (#221) The old values overrode the default of 20 Hz, which is low and leads to a worst-case delay of approx 100 ms between a goal state change and action clients being notified of that change. This restores the rate to the default of 20 Hz. If a higher update-rate would be desirable for a particular application, users should change it in their own configuration of the controllers.
- Prefixing ExternalControl to log messages (#222) Co-authored-by: kut <<kut@ubuntu.p52.ipa>>
- Updated packaged externalcontrol urcap to v1.0.2 (#208)
- added basic action node for an IO integration test
- added basic action client node for a trajectory following integration test
- Export hardware interface library in CMakeLists (#202) Usage of the driver in a combined_robot_hw requires this change, as there will otherwise be undefined symbols from hardware_interface.cpp.
- Fix variable type checking in rtde_client (#203)
- Merge pull request #193 from UniversalRobots/add_documentation_link Add actual documentation link into calibration checker output
- robot_driver: use pass_all_args to reduce verbosity. (#197) The wrapper launch files essentially only provide defaults, and the common launch file requires all arguments, so we can just forward them.
- Draft for checking URLs
- Add actual documentation link into calibration checker output The output was generated when we didn't have the final repository available. However, updating the output got lost over time...
-
Retry reading RTDE interface when unexpected messages appear during s… (#186) * Retry reading RTDE interface when unexpected messages appear during startup At startup we make a couple of requests to the RTDE interface. If the interface publishes messages by itself, a simple read() from the interface might grab another message than the answer. This change checks whether an answer to our requests was received and reports a warning otherwise while retrying.
- Merge pull request #177 from UniversalRobots/fix_robot_state_helper Make robot_state helper wait for a first status from robot before advertising the set_mode action.
- Merge pull request #179 from UniversalRobots/improve_docs Improve documentation
- replaced ros references that shouldn't be there (#178) We want to keep the pure driver part ros-independent
- Added a short section about remote-control and headless mode
- Added additional waitForService for dashboard service
- Add initialization routine for first messages
- Initialize member variables It can happen that the action gets triggered before the mode callback got triggered While this changes stops the helper from crashing when this happens, it might not be the best idea to do so as the question remains, what we should do if we haven't even received a current status from the robot. With the changes introduced inside this commit, the helper would trigger the respective state changes, which might lead to wrong requests if we aren't entirely sure what to do. One solution would be to reject goals as long as no status was received, but that would break such scenarios where you want to activate the robot automatically during startup. Another idea would be to delay actually starting the action server until we received both, robot mode and safety mode. But I am not entirely sure whether this will scale well.
- get effort feedback in joint_states (#160) Add joint currents as efforts in joint_state Co-authored-by: tonkei0361 <<tonkei0361@gmail.com>>
- Merge pull request #166 from UniversalRobots/packaget Use the package type and not the header type as template parameter for communication
- Implemented consuming for all primary types Also removed unused datatypes
- Added documentation
- Added an abstract primary consumer that can serve as a base for the visitor pattern
- Template all comm objects with the actual package type, not the header type When designing this driver we wanted to have all communication objects inherit from one common [Package]{.title-ref} class. As we want to serve two different protocols (RTDE and Primary/Secondary), we had this Package class templated with a header type which is different in the two protocols. With this design decision we could have one common communication structure (Streams, Pipelines, Producers, Parsers, Consumers) without rewriting code. As the thing distinguishing the different protocols was the Header, we decided to template all the communication objects using HeaderT. However, as I recently realized, this destroys the possibility to easily create consumers using the visitor pattern as being done in the [ur_modern_driver]{.title-ref}. With this, there would have to be one root consumer providing abstract methods for all packages available (over all interfaces). By templating the communication layer with the type of the actual package (In terms of RTDEPackage or PrimaryPackage) we can establish a visitor pattern at protocol level.
- Merge pull request #141 from isys-vision/robot_status Robot status topic via controller
- Merge pull request #2 from fmauch/robot_status set motion_possible to true only of robot can be actually moved
- Merge pull request #156 from UniversalRobots/ros_documentation Use section commands for each individual topic/service/parameter url
- Added missing doc string in launch file
- Only reflect RobotMode::RUNNING in motion_possible
- Code formatting
- set motion_possible to true only of robot can be actually moved
- Merge remote-tracking branch 'origin/robot_status' into robot_status
- Robot status: motion possible depends on error bits instead of robot mode
- Updated documentation
- Updated comments in source code
- removed temporary diff file
- Use section commands for each individual topic/service/parameter url
- Fix bug overwriting msg_.analog_input2 variable
- Remove 2xbringup.launch This launchfile was created for local testing in the past and slipped through.
- RTDE handshake verification Throw an exception if the RTDE handshake could not be established correctly.
- Fixes controller switches to only act if necessary all control communication was set to false when a switch was called. This is not correct, as we might e.g. only start a reading controller such as the FTS measurements. Second, controllers were never checked for matching joints in this HW interface which is problematic in combined-hw cases.
- Merge pull request #132 from UniversalRobots/fix_dependencies Fix package dependencies
- Robot status: fixed in_error state Co-Authored-By: Felix Exner <<felix_mauch@web.de>>
- Added a comment about controller reset
- Reset the controller also when non-blocking read is used I don't see a reason why this should not happen there, as well.
- Require a controller reset when reading data from RTDE fails Otherwise the joint_state_controller will continue publishing old joint data
- Use SPDX license identifiers. (#145) From https://spdx.org
- Reduce bitset tests for in_error state
- Robot status: in_error considers several error bits
- Use scoped enums
- Added robot status controller to all configs
- Robot status: in_error considers emergency stopped flag
- Robot/safety status bits: Replaced comments by enums
- Initialize address length for accept() call (#148)
- real_time.md improvements (#139) When unzipping the patch file xz -d patch-4.14.139-rt66.patch.xz the xz -d command extracts the file but removes the original compressed file patch-4.14.139-rt66.patch.xz file. In a later step the patch is applied using the xz file xzcat ../patch-4.14.139-rt66.patch.xz | patch -p1. As you can see this command expects the patch-4.14.139-rt66.patch.xz file to be present in the directory. However, the file is not present because of the earlier xz -d command. Adding the -k option to the xz command extracts the file but also leaves the original compressed file in place. When going through the process the process failed (during make oldconfig I think) because flex and bison were not installed. Installing these packages during the apt-get install step allows make oldconfig to execute without failing due to missing packages.
- Fix typo in ur3_bringup.launch section (#126) The description for the ur3_bringup.launch section used the term ur5
- Adjusted dependencies and formatting
- clang formatting
- Added robot_status_controller to consistent_controllers fixes problem that no messages are published if robot program is not running
- Added robot_status topic via industrial robot status controller
- Merge pull request #1 from UniversalRobots/master Update from upstream repo
- Fix all dependencies except yaml-cpp
- Add missing package dependency (#123)
- velocity_interface is now available (#120)
- Merge pull request #1 from UniversalRobots/velocity_interface Adds a velocity interface to the driver.
- Updated scaled velocity controller for all models
- increase stop deceleration Otherwise the robot would move for too long when handing back control in the middle of a motion
- join move thread at script end
- Added scaled vel traj controller Do it for all robots
- Renamed the urscript as it is now general purpose ros_control
- Use a longer speedj time to avoid oscillations in the control cycle. Otherwise speed will return to 0 before a new command gets executed.
- Cleaned up launch files
- Send control type from hardware interface TODO:
- Documentation of function members
- Using enums for control modes
- added speed controllers to all robots and added ur10e_speed launchfile
- add support for speedj
- Always go through updateRobotState function in goal callback (#99) When robot is already in the target mode (safety- and robot mode) and the set_mode action is called with requesting to start the program afterwards, the program did not start as the robot already was at the desired state. However, e.g. after a protective stop that is resolved by hand (e.g. when driving into joint limits) users expected to call that action to restart the robot again. With this change, we do the usual check whether to start the program again. This way, this action can always be used to make sure the robot is running with the program correctly.
- Merge branch 'pr/86' 'Adding non blocking read'
- Update ROS_INTERFACE.md
- Merge pull request #93 from UniversalRobots/fix_sockets_close Close all closable sockets
- Merge branch 'master' into adding_non_blocking_read
- Added a comment about explicitly calling ReverseInterface's destructor
- Close all closable sockets Sockets do not necessarily have to be in state connected when they should be closed. Before, only connected sockets got closed leading to a "socket leak" if a socket was disconnected before a close request was processed. With this fix all sockets with a valid file descriptor get closed when close() is being called.
- Parameterising gains
(#88)
- added parameters for servoj_gain and servoj_lookahead_time
- changing to ros_error_stream
- lint
- added documentation
- Merge pull request #6 from fmauch/adding_non_blocking_read Added documentation for non_blocking_read parameter
- config: use yaml anchor to reduce magic nrs. (#89) Users can still customise the publish_rate by removing the alias and specifying a custom rate. By default all controllers will publish at the controller's native rate.
- Added documentation for non_blocking_read parameter
- Update hardware_interface.cpp
- Update ur_driver.cpp
- Update hardware_interface.cpp
- lint
- lint
- add non-blocking-read for combined_robot_hw
- Merge pull request #1 from UniversalRobots/master update our master
- fixed duplicated service advertisements (#75)
- 'reverse_port' and 'script_sender_port' parameters (#57) Adds parameters for reverse_port and script_sender_port. This was implemented by \@khssnv Thanks!
- Fix spelling of "actual_main_voltage"
- robot_driver: update tracker and repo urls. Copy-pasta from ur_modern_driver.
- Merge pull request #48 from UniversalRobots/tare_sensor Added a service to zero the robot's ftsensor
- Deny taring the TF sensor when major version is < 5
- Added a service to zero the robot's ftsensor
- Changed my name in every occurence
- Fix faulty 1MBaud rate It actually had a 0 too much. We use scientific notation to make this more clearly visible in future.
- Merge pull request #49 from UniversalRobots/end_script_command Always end script commands with a newline
- Add documentation why we append a newline. Co-Authored-By: G.A. vd. Hoorn <<g.a.vanderhoorn@tudelft.nl>>
- Always end script commands with a newline Otherwise script will not be interpreted by the robot which might be counter-intuitive. Changing the behavior as such will also be the same as in the ur_modern_driver so migrating will be easier. I decided to change the function's interface to copy the string in order add a trailing 'n' if necessary.
- Merge pull request #34 from tecnalia-medical-robotics/combined_hw Support for combined robot hardware
- Use a spawner to load stopped controllers to avoid confusion about finished nodes Before, we used the controller_manager/controller_manager node to load unstarted controllers, which logged a "finished cleanly" after loading the controllers. This led to confusion as actually you don't expect something to exit when starting the driver.
- Separate ROS related sources from ur_robot_driver library
- Avoid same source files to be built and linked in several places
- Add Missing dashboard client source file
- Minimum changes to add support for combined hardware interface
- Updated ROS interface documentation
- robot_driver: remove industrial_msgs dependency. It's not actually used (yet).
- Merge branch 'robot_status' Propagating the robot's status (robot mode and safety mode) to the user so she can act accordingly (e.g. unlock after a protective stop or power on the robot if required)
- Updated documentation
- Updated documentation regarding the full headless mode
- Start robot_state_helper together with driver from launchfile
- Do not specify hw-interface's namespace explicitly
- Added ROS interface documentation for state helper
- Added code documentation
- Added functionality to automatically restart the running program after recovery
- Implemented setMode action to bring the robot into a desired mode (e.g. RUNNING)
- Added a separate helper node that will handle robot and safety mode changes
- Create a common datatypes.h file for UR enums The enumerators are used through different interfaces which is why I think it is beneficial to pull them out into a separate header file.
- Publish robot mode and safety mode from RTDE
- Merge pull request #16 from UniversalRobots/dashboard_client Add a dashboard client to the driver
- Renaming source files for DashboardClientROS
- Removed leftover code fragments
- Explicitly delete default constructor of DashboardClient and DashboardClientROS
- Added more comments
- Added ur_dashbaord_msgs to the dependency list
- Updated service documentation
- Also publish robot mode
- Added the ability to reconnect to the dashboard server
- Use a timeout for dashboard server When the timeout is exceeded, a TimoutException is thrown causing the service to fail. All dashboard services return (almost) immediately, so actions do not really make sense here. The only exception is when there is a problem with the dasboard connection, which is why we introduce the timeout. This way, service calls will not block forever, when connection to the dashboard server got lost or if the server isn't answering due to any other reason.
- Added more dashboard services
- Simplify service advertisements For advertising the services I use a combination of a MACRO and a lambda, as suggested by \@gavanderhoorn. I'm currently not completely happy with this, as I don't like using macros, but a "double" lambda seemed not to work.
- Added documentation to dashboard server
- Add a dashboard client to the hardware interface
- Moved dashboard functionality completely out of client The client itself should only be an abstraction of the actual interface which is sending strings and receiving strings as answers. All interpretation of those answers is now moved to the ROS module.
- Renamed the standalone dashboard server node
- return server response to caller
- Added first version of dashboard client
- Merge pull request #18 from UniversalRobots/fix_init_timing Fix init timing. Before pipeline overflows could happen at startup
- When no controller is active, set the current point as setpoint.
- Fixed a comment
- Merge branch 'formatting' into fix_init_timing
- Merge pull request #21 from UniversalRobots/formatting Formatting
- Removed spaces before :: How can I get clang-format-6 to do that? I only managed to get this working using clang-format 3.9
- Mark all producer methods as overrides
- Corrected typo in log message
- Start rtde client specifically
- Added more log output on errors
- Refactoring of RTDE client initialization
- Make pipeline stop- and restartable
- pass tcp_port parameter as string
- Renamed the driver to ur_robot_driver
- Contributors: Alisher A. Khassanov, Axel, Christian Jülg, Collin Avidano, Emil Ancker, Felix Exner, Felix Mauch, G.A. vd. Hoorn, Gyan Tatiya, Hongzhuo Liang, Krzysztof Stężała, Mads Holm Peters, Martin Günther, Mingu Kwon, Niels Hvid, RobertWilbrandt, Tejas Kumar Shastha, Tom Queen, Tristan Schnell, asier, axelschroth, carebare47, gavanderhoorn, giusebar, mahp, sharpe, steinmn, t-schnell, urrsk
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
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
ur_calibration |
Launch files
- launch/example_rviz.launch
- launch/ur_common.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_control.launch
- use_tool_communication — On e-Series robots tool communication can be enabled with this argument
- controller_config_file — Config file used for defining the ROS-Control controllers.
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller robot_status_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- robot_description_file — Robot description launch file.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
- launch/ur5e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur5e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur5e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur5e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur20_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur20_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur20.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur20/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur10_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur10_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur10.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur10/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur5_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur5_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur5.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur5/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur16e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur16e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur16e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur16e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur30_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur30_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur30.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur30/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur3e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur3e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur3e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur3e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur10e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur10e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur10e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur10e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur3_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur3_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur3.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur3/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur_control.launch
-
- debug [default: false] — If set to true, will start the driver inside gdb
- use_tool_communication — On e-Series robots tool communication can be enabled with this argument
- controller_config_file — Config file used for defining the ROS-Control controllers.
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. Pass the same config file that is passed to the robot_description.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller force_torque_sensor_controller robot_status_controller]
- stopped_controllers [default: joint_group_vel_controller forward_joint_traj_controller forward_cartesian_traj_controller]
- urscript_file [default: $(find ur_client_library)/resources/external_control.urscript] — Path to URScript that will be sent to the robot and that forms the main control program.
- rtde_output_recipe_file [default: $(find ur_robot_driver)/resources/rtde_output_recipe.txt] — Recipe file used for the RTDE-outputs. Only change this if you know what you're doing.
- rtde_input_recipe_file [default: $(find ur_robot_driver)/resources/rtde_input_recipe.txt] — Recipe file used for the RTDE-inputs. Only change this if you know what you're doing.
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- servoj_gain [default: 2000] — Specify gain for servoing to position in joint space. A higher gain can sharpen the trajectory.
- servoj_lookahead_time [default: 0.03] — Specify lookahead time for servoing to position in joint space. A longer lookahead time can smooth the trajectory.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour_bringup ur_calibration ur_controllers ur_dashboard_msgs ur_moveit_config ur_robot_driver |
|
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
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.
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.
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
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour_bringup ur_calibration ur_controllers ur_dashboard_msgs ur_description ur_moveit_config ur_robot_driver |
|
Package Summary
Tags | No category tags. |
Version | 2.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git |
VCS Type | git |
VCS Version | foxy |
Last Updated | 2023-04-17 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Marvin Große Besselmann
- Lovro Ivanov
- Denis Stogl
- Andy Zelenak
Authors
- Thomas Timm Andersen
- Simon Rasmussen
- Felix Exner
- Lea Steffen
- Tristan Schnell
ur_robot_driver
This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.
ROS-API
The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.
Technical details
The following image shows a very coarse overview of the driver’s architecture.
Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.
Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.
To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.
The URScript that will be running on the robot is requested by the External Control program node
from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file
to
select a different program than the default one that will be sent as a response to a program
request.
Custom script snippets can be sent to the robot on a topic basis. By default, they will
interrupt other programs (such as the one controlling the robot). For a certain subset of functions,
it is however possible to send them as secondary programs. See UR
documentation
on details.
Note to e-Series users:
The robot won’t accept script code from a remote source unless the robot is put into
remote_control-mode. However, if put into remote_control-mode, the program containing the
External Control program node can’t be started from the panel.
For this purpose, please use the dashboard services to load, start and stop the main program
running on the robot. See the ROS-API documentation for details on the
dashboard services.
For using the tool communication interface on e-Series robots, a socat
script is prepared to
forward the robot’s tool communication interface to a local device on the ROS PC. See the tool
communication setup guide for details.
This driver is using ROS-Control for any control statements.
Therefore, it can be used with all position-based controllers available in ROS-Control. However, we
recommend using the controllers from the ur_controllers
package. See it’s
documentation for details. Note: Speed scaling support will only be
available using the controllers from ur_controllers
A note about modes
The term mode is used in different meanings inside this driver.
Remote control mode
On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.
The remote control mode is needed for many aspects of this driver such as
- headless mode (see below)
- sending script code to the robot
- many dashboard functionalities such as
- restarting the robot after protective / EM-Stop
- powering on the robot and do brake release
- loading and starting programs
- the
set_mode
action, as it uses the dashboard calls mentioned above
Headless mode
Inside this driver, there’s the headless mode, which can be either enabled or not. When the
headless mode is activated, required script
code for external control will be sent to the robot directly when the driver starts. As soon as
other script code is sent to the robot either by sending it directly through this driver or by
pressing any motion-related button on the teach pendant, the script will be overwritten by this
action and has to be restarted by using the
resend_robot_program service. If this
is necessary, you will see the output Connection to robot dropped, waiting for new connection.
from the driver. Note that pressing “play” on the TP won’t start the external control again, but
whatever program is currently loaded on the controller. This mode doesn’t require the “External
Control” URCap being installed on the robot as the program is sent to the robot directly. However,
we recommend to use the non-headless mode and leverage the set_mode
action to start program
execution without the teach pendant. The headless mode might be removed in future releases.
Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.
controller_stopper
A small helper node that stops and restarts ROS controllers based on a boolean status topic. When the status goes to false
, all running controllers except a set of predefined consistent_controllers gets stopped. If status returns to true
the stopped controllers are restarted.
This is done by Subscribing to a robot’s running state topic. Ideally this topic is latched and only publishes on changes. However, this node only reacts on state changes, so a state published each cycle would also be fine.
2.0.2 (2022-12-07)
2.0.1 (2022-08-01)
- added ur_bringup to test_depend of ur_robot_driver (#454)
- Contributors: Felix Exner
2.0.0 (2022-06-20)
- Updated package dependencies (#399)
- Foxy controller stopper (#324)
- Backport: Change driver constructor and change calibration check (#282) (#302)
- Moved registering publisher and service to on_active (#151)
- Converted io_test and switch_on_test to ROS2 (#124)
- Added loghandler to handle log messages from the Client Library with … (#126)
- Removed dashboard client from hardware interface
- [WIP] Updated feature list (#102)
- Moved Async check out of script running check (#112)
- Fix gpio controller (#103)
- Fixed speed slider service call (#100)
- Adding missing backslash and only setting workdir once (#108)
- Added dockerfile for the driver (#105)
- Using official Universal Robot Client Library (#101)
- Reintegrating missing ur_client_library dependency since the break the building process (#97)
- Fix readme hardware setup (#91)
- Fix move to home bug (#92)
- Using modern python
- Some intermediate commit
- Remove obsolete and unused files and packages. (#80)
- Review CI by correcting the configurations (#71)
- Add support for gpios, update MoveIt and ros2_control launching (#66)
- Quickfix against move home bug
- Added missing initialization
- Use GitHub Actions, use pre-commit formatting (#56)
- Put dashboard services into corresponding namespace
- Start dashboard client from within the hardware interface
- Added try catch blocks for service calls
- Removed repeated declaration of timeout parameter which lead to connection crash
- Removed static service name in which all auto generated services where mapped
- Removed unused variable
- Fixed clang-format issue
- Removed all robot status stuff
- Exchanged hardcoded value for RobotState msgs enum
- Removed currently unused controller state variables
- Added placeholder for industrial_robot_status_interface
- Fixed clang issues
- Added checks for internal robot state machine
- Only load speed scaling interface
- Changed state interface to combined speed scaling factor
- Added missing formatting in hardware interface
- Initial version of the speed_scaling_state_controller Controller is base on the current joint_state_controller of ros2 control
- Fix clang tidy in multiple pkgs.
- Clang tidy fix.
- Update force torque state controller.
- Prepare for testing.
- Fix decision breaker for position control. Make decision effect instantaneous.
- Use only position interface.
- Update hardware interface for ROS2 (#8)
- Update the dashboard client for ROS2 (#5)
- Hardware interface framework (#3)
- Add XML schema to all
package.xml
files Better enableament_xmllint
to check validity. - Silence
ament_lint_cmake
errors - Update packaging for ROS2
- Update package.xml files so
ros2 pkg list
shows all pkgs - Clean out ur_robot_driver for initial ROS2 compilation
- Compile ur_dashboard_msgs for ROS2
- Delete all launch/config files with no UR5 relation
- Initial work toward compiling ur_robot_driver
- 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, 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
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
ur_calibration |
Launch files
Messages
Services
Plugins
Recent questions tagged ur_robot_driver at Robotics Stack Exchange
ur_robot_driver package from ur_robot_driver repour_calibration ur_dashboard_msgs ur_robot_driver |
|
Package Summary
Tags | No category tags. |
Version | 2.1.5 |
License | Apache-2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-10-23 |
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
Additional Links
Maintainers
- Felix Exner
Authors
- Thomas Timm Andersen
- Simon Rasmussen
- Felix Exner
- Lea Steffen
- Tristan Schnell
ur_robot_driver
This package contains the actual driver for UR robots. It is part of the universal_robots_driver repository and requires other packages from that repository. Also, see the main repository’s README for information on how to install and startup this driver.
ROS-API
The ROS API is documented in a standalone document. It is auto-generated using catkin_doc.
Technical details
The following image shows a very coarse overview of the driver’s architecture.
Upon connection to the primary interface the robot sends version and calibration information which is consumed by the calibration_check. If the calibration reported by the robot doesn’t match the one configured (See calibration guide) an error will be printed to Roslog.
Real-time data from the robot is read through the RTDE interface. This is done automatically as soon as a connection to the robot could be established. Thus joint states and IO data will be immediately available.
To actually control the robot, a program node from the External Control URCap must be running on the robot interpreting commands sent from an external source. When this program is not running, no controllers moving the robot around will be available, which is handled by the controller_stopper. Please see the initial setup guide on how to install and start this on the robot.
The URScript that will be running on the robot is requested by the External Control program node
from the remote ROS PC. The robot ur_control.launch file has a parameter called urscript_file
to
select a different program than the default one that will be sent as a response to a program
request.
Custom script snippets can be sent to the robot on a topic basis. By default, they will
interrupt other programs (such as the one controlling the robot). For a certain subset of functions,
it is however possible to send them as secondary programs. See UR
documentation
on details.
Note to e-Series users:
The robot won’t accept script code from a remote source unless the robot is put into
remote_control-mode. However, if put into remote_control-mode, the program containing the
External Control program node can’t be started from the panel.
For this purpose, please use the dashboard services to load, start and stop the main program
running on the robot. See the ROS-API documentation for details on the
dashboard services.
For using the tool communication interface on e-Series robots, a socat
script is prepared to
forward the robot’s tool communication interface to a local device on the ROS PC. See the tool
communication setup guide for details.
This driver is using ROS-Control for any control statements.
Therefore, it can be used with all position-based controllers available in ROS-Control. However, we
recommend using the controllers from the scaled_trajectory_controller
package. See its
documentation for details. Note: Speed scaling support will only be
available using the controllers from scaled_trajectory_controller
A note about modes
The term mode is used in different meanings inside this driver.
Remote control mode
On the e-series the robot itself can operate in different command modes: It can be either in local control mode where the teach pendant is the single point of command or in remote control mode, where motions from the TP, starting & loading programs from the TP activating the freedrive mode are blocked. Note that the remote control mode has to be explicitly enabled in the robot’s settings under Settings -> System -> Remote Control. See the robot’s manual for details.
The remote control mode is needed for many aspects of this driver such as
- headless mode (see below)
- sending script code to the robot
- many dashboard functionalities such as
- restarting the robot after protective / EM-Stop
- powering on the robot and do brake release
- loading and starting programs
- the
set_mode
action, as it uses the dashboard calls mentioned above
Headless mode
Inside this driver, there’s the headless mode, which can be either enabled or not. When the
headless mode is activated, required script
code for external control will be sent to the robot directly when the driver starts. As soon as
other script code is sent to the robot either by sending it directly through this driver or by
pressing any motion-related button on the teach pendant, the script will be overwritten by this
action and has to be restarted by using the
resend_robot_program service. If this
is necessary, you will see the output Connection to robot dropped, waiting for new connection.
from the driver. Note that pressing “play” on the TP won’t start the external control again, but
whatever program is currently loaded on the controller. This mode doesn’t require the “External
Control” URCap being installed on the robot as the program is sent to the robot directly. However,
we recommend to use the non-headless mode and leverage the set_mode
action to start program
execution without the teach pendant. The headless mode might be removed in future releases.
Note for the e-Series: In order to leverage the headless mode on the e-Series the robot must be in remote_control_mode as explained above.
2.1.5 (2024-06-17)
2.1.4 (2024-04-08)
- Added support for UR30 (#688)
- Added arg to enable/disable launch of ursim (#679)
- Contributors: Vincenzo Di Pentima, mahp
2.1.3 (2023-12-18)
- Added support for UR20 (#659)
- Update documentation (#655)
- Bump required cmake version to fix the CMake warning about CMP0048
- Change initializer list ordering to match declaration in header file
- Implemented spline interpolation in joint space (#543)
- Use dedicated build for noetic main (#640)
- fix typo and use ros logging
- Contributors: Felix Exner, Felix Exner (fexner), Mads Holm Peters, RobertWilbrandt, Simon Schmeisser
2.1.2 (2023-01-23)
2.1.1 (2023-01-23)
- Move controller_stopper to ur_robot_driver Since a standalone package with that name was declined during the release process, we decided to move the controller_stopper package over to the driver.
- Update minimal required polyscope version in docs
- Contributors: Felix Exner
2.1.0 (2022-12-08)
- delete ros_control.urscript (#593) We've been using the script from the library for a while now
- Use the RobotMode message inside the SetMode action (#381) This way we can make use of the predefined constants inside the RobotMode message.
- Make several members of hw_interface atomic, for thread safety (#448) Co-authored-by: Felix Exner (fexner) <<exner@fzi.de>>
- Updated transformForceTorque to handle wheter it is a cb3 or an e-Series robot (#566) The force torque is returned at the tool flange on e-series robots and at the tcp for CB3, this is now handled correctly, so that all force/torque measurements will be relative to the active TCP
- Updated set payload, zero ftsensor and set tool voltage to use the
ur…
(#567)
* Updated set payload, zero ftsensor and set tool voltage to use
the urdriver This makes it possible to call the commands when the
robot is in local control if the external control script is running
on the robot.
- Update ROS interface docs
* Fix argument passing in include instruction Co-authored-by: Miguel Prada <<miguel.prada@tecnalia.com>>
- Remove URCap installation files from driver and replace references (#580) Link to the respective Github release pages instead.
- Drop old C++ compiler flags (#577) Co-authored-by: Jochen Sprickerhof <<git@jochen.sprickerhof.de>>
- Fix MoveIt! command in Example (#575)
- Allow empty stopped_controllers argument. (#572)
- Dashboard service to query whether the robot is in remote control
(#561)
- new dashboard msg to check remote control
- test_move: Load controller only if it is not already loaded (#552)
- Add optional topic rename for speed scaling factor
(#544)
- Add optional topic rename for speed scaling factor
- Update ROS_INTERFACE.md
- Wait for controller action server in test_move. (#535)
- Minor update to display robot_ip parameter without _ (#521)
- Make hw_interface-node required-argument optional (#450) The UR-robot is only one part of our roslaunch-setup, so I would like to be able to have the rest of the system (non-UR) continue to run even if the ur_hardware_interface-node dies.
- Fix test move python3
(#492)
* make test_move work with python2 and python3 As suggested in
http://wiki.ros.org/UsingPython3/SourceCodeChanges#Changing_shebangs
- Use a version-independent shebang
- Use catkin_install_python to install the test_move script
- Update feature list (#490) Some minor formatting and reducing the wrench features to one features to make it more clear.
- Contributors: Adam Heins, AndyZe, Felix Exner, Felix Exner (fexner), Johnson, Mads Holm Peters, Michael Görner, Mingu Kwon, steinmn, teapfw, williamnavaraj
2.0.0 (2021-09-07)
- Merge pull request
#408
from UniversalRobots/staging Adds new features to the driver:
- Cartesian position-based control
- Cartesian twist-based control
- Trajectory forwarding for execution on robot
- More documentation and examples
- Merge branch 'master' into staging
- Merge pull request #437 from UniversalRobots/test_move Add test_move script
- Move test_move files into one
- Added a full guide for starting with the driver
- Add more documentation to new features
(#423)
- Added a description for all controllers
- Link repositories of URCap repos in feature list
- Added note about blending with pass_through_controllers
* Apply suggestions from code review Thanks \@stefanscherzinger Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>> Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- Add missing license header to tool_communication
- Added Cartesian test_move script
- Added choice of trajectory controller and require confirmation
- Fix default controller in common launchfile As mentioned in #206 this lists a non-existing controller
- Added test_move script
- Added log handler for handling log messages from client library with
…
(#398)
- Added log handler for handling log messages from client library with ROS logging
- Merge pull request #420 from fmauch/update_feature_list Update feature list
- Added new control modes
- Removed comparison to ur_modern driver no point in doing this anymore.
- Updated ROS2 notice
- Added "On behalf of Universal Robots A/S" notice (#416) Removed copyright notice from LICENSE file, as the license file itself isn't copyrighted by FZI
- Merge pull request #413 from fmauch/cartesian_control Cartesian control
- Fix wait_for_server calls Rospy action_client.wait_for_server returns false instead of raising an exception
- Removed unneeded debug output
- Made twist controller an exec_depend
- Added Test for twist interface (#2)
- Added test for pose based cartesian trajectory execution
- added tcp pose of robot to cartesian pose interface read
- Adapt to new controller namespaces The namespaces have been moved upstream and we shall adapt to that
- added interface for cartesian pose streaming
- Added new controllers to controller configuration
- added twist interface for cartesian velocity control of the robot co-authored by Tristan Schnell <<schnell@fzi.de>>
- Merge pull request #396 from fmauch/trajectory_interface Adds an interface for trajectory forwarding Complete trajectories (joint-based and Cartesian) can be forwarded to the robot controller for interpolation and execution.
- Added test for pose based cartesian trajectory execution
- Add trajectory_port to hw-interface config
- Fix execution states
- Adapt to pass_though_controllers refactoring
- Register DoneCallback to trajectory passthrough
- added comment about angle representation Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- changed trajectory action parameter for trajectory control messages to enum
- added feedback output to cartesian and joint-based trajectory forwarding
- controller config and launchfile updates for pass-through controllers
- added interface for cartesian trajectory forwarding
- added interfaces for joint trajectory forwarding controller
- Call calibration check in ROS driver (#366) Mandatory check in the client library has been deprecated.
- add reverse_ip argument (#412) Co-authored-by: JS00000 <<winyangyuxin22@hotmail.com>>
- Use urscript file from client library by default
- Merge pull request #400 from fmauch/external_scaling_interface Use speed scaling interface from external package and remove ur_contr…
- Update ur_robot_driver/README.md Co-authored-by: Stefan Scherzinger <<scherzin@fzi.de>>
- use the changed namespace of the scaling interface
- Use speed scaling interface from external package and remove ur_controllers
- Add partner logos to README (#393)
- Merge pull request #389 from fmauch/run_trajectory_test rename test method to be actually run by unittest
- power cycle robot before trajectory test to make sure the controller is running
- rename test method to be actually run by unittest
- Fix heading level for set_payload service
- Fixes reading has_realtime property Reading this from system may end up in undefined behavior. (https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/issues/306)
- ensure extractToolPose always returns a valid transform (#372) Quaternion() returns 0,0,0,0 which leads to an invalid transform.
- Merge pull request #97 from fmauch/description_dev Use new ur_description_model
- Merge pull request #382 from fmauch/trajectory_tests Trajectory tests
- Run all integration tests in one test
- Make trajectory test monolithic Otherwise the trajectory tests might be running in parallel.
- Added note about the kinematics_config file
- Adapted to changed payload service
- Removed double yaml
- Updated default kinematics filename and removed ur_e_description
- Adapt to renamed description launchfiles
- Added ur16 support
- Use new description package with unified xacro arguments
- add arg for servoj_gain servoj_lookahead_time in
ur_control.launch
(#354)
- add arg for servoj_gain servoj_lookahead_time in ur_control.launch
- add default
- Added robot_ip and robot_type argument for integrations test
- Added headless mode to the feature list
- Remove manual keepalive message from script This is actually not properly checked by the driver, as keepalive signals won't be sent when the program is paused.
- Merge pull request #342 from fmauch/urcap_1.0.5 Use external_control urcap version 1.0.5
- Added header and control loop definitions.
- Update external_control urcap to version 1.0.5
- Replace two logging macros with ROS logging macros. (#330) Inside the driver we want to use plain ROS logging instead of the library's logging macros.
- Use catkin_install_python macro for python files (#318) This macro works just like the normal [install]{.title-ref} macro, but it also automatically changes the shebang line in the python file to [python2]{.title-ref} or [python3]{.title-ref}, depending which version is used. See: http://wiki.ros.org/UsingPython3/SourceCodeChanges#Changing_shebangs What this means is that this package can be used with Python3 without any further changes, for example in ROS Noetic.
-
Wait for reverse socket response (#288) * Remove timeout and wait for response on reverse socket read Co-authored-by: Tom Queen <<tom_q@hotmail.co.uk>>
- Merge pull request #266 from UniversalRobots/separation Use ur_client_library package for building this driver
- Merge pull request #270 from UniversalRobots/ur16e Ur16e
- Replaced image by a version containing all 4 e-Series robots
- Add launchfile for ur16e
- Updated externalcontrol to v1.0.3
(#245)
- Updated externalcontrol to v1.0.3
- Updated externalcontrol to v1.0.4
- remove check_urls job This is done in the upstream library now
- Removed rtde_client test That moved to the library and makes more sense there.
- Moved files out of redundant "ros" subfolder Before, we had library compnents in other subfolders, but they got moved out.
- Use namespace urcl instead of ur_driver
- Renamed library
- Make tests use separate library, as well. Ultimately, this test should be moved to the library itself.
- Made library fully independent
- use ur_lib from separate package
- Disable trajectory test for now (#264) The trajectory test seems to not work anymore since a couple of weeks. Running those locally (also with a ursim running inside a docker container) works perfectly fine, but running it inside the github action not. As this is blocking many merges currently, I suggest to disable this temporarily while opening an issue to fix it.
- Use Robot_hw_nh node handle for joints. (#227) modified hardware interface to look for joints parameter under the robot_hw node handle
- Correct name of e-series in README
- Specify container IP addresses for testing purposes Before, the default Docker network in the range 172.17.0.0/16 was used. Since a specific IP cannot be chosen/guaranteed within this range, a network is now created with range 192.168.0.0/16, which allows for assigning specific IPs to the containers. Co-authored-by: Emil Vincent Ancker <<emva@universal-robots.com>>
- Added a service to setup the active payload
(#50)
- Added a service to setup the active payload
- Add prefix to wrench hw interface (#217) Use a parameter to set the wrench name This name will be picked up by the [force_torque_sensor_controller]{.title-ref} in order to name the respective topic. Co-authored-by: carebare47 <<tom@shadowrobot.com>>
- Merge pull request #209 from fmauch/testing_scripts Add integration tests for automated testing
- Install resources directory (#225)
- Tests: Update the name of the trajectory controller
- Merge remote-tracking branch 'origin/master' into testing_scripts
- Install resources directory
- Add a gtest for RTDE client only
- Throw an exception when the recipe file cannot be read
- Added a running member to actually join the RTDEWriter thread
- Use a remap for the controller topic
- Use a test_depend for rostest
- replaced legacy package name
- specifically initialize robot before trajectory test
- Use enum identifier instead of hard coded value
- Added test for explicitly scaled trajectory execution
- Add a failing test I want to see whether the tests actually fail
- Moved everything to rostests Run docker ursim externally in GH action
- Renamed _traj_controllers to_joint_traj_controller (#214)
- driver: use default rate for JTC goal monitor. (#221) The old values overrode the default of 20 Hz, which is low and leads to a worst-case delay of approx 100 ms between a goal state change and action clients being notified of that change. This restores the rate to the default of 20 Hz. If a higher update-rate would be desirable for a particular application, users should change it in their own configuration of the controllers.
- Prefixing ExternalControl to log messages (#222) Co-authored-by: kut <<kut@ubuntu.p52.ipa>>
- Updated packaged externalcontrol urcap to v1.0.2 (#208)
- added basic action node for an IO integration test
- added basic action client node for a trajectory following integration test
- Export hardware interface library in CMakeLists (#202) Usage of the driver in a combined_robot_hw requires this change, as there will otherwise be undefined symbols from hardware_interface.cpp.
- Fix variable type checking in rtde_client (#203)
- Merge pull request #193 from UniversalRobots/add_documentation_link Add actual documentation link into calibration checker output
- robot_driver: use pass_all_args to reduce verbosity. (#197) The wrapper launch files essentially only provide defaults, and the common launch file requires all arguments, so we can just forward them.
- Draft for checking URLs
- Add actual documentation link into calibration checker output The output was generated when we didn't have the final repository available. However, updating the output got lost over time...
-
Retry reading RTDE interface when unexpected messages appear during s… (#186) * Retry reading RTDE interface when unexpected messages appear during startup At startup we make a couple of requests to the RTDE interface. If the interface publishes messages by itself, a simple read() from the interface might grab another message than the answer. This change checks whether an answer to our requests was received and reports a warning otherwise while retrying.
- Merge pull request #177 from UniversalRobots/fix_robot_state_helper Make robot_state helper wait for a first status from robot before advertising the set_mode action.
- Merge pull request #179 from UniversalRobots/improve_docs Improve documentation
- replaced ros references that shouldn't be there (#178) We want to keep the pure driver part ros-independent
- Added a short section about remote-control and headless mode
- Added additional waitForService for dashboard service
- Add initialization routine for first messages
- Initialize member variables It can happen that the action gets triggered before the mode callback got triggered While this changes stops the helper from crashing when this happens, it might not be the best idea to do so as the question remains, what we should do if we haven't even received a current status from the robot. With the changes introduced inside this commit, the helper would trigger the respective state changes, which might lead to wrong requests if we aren't entirely sure what to do. One solution would be to reject goals as long as no status was received, but that would break such scenarios where you want to activate the robot automatically during startup. Another idea would be to delay actually starting the action server until we received both, robot mode and safety mode. But I am not entirely sure whether this will scale well.
- get effort feedback in joint_states (#160) Add joint currents as efforts in joint_state Co-authored-by: tonkei0361 <<tonkei0361@gmail.com>>
- Merge pull request #166 from UniversalRobots/packaget Use the package type and not the header type as template parameter for communication
- Implemented consuming for all primary types Also removed unused datatypes
- Added documentation
- Added an abstract primary consumer that can serve as a base for the visitor pattern
- Template all comm objects with the actual package type, not the header type When designing this driver we wanted to have all communication objects inherit from one common [Package]{.title-ref} class. As we want to serve two different protocols (RTDE and Primary/Secondary), we had this Package class templated with a header type which is different in the two protocols. With this design decision we could have one common communication structure (Streams, Pipelines, Producers, Parsers, Consumers) without rewriting code. As the thing distinguishing the different protocols was the Header, we decided to template all the communication objects using HeaderT. However, as I recently realized, this destroys the possibility to easily create consumers using the visitor pattern as being done in the [ur_modern_driver]{.title-ref}. With this, there would have to be one root consumer providing abstract methods for all packages available (over all interfaces). By templating the communication layer with the type of the actual package (In terms of RTDEPackage or PrimaryPackage) we can establish a visitor pattern at protocol level.
- Merge pull request #141 from isys-vision/robot_status Robot status topic via controller
- Merge pull request #2 from fmauch/robot_status set motion_possible to true only of robot can be actually moved
- Merge pull request #156 from UniversalRobots/ros_documentation Use section commands for each individual topic/service/parameter url
- Added missing doc string in launch file
- Only reflect RobotMode::RUNNING in motion_possible
- Code formatting
- set motion_possible to true only of robot can be actually moved
- Merge remote-tracking branch 'origin/robot_status' into robot_status
- Robot status: motion possible depends on error bits instead of robot mode
- Updated documentation
- Updated comments in source code
- removed temporary diff file
- Use section commands for each individual topic/service/parameter url
- Fix bug overwriting msg_.analog_input2 variable
- Remove 2xbringup.launch This launchfile was created for local testing in the past and slipped through.
- RTDE handshake verification Throw an exception if the RTDE handshake could not be established correctly.
- Fixes controller switches to only act if necessary all control communication was set to false when a switch was called. This is not correct, as we might e.g. only start a reading controller such as the FTS measurements. Second, controllers were never checked for matching joints in this HW interface which is problematic in combined-hw cases.
- Merge pull request #132 from UniversalRobots/fix_dependencies Fix package dependencies
- Robot status: fixed in_error state Co-Authored-By: Felix Exner <<felix_mauch@web.de>>
- Added a comment about controller reset
- Reset the controller also when non-blocking read is used I don't see a reason why this should not happen there, as well.
- Require a controller reset when reading data from RTDE fails Otherwise the joint_state_controller will continue publishing old joint data
- Use SPDX license identifiers. (#145) From https://spdx.org
- Reduce bitset tests for in_error state
- Robot status: in_error considers several error bits
- Use scoped enums
- Added robot status controller to all configs
- Robot status: in_error considers emergency stopped flag
- Robot/safety status bits: Replaced comments by enums
- Initialize address length for accept() call (#148)
- real_time.md improvements (#139) When unzipping the patch file xz -d patch-4.14.139-rt66.patch.xz the xz -d command extracts the file but removes the original compressed file patch-4.14.139-rt66.patch.xz file. In a later step the patch is applied using the xz file xzcat ../patch-4.14.139-rt66.patch.xz | patch -p1. As you can see this command expects the patch-4.14.139-rt66.patch.xz file to be present in the directory. However, the file is not present because of the earlier xz -d command. Adding the -k option to the xz command extracts the file but also leaves the original compressed file in place. When going through the process the process failed (during make oldconfig I think) because flex and bison were not installed. Installing these packages during the apt-get install step allows make oldconfig to execute without failing due to missing packages.
- Fix typo in ur3_bringup.launch section (#126) The description for the ur3_bringup.launch section used the term ur5
- Adjusted dependencies and formatting
- clang formatting
- Added robot_status_controller to consistent_controllers fixes problem that no messages are published if robot program is not running
- Added robot_status topic via industrial robot status controller
- Merge pull request #1 from UniversalRobots/master Update from upstream repo
- Fix all dependencies except yaml-cpp
- Add missing package dependency (#123)
- velocity_interface is now available (#120)
- Merge pull request #1 from UniversalRobots/velocity_interface Adds a velocity interface to the driver.
- Updated scaled velocity controller for all models
- increase stop deceleration Otherwise the robot would move for too long when handing back control in the middle of a motion
- join move thread at script end
- Added scaled vel traj controller Do it for all robots
- Renamed the urscript as it is now general purpose ros_control
- Use a longer speedj time to avoid oscillations in the control cycle. Otherwise speed will return to 0 before a new command gets executed.
- Cleaned up launch files
- Send control type from hardware interface TODO:
- Documentation of function members
- Using enums for control modes
- added speed controllers to all robots and added ur10e_speed launchfile
- add support for speedj
- Always go through updateRobotState function in goal callback (#99) When robot is already in the target mode (safety- and robot mode) and the set_mode action is called with requesting to start the program afterwards, the program did not start as the robot already was at the desired state. However, e.g. after a protective stop that is resolved by hand (e.g. when driving into joint limits) users expected to call that action to restart the robot again. With this change, we do the usual check whether to start the program again. This way, this action can always be used to make sure the robot is running with the program correctly.
- Merge branch 'pr/86' 'Adding non blocking read'
- Update ROS_INTERFACE.md
- Merge pull request #93 from UniversalRobots/fix_sockets_close Close all closable sockets
- Merge branch 'master' into adding_non_blocking_read
- Added a comment about explicitly calling ReverseInterface's destructor
- Close all closable sockets Sockets do not necessarily have to be in state connected when they should be closed. Before, only connected sockets got closed leading to a "socket leak" if a socket was disconnected before a close request was processed. With this fix all sockets with a valid file descriptor get closed when close() is being called.
- Parameterising gains
(#88)
- added parameters for servoj_gain and servoj_lookahead_time
- changing to ros_error_stream
- lint
- added documentation
- Merge pull request #6 from fmauch/adding_non_blocking_read Added documentation for non_blocking_read parameter
- config: use yaml anchor to reduce magic nrs. (#89) Users can still customise the publish_rate by removing the alias and specifying a custom rate. By default all controllers will publish at the controller's native rate.
- Added documentation for non_blocking_read parameter
- Update hardware_interface.cpp
- Update ur_driver.cpp
- Update hardware_interface.cpp
- lint
- lint
- add non-blocking-read for combined_robot_hw
- Merge pull request #1 from UniversalRobots/master update our master
- fixed duplicated service advertisements (#75)
- 'reverse_port' and 'script_sender_port' parameters (#57) Adds parameters for reverse_port and script_sender_port. This was implemented by \@khssnv Thanks!
- Fix spelling of "actual_main_voltage"
- robot_driver: update tracker and repo urls. Copy-pasta from ur_modern_driver.
- Merge pull request #48 from UniversalRobots/tare_sensor Added a service to zero the robot's ftsensor
- Deny taring the TF sensor when major version is < 5
- Added a service to zero the robot's ftsensor
- Changed my name in every occurence
- Fix faulty 1MBaud rate It actually had a 0 too much. We use scientific notation to make this more clearly visible in future.
- Merge pull request #49 from UniversalRobots/end_script_command Always end script commands with a newline
- Add documentation why we append a newline. Co-Authored-By: G.A. vd. Hoorn <<g.a.vanderhoorn@tudelft.nl>>
- Always end script commands with a newline Otherwise script will not be interpreted by the robot which might be counter-intuitive. Changing the behavior as such will also be the same as in the ur_modern_driver so migrating will be easier. I decided to change the function's interface to copy the string in order add a trailing 'n' if necessary.
- Merge pull request #34 from tecnalia-medical-robotics/combined_hw Support for combined robot hardware
- Use a spawner to load stopped controllers to avoid confusion about finished nodes Before, we used the controller_manager/controller_manager node to load unstarted controllers, which logged a "finished cleanly" after loading the controllers. This led to confusion as actually you don't expect something to exit when starting the driver.
- Separate ROS related sources from ur_robot_driver library
- Avoid same source files to be built and linked in several places
- Add Missing dashboard client source file
- Minimum changes to add support for combined hardware interface
- Updated ROS interface documentation
- robot_driver: remove industrial_msgs dependency. It's not actually used (yet).
- Merge branch 'robot_status' Propagating the robot's status (robot mode and safety mode) to the user so she can act accordingly (e.g. unlock after a protective stop or power on the robot if required)
- Updated documentation
- Updated documentation regarding the full headless mode
- Start robot_state_helper together with driver from launchfile
- Do not specify hw-interface's namespace explicitly
- Added ROS interface documentation for state helper
- Added code documentation
- Added functionality to automatically restart the running program after recovery
- Implemented setMode action to bring the robot into a desired mode (e.g. RUNNING)
- Added a separate helper node that will handle robot and safety mode changes
- Create a common datatypes.h file for UR enums The enumerators are used through different interfaces which is why I think it is beneficial to pull them out into a separate header file.
- Publish robot mode and safety mode from RTDE
- Merge pull request #16 from UniversalRobots/dashboard_client Add a dashboard client to the driver
- Renaming source files for DashboardClientROS
- Removed leftover code fragments
- Explicitly delete default constructor of DashboardClient and DashboardClientROS
- Added more comments
- Added ur_dashbaord_msgs to the dependency list
- Updated service documentation
- Also publish robot mode
- Added the ability to reconnect to the dashboard server
- Use a timeout for dashboard server When the timeout is exceeded, a TimoutException is thrown causing the service to fail. All dashboard services return (almost) immediately, so actions do not really make sense here. The only exception is when there is a problem with the dasboard connection, which is why we introduce the timeout. This way, service calls will not block forever, when connection to the dashboard server got lost or if the server isn't answering due to any other reason.
- Added more dashboard services
- Simplify service advertisements For advertising the services I use a combination of a MACRO and a lambda, as suggested by \@gavanderhoorn. I'm currently not completely happy with this, as I don't like using macros, but a "double" lambda seemed not to work.
- Added documentation to dashboard server
- Add a dashboard client to the hardware interface
- Moved dashboard functionality completely out of client The client itself should only be an abstraction of the actual interface which is sending strings and receiving strings as answers. All interpretation of those answers is now moved to the ROS module.
- Renamed the standalone dashboard server node
- return server response to caller
- Added first version of dashboard client
- Merge pull request #18 from UniversalRobots/fix_init_timing Fix init timing. Before pipeline overflows could happen at startup
- When no controller is active, set the current point as setpoint.
- Fixed a comment
- Merge branch 'formatting' into fix_init_timing
- Merge pull request #21 from UniversalRobots/formatting Formatting
- Removed spaces before :: How can I get clang-format-6 to do that? I only managed to get this working using clang-format 3.9
- Mark all producer methods as overrides
- Corrected typo in log message
- Start rtde client specifically
- Added more log output on errors
- Refactoring of RTDE client initialization
- Make pipeline stop- and restartable
- pass tcp_port parameter as string
- Renamed the driver to ur_robot_driver
- Contributors: Alisher A. Khassanov, Axel, Christian Jülg, Collin Avidano, Emil Ancker, Felix Exner, Felix Mauch, G.A. vd. Hoorn, Gyan Tatiya, Hongzhuo Liang, Krzysztof Stężała, Mads Holm Peters, Martin Günther, Mingu Kwon, Niels Hvid, RobertWilbrandt, Tejas Kumar Shastha, Tom Queen, Tristan Schnell, asier, axelschroth, carebare47, gavanderhoorn, giusebar, mahp, sharpe, steinmn, t-schnell, urrsk
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
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
ur_calibration |
Launch files
- launch/example_rviz.launch
- launch/ur_common.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_control.launch
- use_tool_communication — On e-Series robots tool communication can be enabled with this argument
- controller_config_file — Config file used for defining the ROS-Control controllers.
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller robot_status_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- robot_description_file — Robot description launch file.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used
- launch/ur5e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur5e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur5e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur5e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur20_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur20_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur20.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur20/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur10_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur10_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur10.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur10/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur5_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur5_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur5.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur5/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur16e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur16e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur16e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur16e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur30_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur30_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur30.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur30/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur3e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur3e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur3e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur3e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur10e_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur10e_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur10e.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur10e/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- use_tool_communication [default: false] — On e-Series robots tool communication can be enabled with this argument
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur3_bringup.launch
-
- debug [default: false] — Debug flag that will get passed on to ur_common.launch
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller speed_scaling_state_controller force_torque_sensor_controller] — Controllers that are activated by default.
- stopped_controllers [default: pos_joint_traj_controller joint_group_vel_controller] — Controllers that are initally loaded, but not started.
- controller_config_file [default: $(find ur_robot_driver)/config/ur3_controllers.yaml] — Config file used for defining the ROS-Control controllers.
- robot_description_file [default: $(find ur_description)/launch/load_ur3.launch] — Robot description launch file.
- kinematics_config [default: $(find ur_description)/config/ur3/default_kinematics.yaml] — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- launch/ur_control.launch
-
- debug [default: false] — If set to true, will start the driver inside gdb
- use_tool_communication — On e-Series robots tool communication can be enabled with this argument
- controller_config_file — Config file used for defining the ROS-Control controllers.
- robot_ip — IP address by which the robot can be reached.
- reverse_ip [default: ] — IP of the driver, if set to empty it will detect it automatically.
- reverse_port [default: 50001] — Port that will be opened by the driver to allow direct communication between the driver and the robot controller.
- script_sender_port [default: 50002] — The driver will offer an interface to receive the program's URScript on this port. If the robot cannot connect to this port, `External Control` will stop immediately.
- trajectory_port [default: 50003] — Port that will be opened by the driver to allow trajectory forwarding.
- script_command_port [default: 50004] — Port that will be opened by the driver to allow forwarding script commands to the robot.
- kinematics_config — Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. Pass the same config file that is passed to the robot_description.
- tf_prefix [default: ] — tf_prefix used for the robot.
- controllers [default: joint_state_controller scaled_pos_joint_traj_controller force_torque_sensor_controller robot_status_controller]
- stopped_controllers [default: joint_group_vel_controller forward_joint_traj_controller forward_cartesian_traj_controller]
- urscript_file [default: $(find ur_client_library)/resources/external_control.urscript] — Path to URScript that will be sent to the robot and that forms the main control program.
- rtde_output_recipe_file [default: $(find ur_robot_driver)/resources/rtde_output_recipe.txt] — Recipe file used for the RTDE-outputs. Only change this if you know what you're doing.
- rtde_input_recipe_file [default: $(find ur_robot_driver)/resources/rtde_input_recipe.txt] — Recipe file used for the RTDE-inputs. Only change this if you know what you're doing.
- tool_voltage [default: 0] — Tool voltage set at the beginning of the UR program. Only used, when `use_tool_communication` is set to true.
- tool_parity [default: 0] — Parity configuration used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_baud_rate [default: 115200] — Baud rate used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_stop_bits [default: 1] — Number of stop bits used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_rx_idle_chars [default: 1.5] — Number of idle chars in RX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tx_idle_chars [default: 3.5] — Number of idle chars in TX channel used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_device_name [default: /tmp/ttyUR] — Local device name used for tool communication. Only used, when `use_tool_communication` is set to true.
- tool_tcp_port [default: 54321] — Port on which the robot controller publishes the tool comm interface. Only used, when `use_tool_communication` is set to true.
- headless_mode [default: false] — Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot.
- servoj_gain [default: 2000] — Specify gain for servoing to position in joint space. A higher gain can sharpen the trajectory.
- servoj_lookahead_time [default: 0.03] — Specify lookahead time for servoing to position in joint space. A longer lookahead time can smooth the trajectory.
- ur_hardware_interface_node_required [default: true] — Shut down ros environment if ur_hardware_interface-node dies.
- use_spline_interpolation [default: true] — True if splines should be used as interpolation on the robot controller when forwarding trajectory, if false movej or movel commands are used