A new version of the Robot Operating System (ROS) is now available for Universal Robots (UR) programmers who are leveraging ROS to control a UR robot. This new ROS version delivers Cartesian control of the robot’s tool-tip, while safely maintaining the speeds of the robot’s joints to avoid exceeding safe, collaborative control limits.
Cartesian control sounds simple, right? All you’re doing is driving the tool-tip in a straight line. However, the complexities of Cartesian control of a jointed arm like the UR arm requires that the calculations for the motion of individual robot joints be kept within the safe operating limits that define a collaborative robot. It’s entirely possible for a desired straight line motion through space to involve very high speeds of individual robot joints to attain the requested tool-tip motion sequence. Alternatively, a specific motion might also send the arm through a “singularity” point, where the arm needs to change its pose to keep the tool-tip on the desired trajectory. This can also induce very high speed joint motions that would exceed collaborative robot specifications.
To do this safely, ROS has to understand the kinematics of the UR arm, the constraints for a collaborative robot, and the requirements for Cartesian motion. Until this release, ROS didn’t have a formal solution for the Cartesian control of UR robots. However, this new version is available for beta testing and the ROS community is reaching out to ROS programmers who have real-world use cases to test the functionality.
Here’s a look at the feature set for this version:
- Works for all CB3 (with software version >= 3.7) and e-Series (software >= 5.1) robots and uses the RTDE interface for communication, whenever possible.
- Factory calibration of the robot inside ROS to reach Cartesian targets precisely.
- Realtime-enabled communication structure to robustly cope with the 2ms cycle time of the e-Series.
- Transparent integration of the teach-pendant. Using the URCaps system, a program is running on the robot that handles control commands sent from the ROS side. With this, the robot can be paused, stopped and resumed without restarting the ROS driver. This will in the future also enable the usage of ROS-components as part of a more complex UR-program on the teach pendant. ROS-control of the robot can be quit using a service call to continue program execution on the TP.
- Use the robot’s speed-scaling. When speed scaling is active due to safety constraints or the speed slider is used, this gets correctly handled on the ROS side, as well slowing down trajectory execution accordingly.
- ROS-Service-based replacement of most every-day TP-interactions offer using UR robots without interacting with the teach pendant at all, if desired. The robot can be started, stopped and even recovery from safety events can be done using ROS service- and action calls.
- BETA FEATURE: Enable Cartesian trajectory control in your applications. Specify waypoints in task space using a new Cartesian trajectory interface and a new Cartesian trajectory controller.
- BETA FEATURE: Use on-the-robot interpolation for both Cartesian and joint-based trajectories. This is extremely helpful if your application can not meet the real-time requirements of the driver.
- Here’s a link to the readme on the ROS GitHub Site
- You can also follow on the ROS Discourse server
- A new ROS-based driver is available for Universal Robots (UR), including the UR3, UR5, UR10 and UR16e.
Cartesian ROS control is now available on UR cobots. Beta testing of this new code is just beginning, and the ROS community is seeking participants to run the new code through its paces and contribute to the evolution of this new capability.