-
Notifications
You must be signed in to change notification settings - Fork 402
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
Controller not started on ROS-side although external_control is running. #340
Comments
Before digging deeper into this: We are currently working on
The latter should make it possible for your use-case to keep everything in one program instead of switching programs all the time. If you like, it would be nice if you could test, whether those changes (especially the first one) fix the problems mentioned. If so, I would suggest not digging too deep here, as this will get merged soon. |
Thanks for the response. I tried running with your changes in UniversalRobots/Universal_Robots_Client_Library#46, but when I try to build it with the current master branch of this repo, it fails:
If I try with commit 7ac5b4, it builds, but the issue described in the OP still occurs. I'm not sure that multiple instances of the External Control program node will be needed in my case. We do need to switch between programs and turn ROS control on and off, though. |
I just reverted to the URCap version 1.0.2 and commit 7ac5b4, which I considered to be working, but the issue still occurs. Maybe this is introduced by Polyscope 5.10, but I would very much like to avoid downgrading just to attempt to fix this bug. I also feel like the problem is not on the UR side to start with. For now I check the controller state after reactivating external control. This seems to work, even though it's ugly:
|
As an update, I just received another robot arm on Polyscope 5.9, installed the External Control 1.0.4 URCap, and had the same issues. Reverting to 1.0.2 seemed to help. Looking forward to see upcoming changes. |
I have tried to reproduce this with the following setup:
I created two programs on the robot:
On the ROS machine I run this bash script: #!/bin/bash
while [[ true ]]; do
rosservice call /ur_hardware_interface/dashboard/load_program "filename: 'external_control.urp'"
rosservice call /ur_hardware_interface/dashboard/play "{}"
rostopic pub /scaled_pos_joint_traj_controller/follow_joint_trajectory/goal control_msgs/FollowJointTrajectoryActionGoal -f ~/Downloads/trajectory_pp.txt -1
sleep 5 # too lazy to write a proper action client
rosservice call /ur_hardware_interface/dashboard/load_program "filename: 'move.urp'"
rosservice call /ur_hardware_interface/dashboard/play "{}"
done With this I could not reproduce the issue after letting it run for a couple of minutes. |
Thanks for the detailed testing. Sadly, my hardware_interface does not even start up with this repo on master (13db13, to which I forwarded to get URCap 1.0.5) and the Universal_Robots_Client_Library on 2b84427, neither for Polyscope 5.9 nor 5.10. It crashes on startup. For what it's worth, when starting up the hardware interface on master with URCap 1.0.5 (and the binary client library I suppose) while the external control is already running on the robot, the topic I don't know how to reproduce it yet, but with the commits mentioned above I once again had my robot arms in a state where |
I have the exactly same problem as felixvd Has there been found a solution to this problem? |
@felixvd @EspenTeigen Does this issue still exist with the latest changes of driver and library? |
@stefanscherzinger It seems to be working fine at the moment :) |
@felixvd feel free to re-open if this issue persists. |
Hi, I would like to ask for a help I have same problem as it is mensioned in this thread. My settings are: Affected Robot Software Version(s): 3.15 Could you please propose me some solution ? When I start the robot and try to control it the controllers are stoped by default and GOAL response with FALSE. When I try to start the controller I am getting this message
Thank you for your help |
@MiroslavKohut the error you posted seems not necessarily related to the OP. Could you please open a new issue and describe exactly the steps that you took? |
Affected Robot Software Version(s): 3.15 |
Summary
After upgrading to master, changing between ROS control and other scripts causes the robot to stop accepting goals. The controller seems to be stuck in a stopped state, although the external control program is running on the robot.
Versions
Impact
The robot stops accepting goals, because it thinks that the control script is not running on the robot, although it is.
Issue details
I recently upgraded our driver from commit 7ac5b4 to master (09e0d8), and the external control URCap from 1.0.2 to 1.0.4. Since upgrading, I have had issues changing between ROS control and other scripts.
During our process, we switch between ROS control and "native" scripts on the UR. To do this, we load and start different scripts on the UR, and then load and restart the
external_control.urp
on the robot like this. After the update, this process has started to fail in a way that it did not before. It appears that the controller sometimes stops when another program is loaded, and does not recover when external control is restarted.In this state,
/ur_hardware_interface/robot_program_running
publishesTrue
, so I am not sure how to detect this and recover from it./controller_manager/list_controllers
does publish the status of the controller, but what is the correct method to start it? Sending commands to/controller_manager/switch_controller
seems unwise since the robot driver presumably keeps track of the state internally. Please advise.Project status at point of discovered
It happened after I upgraded, and occurs about 30% of the time that I ask the robot to execute a program other than ROS external control.
Steps to Reproduce
I haven't found a reliable way to reproduce this yet, but running ROS external control and loading/executing other programs like in this code might do the trick.
Workaround Suggestion
Restarting the controller via
/controller_manager/switch_controller
might work, but it might confuse the driver, too.The text was updated successfully, but these errors were encountered: