-
Notifications
You must be signed in to change notification settings - Fork 54
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
EGM frequency #49
Comments
Hello @lIlIlI1, The EGMControllerInterface assumes that the user always wants to send a command back to the robot, after a message has been received. This means that the inner loop is waiting for the user to call the write(…) method, and it is likely that this is interfering with your measurements since it seems like you don’t do that. I am planning to change this so that the interface class can be configured to skip the waiting. In the meanwhile, you can try again after commenting out the following lines in your local clone: Your questions:
I have not made any measurements myself, and I haven't noticed any problems due to control lag in the applications I have worked with. However, those applications haven't had strict requirements on the motions.
You can try and turn off the EGM filter that is used by default inside the robot controller. You need to update the system configurations and you can do this according to: RobotStudio --> Controller tab --> Configuration --> Motion --> External Motion Interface Data --> Update the instance you are using (or add a new instance) to use Level = Raw instead of Filtering You need to restart the robot controller afterwards.
Those are the values from the manual and I haven't verified them myself. One thing to note is that the robot controller sends out messages every 4 ms, and then it's up to the external side to reply with new EGM references within the next 4 ms. When new references have been received, then there is the delay until they actually affect the robot's motion. I hope this helps! |
Closing due to inactivity. |
I'd like to ask this here since it seems related to the conversation. I'm also working on reducing the controller lag, and implementing a
|
Hi @jbeck28, Have you tried any of the suggestions I mentioned in the comment above? And what
Do you mean that this occurs when you tell the robot controller to start up the EGM communication? Or when you already have an EGM channel established, and then activate your EGM has a configurable
I haven't made any measurements myself, so I unfortunately don't know. Is your driver's loop driven by data (i.e. loops when EGM messages are available), or do you for example use something like |
@jontje thanks for your reply, and sorry for my delay. Time got away from me. I did try everything listed in that comment, and I will say the control lag seemed to improve, I now see lag on the order of 40 to 50 ms, rather than 70 to 80.
The jerky start of motion actually typically takes place well after the EGM communication has been started. Typically, it occurs after execution of a long trajectory. I'll run a trajectory through moveit which takes roughly 20 minutes (often 100,000 points on the trajectory msg), then once the robot reaches the end pose of the trajectory, I'll wait a bit for it to settle, and then issue a move command to get it out of the way... at which point there's a control lag, and the controller wildly overshoots leading to the "dynamic load" error on the controller. Often the robot won't even try to move as the commanded velocity is so large. Come to think of it, this might even be unrelated, as it seems only to really happen after execution of trajectories. But it really did seem caused by controller lag when I commented.
The loop at first would loop only when EGM messages are available, using the waitForMessage() method. I will add a timeout of less than 4ms, and I suppose if this doesn't fix the jitter, the issue likely isn't with EGM..? |
Hi, I actually encountered the same problem. I wasn't yet able to track it down completely, however, I fixed the control lag by switching from EGMManager to EGMControllerInterface. Maybe that also helps you. |
Hi all, I am also looking into this problem. The ABB documentation about EGM states:
Do you think there is an additional delay using this repo, or am I misunderstanding something? |
Hi @jontje , I have a question about EGM frequency.
So, I'm using this library with IRB 4600, and I tried to print out the time it took to get new data from the robot both using real robot and RobotStudio. Since I used your sample codes, I'll just put the codes that are related to this issue here:
It turns out in RobotStudio, it takes about 0.016s, and 0.025s when working with the real robot. My setup is following:
I noticed that you mentioned control lag in issue #15 and I checked ABB documentation. As you also mentioned in issue #25 that you're using 4ms primarily, so the questions are:
Appreciate any feedback. Thanks.
The text was updated successfully, but these errors were encountered: