-
Sending commands to the However, when sending a command that affects the pitch axis, the resulting movement: This is even more pronounced when I am sending commands to change only the yaw and/or the roll (keeping the pitch constant) versus sending commands to change only the pitch (keeping the yaw and the roll constant). Is the likely reason something in the actual hardware (e.g., some issue with the neck ?) Or is it fixable through changing some config files (the robot's presumably)? |
Beta Was this translation helpful? Give feedback.
Replies: 21 comments
-
Looks like something similar here what happened at the summer school to the black iCub before the tendon broke and the head started spinning like crazy! |
Beta Was this translation helpful? Give feedback.
-
For Blacky there's an issue open on this: robotology/icub-tech-support#46. |
Beta Was this translation helpful? Give feedback.
-
Is there anything in software that I can try? Because sometimes different robots have same symptoms for different reasons :) Otherwise, I will just wait for the general solution (and hope the neck tendon does not snap!!!) |
Beta Was this translation helpful? Give feedback.
-
Hi @kt10aan, Would it be possible for you to do some acquisitions and report here the results? Using a simple snippet code you could:
In principle, we should be able to see big discrepancies between the pitch reference and the relative encoder feedback when in You could also check via |
Beta Was this translation helpful? Give feedback.
-
Thanks @pattacini. In |
Beta Was this translation helpful? Give feedback.
-
/cc @randaz81 @apaikan for hints on |
Beta Was this translation helpful? Give feedback.
-
@kt10aan After some testing, we find out that we have the same issue here, and that it might be caused by the slew rate limiter that was introduced at some point in the positionDirectControl module. Commenting out that block makes the robot move smoothly for us. On the other hand it might be unsafe because removing that, makes the joints not limited in velocity (even if there is still a filtering that checks that consecutive commands are not too away from each other). |
Beta Was this translation helpful? Give feedback.
-
@drdanz 👍 In my opinion, the However, the slew rate limiter could be kept and made configurable (even removed) while launching the module, so that the user is aware and able to tune it. |
Beta Was this translation helpful? Give feedback.
-
@drdanz, commenting out the slew rate limiter, did the trick. Thanks! |
Beta Was this translation helpful? Give feedback.
-
I agree with @pattacini, this issue confirms that adding the limiter is confusing. |
Beta Was this translation helpful? Give feedback.
-
Well, I do not agree at all: removing the limiter is very risky. |
Beta Was this translation helpful? Give feedback.
-
Just my 2 cents: We are playing a lot the past two days with the positionDirect and the Oculus, even giving it to people that did some quite abrupt and sudden movements in the pitch axis: everything seems more than fine. I am not saying that is not dangerous, I am just saying that (within reason), it's not that dangerous. Of course everything is a trade off between benefits and risk (and the risk is greater if you don't have IIT people within reach to fix stuff!) |
Beta Was this translation helpful? Give feedback.
-
Please also remember that even if you are confident that your module is sending correct numbers, other hidden factors (e.g network delays, thread rates etc) can play an important role. |
Beta Was this translation helpful? Give feedback.
-
I don't think that the issue here is whether to have the slew rate limiter or not, we should find out why the limiter is causing this issue instead. I suspect that there might be some delay somewhere and the value read by |
Beta Was this translation helpful? Give feedback.
-
What are the numbers we are talking about? We want the robot move fast with the Cartesian Control. Is there the risk that these thresholds will be limiting our bandwidth? How are they selected? @randaz81 I'd really like to keep those thresholds in the module rather than putting them in |
Beta Was this translation helpful? Give feedback.
-
Btw, in the assumption that the source produces "good" position trajectories (with limited bandwidth), then network lags have no impacts on risk factors thanks to the intrinsic nature of position control. Different considerations must be taken for velocities controls, for which indeed we have set a timeout. |
Beta Was this translation helpful? Give feedback.
-
You are wrong. Due to the non-linear nature of our system we have that: |
Beta Was this translation helpful? Give feedback.
-
We have to define a better check. I'll open a feature request task on a separated thread in icub-main. |
Beta Was this translation helpful? Give feedback.
-
Well, I've just added a note on network lags, which are a bit different from network drops. Anyway, at this point what scares me a lot is that the system is unstable when fed with a step of only From a control standpoint, the system robustness would increase significantly if the PID could work within a range wider than just Anyway, once more these considerations draw the attention on the |
Beta Was this translation helpful? Give feedback.
-
The problem has been actually solved, closing the issue. |
Beta Was this translation helpful? Give feedback.
-
If we keep the limiter we have to make sure that it is clear to the user when the limiter gets activated so the debug goes in the right direction (checking why the position direct commands are not smooth enough). I hope we all agree on this... |
Beta Was this translation helpful? Give feedback.
@kt10aan After some testing, we find out that we have the same issue here, and that it might be caused by the slew rate limiter that was introduced at some point in the positionDirectControl module. Commenting out that block makes the robot move smoothly for us. On the other hand it might be unsafe because removing that, makes the joints not limited in velocity (even if there is still a filtering that checks that consecutive commands are not too away from each other).
Anyway, if you want to test if the issue is the same, just remove lines 91-97 in
<icub-main>/src/modules/positionDirectControl/positionDirectThread.cpp
, but do not make excessively fast movements! ;)We are still investigati…