-
Notifications
You must be signed in to change notification settings - Fork 2
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
torque timeout while running wholeBodyDynamicsDevice throught yarprobotinterface #449
Comments
To recap the nominal behaviour of the torque estimation infrastructure. Every 10 ms, the |
Here are some comments:
Recommendation: I would start by adding a logger in embObjMotionControl:: updateMeasure() which measures the statistics of the actual time gap between successive calls for the same joint. Or more simply: print a yWarning() if the time gap is more than a threshold (say 90 ms). Then we can analyse these stats and attempt to make a fine tuning where required or investigate deeper if the measured time gap is always 10 ms and there are |
That seems to be relatively easy, as just involves some changes on the |
I am thinking of a class (or a set of classes) which produces a histogram for a generic measure. This class will be efficiently written and be able to compile and run on YARP but also on the EMS / MC4PLUS etc. In this way we can measure statistics of the frequency that we expect to be 10 ms in several places of the communication chain. |
Given that the problem seems to be related to thread scheduling, I would also check the processes that run on the Slightly unrelated, but we should also make sure that this important threads run with high priority w.r.t. less time-critical threads, especially when running in Linux with the RT_PREEMPT patch enabled. |
Hi, I have created a new branch https://github.com/robotology/icub-main/tree/checkFreqOfTRQmeasures where I have modified embObjMotionControl:: updateMeasure() to keep tracks of all its calls for every joint. Every time the function is called its time is logged, the delay between calls for the same joint is computed and its histogram is produced. If the delay is too high, say > 60 ms, a yWarning() is instantly triggered. Moreover, every 60 seconds the full probability density function (PDF) of the random variable delta(j) is printed. The variable delta(j) is the time between two consecutive calls for updateMeasure() for the joint j quantized with a staircase transfer function:
In ideal case of 0 jitter, the PDF is an impulse centered in [5, 15), but if there are jitters we can have more pulses. As an example, in case of presence of jitters of 10 ms we expect to see pulses also in [0, 5) and [15, 25) because sometimes there are two consecutive calls spaced by 20 ms. Starting from tomorrow we can test the new code and then decide if to keep it always online by merging the branch into devel. |
A quick update: Hence, for long simulations I think that there is possibility that delay gets > 100 ms There is some activity now, carried out by @diegoferigo, to change the scheduling priority of threads which are involved in the processing chain. |
This issue occurred also on |
To clarify: it is still under investigation if the issues affecting |
@marcoaccame and @valegagge increased the watchdog to 150ms as a temporary workaround to decrease demo failures. Today, we have been running (almost the whole day) demos, and this issue did not occur. Can you confirm? @gabrielenava @S-Dafarra @pi-q P.S. |
@DanielePucci The value I changed in Round Robin scheduling priority was chosen very randomly and it didn't solve the problem. After chatting with @marcoaccame, I understood better how is handled the (optional) support of the scheduler priority in |
#449 (comment) I can confirm. No fallings due to |
A quick update on the issue. The method Despite this behavior, it does not fully explain the occurrence of the hardware fault, that happens when the delay of the torque estimation is greater than @serena-ivaldi my last comment does not work for your case. I was informed that |
@olivierrochel-inria can you help on this? I will be away the next week.. |
robotology/yarp#1231 should have fixed this issue. |
I close this issue since we tracked down and fixed the problem. @serena-ivaldi Since your issue has a different origin, when you have more information please put them in #454. |
@traversaro commented on Tue Feb 28 2017
Today on
iCubGenova02
we experienced the following failure:@traversaro commented on Thu Apr 20 2017
We had a discussion with @valegagge back in march. She told me that they in the past they also experienced problems in the communication between the PC104 and the EMS, so the problem could also be related to that.
@DanielePucci commented on Thu Apr 20 2017
This problem is happening again: @pi-q @gabrielenava @S-Dafarra are going to provide support to @valegagge to care of this problem (e.g. post the logs of the recent occurrences)
@traversaro commented on Thu Apr 20 2017
As this is probably a system problem, related to the interaction of the
wholeBodyDynamicsDevice
with the rest of the iCub ETH interface, I think it make more sense to move this issue toicub-support
.The text was updated successfully, but these errors were encountered: