-
Notifications
You must be signed in to change notification settings - Fork 44
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
Timed out while waiting for EGM feedback (did the EGM session end on the robot controller?) #16
Comments
I'm pretty sure you're running into the EGM convergence timeout or idle timeout. If this
means "why does But this should only happen if your robot is doing nothing. You should be able to check the state of the EGM channels via the You should be able to change the timeout value using the egm settings service. I find it's convenient to retrieve the current settings, changing the values I need to change and the writing them back again (instead of populating all the fields yourself in a from-scratch service request object). Edit: this is just my interpretation of things, so could be wrong, but: EGM is externally guided motion. So it's supposed to be used to guide motion, ie: when motion is active. Robots sitting idle don't need to be guided, so EGM has done its job and can be shut down.
pedantic, but: the example or
don't let the idle timeout expire.
here we have to be careful: is your robot moving and then the EGM session times out, or is your robot actually idling? Again: the session should only terminate via the timeout if your robot is actually idling. |
@jontje: this may be something we need to document better. It's not specific to this driver, as it's a base EGM behaviour, but it's surprising enough that it would warrant some explanation. Perhaps just by referring to the relevant sections in the EGM and/or IRC5 manuals though. |
It also happens when we plan and execute a motion (using MoveIt) that takes more than 60 seconds. We have a lot of those scenarios because for some reason the robot is moving very slowly.
Thanks, we'll definitely look into that. We didn't think that would be the 'way to go' because we've obviously broken some feedback mechanism in our setup. |
Can it be that this |
the default setting for You'll want to change that. You can again find that in the settings you can change with the EGM settings service. |
hm, this should not happen afaik. @jontje ? Edit: with YuMi, there are two channels. Are you using both at the same time, or only one? |
Both at the same time, and both go Edit: confirmed: both go idling after 60s while both are moving. |
I've used something like this in the past: #!/usr/bin/env python3
import rospy
import math
from abb_rapid_sm_addin_msgs.srv import *
rospy.wait_for_service('<some_namespace>/rws/get_egm_settings')
rospy.wait_for_service('<some_namespace>/rws/set_egm_settings')
get_egm_settings = rospy.ServiceProxy("<some_namespace>/rws/get_egm_settings", GetEGMSettings)
set_egm_settings = rospy.ServiceProxy("<some_namespace>/rws/set_egm_settings", SetEGMSettings)
current_settings = get_egm_settings(task='T_ROB1')
settings = current_settings.settings
print (settings)
# max_speed_deviation is in deg/s, we convert from rad/s
settings.activate.max_speed_deviation = math.degrees(3.0)
print (settings)
set_egm_settings(task=taskname, settings=settings) Be sure to update namespaces, values and add error handling of course. And be sure to use correct task names. Note: these settings are not persisted. So you'll have to run something like this every time you restart the StateMachine task(s). If you're not using the services to set these, then settings on the controller side will of course be persisted. It depends a bit on what you find most convenient and on your safety requirements. |
Thanks a lot @gavanderhoorn ! Very useful script, the robot speed is indeed much higher now. |
We've debated whether we should integrate updating the EGM settings automatically on the controller based on whatever the ROS side 'knows'. However, there are some disadvantages to that:
These things combined made us not do this by default -- as annoying as having to update the settings every time you start a session is. Based on user feedback, we may reevaluate that decision though -- perhaps we've overlooked some way of configuring the controller (without relying on the SM Addon) which could help here (using RWS perhaps?).
no, it is an issue and remains one. Based on my understanding, EGM sessions should not time out while motions are executing. So either:
I'm going to wait for @jontje to add his opinion, but I expect we should follow up on this. |
Yes, that should be true, as long as the convergence conditions are unfulfilled, which are specified in the EGM settings by the Something to test could be to decrease @robberthofmanfm, did you execute EGM motions for both of YuMi's arms?
One way to mitigate this is to set the "settings.allow_egm_motions" for respective arm. |
@jontje wrote:
IIUC, both arms were moving (#16 (comment)): @robberthofmanfm wrote:
|
When we launch bringup example 3, we get some warnings about soft limits, but I think those are fine, e.g.:
[ WARN] [1614788399.000458960]: Configured default soft limits for 'yumi_robl_joint_7': position [-3.95683; 3.95683], k: 1
What does concern me is that immediately after that, we get the following warnings, with 10 seconds interval between them:
[ WARN] [1614783640.237502918]: Timed out while waiting for EGM feedback (did the EGM session end on the robot controller?)
And indeed, the EGM session did not start yet, since we are at
Idling...
state on the robot controller.So what we do is, as the bringup example prescribes,
And then this warning message
Timed out while waiting for EGM feedback
stops for 60 seconds, as the TeachPendant also prints outStarting joint motion
. After 60 seconds, the TeachPendant goes back toIdling...
and the terminal prints warnings every 10 seconds again.What kind of EGM feedback does the
bringup_example
expect? How can we make sure it gets its feedback? Why is the joint motion stopped after a timeout period?The text was updated successfully, but these errors were encountered: