-
Notifications
You must be signed in to change notification settings - Fork 225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UR5e dangerously moves to (0,0,0,0,0,0) when External Control URCap is started [ROS2 Galactic] #520
Comments
Thanks for reporting this |
This should really not happen.Will try to reproduce this. |
Could be a controller issue. Edit: and could also not be, seeing the analysis @shonigmann included. |
A very interesting question related would be which controller you are using. I am assuming the |
I have not been able to reproduce this. The setup / sequence I used
@shonigmann Does the configuration shown in RViz also change to the correct one as soon as the robot is booted (before the breaks are released)? |
thank you for the responses - i've been out on holiday, but will try and respond with additional details next week |
I observed the same. Start |
@LucaBross This is exactly what should not be happening. I'll try again to reproduce this later this week. |
Apologies for the delay - adding some info for reference:
From memory, no, RViz did not show the correct configuration - the joint states were still being published as 0's. But I will try to find time to reproduce to give a more certain response. We'll try to find some time to setup a minimum reproduceable example, though we've paused our work with the UR5 for now and may not be able to dedicate time to this in the near future. |
Any reason you are using the Still, this initialization problem should not happen, but I haven't been able to reproduce this, so far. |
We are currently adding a failsafe mechanism in UniversalRobots/Universal_Robots_Client_Library#184. From a ROS perspective this approach seems not to be satisfying, but in the end it is a safety mechanism which should never trigger if everything works correctly. |
The corresponding work in ros2_control was started in ros-controls/ros2_control#884 There are still a couple of pieces missing in order to finally implement that we can specify whether command interfaces should be available in |
We've noticed a potentially hazardous edge case when our ros2_control nodes (hardware interface, controller manager, etc) are started after Polyscope is booted up, but before the arm is powered on and enabled if Polyscope is set to Local mode.
With that specific startup sequence, the
hardware_interface
for the arm initializing joint position states and commands as 0s, without any errors or warnings that a connection to the arm could not be established. The hardware completes its initialization without error, enters an active state. Then, when the External Control UR Cap is enabled, the arm tries to quickly move to the faulty initial position/command, in our case crashing into the ground.Its strange to me that the initial
read()
call is successfully getting a response from the arm, but appears to be unsuccessfully getting real data. Potentially unrelated, but I also noticed that the "write" method doesn't care if the "initialized" flag has been set or not (but does look for the "runtime_state_" which appears to be read as part of the read method that needs to happen before initialized is set, so maybe that's a non-issue)...For reference, we are running ros2 Galactic in an Ubuntu 20.04 docker container. We also do not experience this issue when the arm is started in Remote mode, or if it is fully started in Local mode before our ros2 nodes are started.
At this point we've updated our operating procedure to very explicitly avoid this situation and have written a script to loudly inform us when this strange "perfect 0.0 state" is detected, but it would be great to have a more direct safeguard in the hardware interface itself, e.g. making sure that the position feedback is correctly read.
Potentially tangentially related to #515?
The text was updated successfully, but these errors were encountered: