Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
jazzy

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
kilted

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
rolling

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
galactic

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
iron

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

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

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
humble

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
kinetic

Package Summary

Tags No category tags.
Version 0.4.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

  • Felix Exner

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

Requirements

  • Polyscope (The software running on the robot controller) version 3.12.0 (for CB3-Series), or 5.5.1 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library. For the C++17 features, please use those minimum compiler versions:

    Compiler min. version
    GCC 7
    Clang 7

Build instructions

Plain cmake

To build this library standalone so that you can build you own applications using this library, follow the usual cmake procedure:

cd <clone of this repository>
mkdir build && cd build
cmake ..
make
sudo make install

This will install the library into your system so that it can be used by other cmake projects directly.

Inside a ROS workspace

If you want to build this library inside a ROS workspace, e.g. because you want to build the Universal Robots ROS driver from source, you cannot use catkin_make directly, as this library is not a catkin package. Instead, you will have to use catkin_make_isolated or catkin build to build your workspace.

Use this library in other projects

When you want to use this library in other cmake projects, make sure to

  • Add find_package(ur_client_library REQUIRED) to your CMakeLists.txt
  • add ur_client_library::urcl to the list of target_link_libraries(...) commands inside your CMakeLists.txt file

As a minimal example, take the following “project”:

```c++ /main.cpp/

#include #include <ur_client_library/ur/dashboard_client.h>

int main(int argc, char* argv[]) { urcl::DashboardClient my_client(“192.168.56.101”); bool connected = my_client.connect(); if (connected) { std::string answer = my_client.sendAndReceive(“PolyscopeVersion\n”); std::cout « answer « std::endl;

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

0.4.0 (2022-10-10)

  • Initialized receive timeout and changed exception to warning (#118)
  • Added tests for the control interface classes (#112)
  • Added note about Polyscope version requirement
  • Added tcp_offset
  • Added interface for forwarding script commands to the robot, that is … (#111)
  • Fixed parsing of incomming packages when using rtde protocol v1 (#114) The received rtde packages should be parsed slightly different whether we use protocol v1 or v2.
  • Add codecov step (#116)
  • Added humble build
  • Fixed downstream test instructions
  • Update atomicops.h (#117) Fix the url in the comment regarding POSIX semaphores to fix error in the CI
  • Make the read during boot depend on the frequency of the robot controller (#102)
  • Ignore debian folder in check_links (#100) Otherwise this job raises an error in the release repository.
  • Support starting the driver, before the robot is booted (#98)
  • Clear the queue when consumer reads from it (#96)
  • Fix build with newer glibc
  • Doxygen check (#77)
  • Added target_frequency to RTDEClient (#85)
  • Removed console_bridge dependency (#74)
  • Added "On behalf of Universal Robots A/S" notice (#81) to all files that have been created by FZI
  • Always install package.xml file (#78)
  • register package with ament index
  • Corrected smaller doxygen errors
  • Added rosdoc_lite check
  • Contributors: Cory Crean, Felix Exner, Jørn Bersvendsen, Mads Holm Peters, Martin Jansa, Stefan Scherzinger, Rune Søe-Knudsen, urmahp, urmarp

0.3.2 (2021-09-15)

  • Removed console_bridge dependency (#74) As log handlers for the client library has been created in the drivers, the console bridge dependency is no longer needed.
  • Added "On behalf of Universal Robots A/S" notice (#81) to all files that have been created by FZI
  • Contributors: Felix Exner, Mads Holm Peters

0.3.1 (2021-06-22)

  • Always install package.xml file
  • Contributors: Felix Exner

0.3.0 (2021-06-18)

  • Added Cartesian streaming interface #75 from UniversalRobots/cartesian_interface
  • Add trajectory interface to library #72 from fmauch/trajectory_interface
  • Refactor reverse interface #70 from fmauch/refactor_reverse_interface
  • Contributors: Felix Exner, Mads Holm Peters, Tristan Schnell

0.2.2 (2021-05-31)

  • Add reverse_ip parameter to UrDriver (#52)
  • Make calibration check optionally callable
  • Use file= fields for license tags in package.xml (#63)
  • Install the resources folder instead of the script file directly (#62)
  • Contributors: Felix Exner, JS00000

0.2.1 (2021-05-06)

  • Run ci also for ROS2 foxy
  • Prepare package.xml and cmakelists for ROS2
  • Add downstream workspace
  • Contributors: Felix Exner, Lennart Puck

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
boost
cmake

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
melodic

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange

Package symbol

ur_client_library package from ur_client_library repo

ur_client_library

ROS Distro
noetic

Package Summary

Tags No category tags.
Version 2.0.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Standalone C++ library for accessing Universal Robots interfaces. This has been forked off the ur_robot_driver.

Additional Links

Maintainers

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

Authors

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

Universal Robots Client Library

A C++ library for accessing Universal Robots interfaces. With this library C++-based drivers can be implemented in order to create external applications leveraging the versatility of Universal Robots robotic manipulators.

The library has no external dependencies besides the standard C++ libraries such as ROS, or boost to make it easy to integrate and maintain. It also serves as the foundation for the ROS and ROS 2 drivers.

Universal Robot family

Requirements

  • Polyscope (The software running on the robot controller) version 3.14.3 (for CB3-Series), or 5.9.4 (for e-Series) or higher. If you use an older Polyscope version it is suggested to update your robot. If for some reason (please tell us in the issues why) you cannot upgrade your robot, please see the version compatibility table for a compatible tag.
  • The library requires an implementation of POSIX threads such as the pthread library
  • Socket communication is currently based on Linux sockets. Thus, this library will require Linux for building and using.
  • The master branch of this repository requires a C++17-compatible compiler. For building this library without a C++17-requirement, please use the boost branch instead that requires the boost library.

Build instructions

See Build / installation

License

The majority of this library is licensed under the Apache-2.0 licensed. However, certain parts are licensed under different licenses:

  • The queue used inside the communication structures is originally written by Cameron Desrochers and is released under the BSD-2-Clause license.
  • The semaphore implementation used inside the queue implementation is written by Jeff Preshing and licensed under the zlib license

While the main LICENSE file in this repository contains the Apache-2.0 license used for the majority of the work, the respective libraries of third-party components reside together with the code imported from those third parties.

Library contents

Currently, this library contains the following components:

  • Basic primary interface: The primary interface isn’t fully implemented at the current state and provides only basic functionality. See A word on the primary / secondary interface for further information about the primary interface.
  • RTDE interface: The RTDE interface is fully supported by this library. See RTDEClient for further information on how to use this library as an RTDE client.
  • Dashboard interface: The Dashboard server can be accessed directly from C++ through helper functions using this library.
  • Custom motion streaming: This library was initially developed as part of the Universal Robots ROS driver. Therefore, it also contains a mechanism to do data streaming through a custom socket, e.g. to perform motion command streaming.

Example driver

In the examples subfolder you will find a minimal example of a running driver. It starts an instance of the UrDriver class and prints the RTDE values read from the controller. To run it make sure to

  • have an instance of a robot controller / URSim running at the configured IP address (or adapt the address to your needs)
  • run it from the package’s main folder (the one where this README.md file is stored), as for simplicity reasons it doesn’t use any sophisticated method to locate the required files.

Architecture

See Architecture documentation

A word on the primary / secondary interface

Currently, this library doesn’t support the primary interface very well, as the Universal Robots ROS driver was built mainly upon the RTDE interface. The PrimaryClient for directly accessing the primary interface doesn’t support all features of the primary interface.

The comm::URStream class can be used to open a connection to the primary / secondary interface and send data to it. The producer/consumer pipeline structure can also be used together with the primary / secondary interface. However, package parsing isn’t implemented for most packages currently. See the primary_pipeline example on details how to set this up. Note that when running this example, most packages will just be printed as their raw byte streams in a hex notation, as they aren’t implemented in the library, yet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ur_client_library

2.0.0 (2025-04-16)

  • Add functionality to send MoveP and MoveC instructions to the robot (#303)
  • Fix naming issues (#307)
  • Add more tests for start_ursim.sh (#305)
  • [start_ursim.sh] Use direct web pages instead of GitHub API to download URCap (#308)
  • Fix typo in freedrive example document (#304)
  • Always download and install the latest URCap(X) if not present (#301)
  • Document robot setup for PolyScope X (#302)
  • Bump bats-core/bats-action from 3.0.0 to 3.0.1 (#300)
  • Polyscope x integration tests (#295)
  • Contributors: Felix Exner, dependabot[bot], xndcn

1.9.0 (2025-03-28)

  • Make start_ursim.sh support polyscopex (#294)
  • Reduce usage of dashboard client in tests and examples (#296)
  • Try catch RTDE setup (#285)
  • add missing headers (#290)
  • PrimaryClient: Add methods to unlock protective stop and stop the program (#292)
  • Set increased timeout in dashboard client test (#293)
  • Do not print a warning when querying the dashboard server for a running program (#287)
  • Primary client power on (#289)
  • Contributors: Andrei Kholodnyi, Dominic Reber, Felix Exner

1.8.0 (2025-03-17)

  • Remove unused variables (#288)
  • Remove direct primary and secondary stream from UrDriver (#283)
  • Configure gcovr to ignore negative hits as errors (#284)
  • Add an explicit CMake option to turn on/off integration tests (#282)
  • instruction_executor: Allow canceling an instruction (#281)
  • instruction_executor: fix movel test (#280)
  • Fix buffer order of acceleration and velocity (#279)
  • Support compilation on Windows (#229)
  • Contributors: Felix Exner, VDm

1.7.1 (2025-02-25)

  • Fix trajectory result in trajectory forward mode when no trajectory is running (#276)
  • Remove sending an idle command in quintic spline test (#275)
  • In servo mode always allow targets close to current pose (#273)
  • Contributors: Felix Exner

1.7.0 (2025-02-19)

  • Make UrDriver tests run without ctest (#270)
  • UrDriver: Send program in headless mode after creating trajectory and script_command servers (#271)
  • Improve limit check (#256)
  • Use colored log output and timestamps in default log handler (#267)
  • Parametrize reconnection time for UrDriver (#266) Co-authored-by: Dominic Reber <<71256590+domire8@users.noreply.github.com>>
  • Fix DashboardClient load program from subdir (#269)
  • Increase dashboard timeout in ExampleRobotWrapper to 10s
  • Disable internal deprecation warning
  • Use a config struct for initializing UrDriver (#264)
  • Use ExampleRobotWrapper for initialization in all examples

File truncated at 100 lines see the full file

Wiki Tutorials

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

Package Dependencies

System Dependencies

Name
cmake

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ur_client_library at Robotics Stack Exchange