ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Deprecation of ur_modern_driver


with the public release of ur_robot_driver the ROS community finally gained an OEM supported driver for Universal Robots controllers. Find the official announcement here: Announcement: Universal Robots launches ROS driver.

Both CB3 and e-Series controllers are fully supported and ur_robot_driver provides some nice improvements over both ur_driver and ur_modern_driver. This is especially the case for e-Series controllers, with full support for the 500 Hz update rate and integration of new functionality such as the embedded RS485 port in the robot flange.

To avoid fragmenting the ROS & ROS-Industrial communities, we, the maintainers of ur_modern_driver and universal_robot, announce the deprecation of ur_modern_driver. It will not see further development nor addition of new features. It will also not be made compatible with e-Series controllers, nor with newer Polyscope/system software versions. Issues and PRs reporting incompatibilities and attempting to fix them will be closed.

We encourage everyone with a CB3 or e-Series controller to start using ur_robot_driver. It is the future of ROS integration with UR products, and we feel it has received sufficient maturity to start migrating our user base to it.

If you haven’t already, please visit UniversalRobots/Universal_Robots_ROS_Driver to review system requirements and features. Issues with the new driver should be reported on the ur_robot_driver issue tracker.

On our side, we’ll be updating the readmes of various repositories, wiki pages, tutorials and FAQs to point to ur_robot_driver whenever and wherever it is appropriate. If you come across a reference to ur_driver or ur_modern_driver that you believe should be updated, please let us know here.

Note that we are aware of the fact that feature-parity has not yet been reached between ur_robot_driver and ur_modern_driver. In particular, the “low bandwidth mode” or ur_modern_driver is not available. Where possible, missing features will be ported, but we cannot do this without the community (ie: you). If you have the impression something is missing from ur_robot_driver, open an issue on the tracker to discuss it. It could already be on the roadmap or could have been replaced by an alternative.

Finally, we would like to take this opportunity to thank all community members who have contributed to either ur_driver or ur_modern_driver (or both) with code, by reporting issues or in any other way: without those contributions it would not have been possible to create or maintain these software components.

In particular, we’d like to thank @Felix_Messmer (long time maintainer of ur_driver), Thomas Timm Andersen (author of the original ur_modern_driver) and Simon Rasmussen (contributor of the large “Kinetic refactor”).

on behalf of the maintainers,



Reposting this as a separate comment as I’ve received quite a few questions about this:

ur_robot_driver does not support CB1 or CB2 controllers (up to and including Polyscope version 1.8.x). For those controllers users would still need to use one of the older drivers or alternatives.

I’d like to take the opportunity to thank @gavanderhoorn, ThomasTimm and everyone else who has contributed to the community-developed drivers - I have used ur_modern_driver in multiple applications with great success :100:


In these days, I’ve controlled a universal robot(UR-3) using the ‘ur_modern_driver’ on ROS Kinetic. But, now, I changed a version from 16.04 to 18.04. So, I also modified a version of ROS from Kinetic to Melodic.
I installed a ur_robot_driver because of Melodic. And I succeed that “rostopic echo /joint_states” as below figure.

Could I use a example code for moving a universal robot on ‘ur_robot_driver’ like that “” on ‘ur_modern_driver’?

Thank you for my question.

First: please ask these sort of questions on either ROS Answers, or the issue trackers of the respective packages (and don’t post screenshots of code or terminal output, just copy-paste the text).

But to quickly answer your question: both ur_modern_driver and ur_robot_driver expose a FollowJointTrajectory action server (ie: it’s the same interface). Code that creates a client for that should work on both drivers.

1 Like