-
Notifications
You must be signed in to change notification settings - Fork 417
Description
Summary
ur_robot_driver does not advertise a service set_payload anymore (which existed on ur_driver and ur_modern_driver). In order to set the payload mass (which is mandatory in our case), raw URscript "set_payload(X)" and "set_payload_cog(Y)" have to be sent, and I assume this is done via the /ur_hardware_interface/dashboard/raw_request service. However, this service always returns "could not understand:", regardless of the request (tried: "set_payload(0)", 'print("hello")', "a=force()", "a = 1+1".
Versions
- ROS Driver version: Feb 7, 2020
- ROS version: melodic
- Affected Robot Software Version(s): URsim 3.12.1.90940 UR10
- Affected Robot Hardware: UR10
- URCaps Software version(s): External Control 1.0.1
Impact
The robot puts itself in safety when changing tools due to the change in payload mass and CoG. Without a way to send raw URscript commands, the development of our industrial station is stopped while this issue is not resolved (high priority for us).
Use Case and Setup
- URSim UR10 launched
- ur_robot_driver/ur10_bringup.launch in one terminal
- rosservice call to raw_request OR rospy script in another terminal
Project status at point of discovered
Systematic issue easily reproduced.
Steps to Reproduce
- Start URSim UR10 with external control URcap on port 50002
- In one terminal, run "roslaunch ur_robot_driver ur10_bringup.launch robot_ip:=127.0.0.1"
- Hit "play" in URsim, the terminal says "robot ready to receive commands"
- In another terminal, type "rosservice list"
Note that set_payload is absent. - Then type in the terminal opened in 4: rosservice call /ur_hardware_interface/dashboard/raw_request 'popup("hello")'
Note that the answer is "could not understand" and that the popup did not appear. - Try again with other URscript commands.
- Try again with the following python script saved as "test_raw_request.py" in "ur_driver" to launch using rosrun ur_driver test_raw_request.py
#!/usr/bin/env python
from ur_dashboard_msgs.srv import RawRequest
import rospy
if __name__ == "__main__":
rospy.init_node('RawRequest_service_server')
s = rospy.ServiceProxy('/ur_hardware_interface/dashboard/raw_request', RawRequest)
print s('popup("hello")')
Expected Behavior
Actually executing the URscript command sent, for example showing a popup on the pendant.
Actual Behavior
Service successfully called but failed during execution due to a so-called unknown command: "could not understand "
Workaround Suggestion
None. Help?