-
Notifications
You must be signed in to change notification settings - Fork 527
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Derivative error issue in the effort-based joint position controller #52
Comments
I think I know what the underlying problem is here. The controller has two This explains why you have a slower response, the Pid is always trying to reach the position command with zero velocity. I see two solutions to fix your problem:
@davetcoleman was using this controller recently. Dave, did you stumble upon this issue?, or were you calling directly the |
I believe I caused this inadvertently. Will submit fix today/tomorrow. |
I do not have a setup right now to actually run and test this fix, but let me know if it solves your problem. I created a new flag that indicates which |
Yes, the new code fixes the problem. |
Great! |
Move DiffDriveController member functions.
I have found that joints that use the effort-based joint position controller don't settle as quickly as I would expect. Here is a test case:
Use the GUI to drive the vehicle back and forth. Most important, click the "brake" button to bring the vehicle to a sudden stop. You'll see the chassis oscillate quite a bit, as if the shock absorbers aren't doing enough damping.
If you go into joint_position_controller.cpp and remove vel_error from the call to computeCommand(), then rebuild and drive the vehicle again, you'll notice that the shock absorbers have much better damping characteristics. In fact, they are doing exactly what I'd expect, given their parameters. Perhaps JointPositionController::update() could be modified so that it would call the two-parameter version of computeCommand() if the command originated from a call to setCommandCB().
The text was updated successfully, but these errors were encountered: