UniversalRobots / Universal_Robots_ROS2_Driver

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

UR Dashboard Control Paused Robot Running State #1069

Open zkeyg opened 1 month ago

zkeyg commented 1 month ago

Affected ROS2 Driver version(s)

2.4.8

Used ROS distribution.

Humble

Which combination of platform is the ROS driver running on.

Ubuntu Linux with standard kernel

How is the UR ROS2 Driver installed.

Build both the ROS driver and UR Client Library from source

Which robot platform is the driver connected to.

UR E-series robot, URSim in docker

Robot SW / URSim version(s)

latest

How is the ROS driver used.

Through the robot teach pendant using External Control URCap

Issue details

Summary

/io_and_status_controller/robot_program_running showing true when program is Paused

Issue details

Ran URsim using ROS URcap file when UR program is paused, topic /io_and_status_controller/robot_program_running is still showing true; If the program is somehow paused, should the robot programming running show a status of false? If not I would recommend using a tri-state message to capture this.

Steps to Reproduce

This can be reproduced using UR real robot and URsim docker

Expected Behavior

I would expect this message to be false when the robot is paused; Otherwise this should be a tristate message to better reflect its state for ROS remote control user.

Actual Behavior

/io_and_status_controller/robot_program_running is still showing true when program is in paused mode.

Workaround Suggestion

If a workaround has been found, you are welcome to share it.

Relevant log output

No response

Accept Public visibility

VinDp commented 1 month ago

Hi @zkeyg, the /io_and_status_controller/robot_program_running topic tells you if our external control script is running, so it is slightly different from what the name would suggest and it makes sense that it stays true even when the program is paused. We will probably update the name to a more fitting one in the future. But if you want to check if a program is running on the robot, then you can use the services /dashboard_client/program_running and /dashboard_client/program_state, which will return false when the program is paused.