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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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 github 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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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
melodic

Package Summary

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

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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.2.0
License Apache-2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Description A C++ library for accessing the UR interfaces that facilitate the use of UR robotic manipulators by external applications.
Checkout URI https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
VCS Type git
VCS Version master
Last Updated 2025-07-24
Dev Status DEVELOPED
Released RELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

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.2.0 (2025-07-21)

  • Remove print statement when executing optimovel primitives (#365)
  • Remove SDK version mapping (#355)
  • Support optimove motions in InstructionExecutor (#354)
  • Initialize ReverseInterface with a config struct (#351)
  • Join thread_move instead of killing it (#349)
  • Fix external_control urcapx version to 0.1.0 for PolyScope 10.7.0 (#350)
  • Contributors: Felix Exner

2.1.0 (2025-06-18)

  • Minimal support for building on macOS (#341)
  • Install endian.h and add that to the target include directories on Windows and MacOS (#345)
  • Add ScriptReader for script template parsing (#343)
  • Add more tests for VersionInformation (#344)
  • Fix driver branch for Jazzy downstream build (#339)
  • Stop control, when UrDriver object is destroyed (#338)
  • Add new robot types to URSim startup script (#331)
  • Fix robot message type POPUP (#335)
  • Disable checking links for two broken ones (#333)
  • readme: load ROSin imgs from press_kit repository (#334)
  • Added configuration data to packages parsed from the primary interface (#327)
  • Correct message sum in test_tool_contact (#324)
  • Fix the image sizes in architecture section (#321)
  • Check links using lychee (#319)
  • Update ROS distributions for industrial_ci (#317)
  • Support PolyScopeX simulator for 10.8.0 (#315)
  • Add an API reference page to the docs (#314)
  • Update documentation (#309)
  • Contributors: Andrew C. Morrow, Felix Exner, G.A. vd. Hoorn, Mads Holm Peters

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

File truncated at 100 lines see the full file

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