UniversalRobots / Universal_Robots_ROS2_Driver

Universal Robots ROS2 driver supporting CB3 and e-Series
BSD 3-Clause "New" or "Revised" License
436 stars 227 forks source link

C271A1 Low level real-time thread issue on dual arm setup #1116

Open kfryhilderbrand opened 1 month ago

kfryhilderbrand commented 1 month ago

Affected ROS2 Driver version(s)

Humble

Used ROS distribution.

Humble

Which combination of platform is the ROS driver running on.

Ubuntu Linux with realtime patch

How is the UR ROS2 Driver installed.

From binary packets

Which robot platform is the driver connected to.

UR E-series robot

Robot SW / URSim version(s)

Polyscope 5.15

How is the ROS driver used.

Headless without using the teach pendant, Through the robot teach pendant using External Control URCap

Issue details

Summary

Dual arm setup being controlled from 1 controller manager, trajectory being sent to one robot that fails to execute the trajectory due to a real-time thread error.

Issue details

Running a setup with two UR robots (UR5e and UR10e). The UR10e is running an admittance controller while the UR5e is running a joint trajectory controller (1 controller manager). We are sending a trajectory to the UR5e, but it throws a "Low level real-time thread" error and does not execute the trajectory. We tried jogging the robot to a consistent starting pose (that the trajectory also starts from), but that did not solve the issue.

Expected Behavior

Admittance controller running on UR10e, robot will not move if COM calculations correct. Joint trajectory controller running on UR5e, trajectory being sent and executed on robot.

Actual Behavior

Admittance controller on UR10e ran without issue, trajectory did not run on the UR5e

Workaround Suggestion

Suggested including a Wait or a sync(), but including these within our trajectory executor did not solve the issue.

Relevant log output

No response

Accept Public visibility

fmauch commented 1 month ago

Hi, does this only happen in the dual-arm setup? It would be good to get this to a reproducible minimal configuration so we can start debugging this.

lcbw commented 1 month ago

Hello @fmauch no - this problem also occurs when the UR5e or UR10e is operated alone. Please try running the following command with the recently updated dual arm test repository main branch. ros2 launch dual_arm_test dual_arm_test.launch.py single_arm:=true use_fake_hardware:=false fake_sensor_commands:=false

The updates to this branch include fixes to the single_arm launch parameter, which should generate a simplified robot description, and a hardcoded update to the controllers.yaml file to only reference robot1.

@fmauch Another repository that induces this error repeatably with a single-arm setup is https://github.com/stefanscherzinger/cartesian_controllers_universal_robots. When I try to activate the cartesian force or cartesian compliance controller, which had already been loaded, the teach pendant throws this 'low-level real-time thread" protective stop error message.