Trajectory rejected on first use or after powersafe #504
Replies: 1 comment 5 replies
-
(for now I've converted this to a discussion. If it turns out this is something that needs to be fixed, we'll create a more detailed issue) I'm not dismissing your experience, but the code you refer to is old, and has been used on hundreds (if not thousands) of robot+controller combinations over the years. I would have expected more reports about failed trajectory execution. Having written that: increasing I'm willing to build a binary for you, but I'd really like input from @ted-miller and/or @EricMarcil on what we're potentially seeing here. I guess you have a YRC1000?
could you please show the ROS-side log and a wireshark capture including the traffic when the failure occurs? #492 is something you'd run into "after the robot was idle for some time". Is eco-mode enabling on your robot? How are you recovering from that? For a demo setup, you could work-around it by increasing the idle-timeout significantly (it's a configuration setting you can change on the TP -- I wouldn't know the German name for it though). |
Beta Was this translation helpful? Give feedback.
-
We get a failing trajectory start position check after the robot was idle for some time. In this case we also observe that the actual and desired pulse/joint position do not match. In one case I was seeing a joint difference as big as 2.2e-3 on the wrist joint (this is a small size, GP7 robot where we usually rather expect precision < 1e-4) between the display on the teach pendant and what is sent out via simple message to ROS.
For reading the current position the driver uses
mpGetFbPulse()
while later for the check of the first trajectory pointmpGetPulse()
is used. The allowed difference between the trajectory start position and the theoretical robot position is 30 pulses. According to Yaskawa Germany internally 500 pulses are accepted before an error is shown to the user.motoman/motoman_driver/MotoPlus/Controller.h
Line 76 in 7860ff5
motoman/motoman_driver/MotoPlus/MotionServer.c
Line 1225 in bd4bdbd
motoman/motoman_driver/MotoPlus/CtrlGroup.c
Line 242 in bd4bdbd
vs
motoman/motoman_driver/MotoPlus/CtrlGroup.c
Line 305 in bd4bdbd
My theory is that brakes are only released after this check and therefore the offset will never be corrected. Somehow it usually works on the second attempt however. Or maybe the joint position used in ROS is from before unbraking the robot? (We automatically send "enable robot" when it is in remote mode and motion_possible is false)
I tried increasing the limit but what I compiled with the MotoPlusSDK (it was not the one integrated in VS but the old (?) standalone one) from the partner download area did not match in size and failed to start. Also had to manually define the YRC1000 define or it would not compile the IOServer. We will get a MotoPlus SDK license on Wednesday but if anybody could provide a binary with increased tolerance or with checking against
mpGetFbPulse
we would be very grateful as the automatica fair is pretty closeBeta Was this translation helpful? Give feedback.
All reactions