-
Notifications
You must be signed in to change notification settings - Fork 35
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
base controller 2 doesn't reach command velocity according to odometry #392
Comments
Did you send translation commands in your experiment too, or was this rotation commands only? Given the complex kinematic setup of the control via caster wheels, I'm not surprised this does not work perfectly. And in practice the observed behavior seemed to suffice for most experiments up to now.
Do you have similar plots for this condition?
I believe there is nobody left in the field who could answer this question. |
I can also see an error during translation.
I didn't save them, but I can create some if you'd like. It basically matches perfectly, when I command a constant speed. It lags a bit behind during acceleration, but that's to be expected.
For the PID controller? no, was to afraid to touch that.
I have a temporary hacky solution that seems to work, because we have a deadline coming up. I've noticed that, when driving forward the offset is approx. 0.015 and when yawing its 0.04, which is also approx 0.015 vel of the outer wheel. So I just add that to the linear velocity and seems to work fine until now. |
I don't think these plots mean a lot unless you send the same controls to compare the different implementations.
I meant to ask whether the behavior you see could be related to coupling between linear and rotation targets.
Too bad. :) Of course, your "hacky" solution will not be applied to upstream. |
When I send a twist to the pr2 base, it doesn't reach the commanded velocity, according to odometry.
This does not happen when we put the pr2 on blocks, so that the wheels are in the air. So I suspect that it is related to friction caused by the pr2's weight.
We thought that such a steady state error should be fixable by increasing the I term for the wheels in the base controller 2 config file. But all it did was making the caster wheels behave weirdly. So I looked into the code and I think the pid controller is not used properly.
pr2_controllers/pr2_mechanism_controllers/src/pr2_base_controller2.cpp
Lines 470 to 473 in c01cb6f
Here the new command for the wheels gets computed. The first term is error, where the velocity needed to help with the steering is put. And for error dot, the velocity difference is put, needed to make the robot drive forward. But that means that P and I only affect the steering and D affects how the pr2 drives forward. That seems very weird to me, is there a reason for this? It makes it impossible to get rid of the steady state error through tuning of the pid controller.
The text was updated successfully, but these errors were encountered: