Skip to content
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

Preliminary implementation for servo motor #566

Merged
merged 4 commits into from
Jan 7, 2016
Merged

Preliminary implementation for servo motor #566

merged 4 commits into from
Jan 7, 2016

Conversation

jslee02
Copy link
Member

@jslee02 jslee02 commented Dec 6, 2015

This pull request is a fundamental work for servo motor joint.

The current implementation of the servo motor joint works fine for general cases, but there are some corner cases it can't handle properly. For example, a servo joint is allowed to use infinite force to achieve the desired velocity, and, at the same time, the joint is reached the position limit where the desired velocity is toward the position limit. Then the two constraint forces will race against each other to achieve their objectives and will be ended up infinite constraint forces that will drive the constraint solver to undefined behavior. This confliction can happen with Coulomb friction as well.

There are two possible solutions to handle these corner cases I can come up with now:

  1. We just don't allow infinite joint forces for Coulomb friction or servo motor.
  2. We treat a joint with infinite Coulomb friction or infinite servo motor force as a kinematic joint. For instance, a joint with infinite Coulomb friction theoretically shouldn't be moved at all, or a joint with infinite servo motor force should perfectly follow its desired velocity. Then, we resolve the conflictions by setting their priorities. For example, position limit should be satisfied always, and then Coulomb friction constraint should be satisfied over servo motor constraint.

Also, some user might be interested in getting how much joint force was applied to the joint from the servo motor, but there is no place to store it in the current API. This will be addressed in Actuator class later.

- Each joint constraint impulse is added up to the joint instead of overwriting the total impulse everytime.
- This should resolve #317 as well.
@jslee02 jslee02 added this to the DART 6.0.0 milestone Dec 6, 2015
@jslee02
Copy link
Member Author

jslee02 commented Dec 10, 2015

This pull request fixes #297 and #317.

@karenliu
Copy link
Member

karenliu commented Jan 7, 2016

Looking good to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants