-
Notifications
You must be signed in to change notification settings - Fork 41
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
Add Feature to allow runtime changes to joint friction, damping, spring properties #449
Comments
Hey there! One silly question. From what I've seen in the suggested implementation, adding this feature (and later implementation in gz-sim) shouldn't break api/abi, right? It should be able to easily backport it to fortress if needed, correct? |
correct, adding this feature shouldn't break api/abi so we should be able to backport this to fortress, though I would prefer to start by adding it to the |
Hi @scpeters, Can I work on this feature ? |
Yes, @yaswanth1701 you may work on this feature. 😁 Please target Ionic for your initial work and let me know if you have questions |
Sure. |
Hi @scpeters, I was thinking to write the test cases for the implementation of set of features to check if everything works well. Should I implement the |
yes, I think the get methods would be nice as well. The best test cases would use a physical expectation, for example, if you load a world with a pendulum initially at 90 degrees so that it would start oscillating as soon as the simulation starts; if you initialize the joint friction to a very high value, it should not move. then after a few steps, if you drop it to zero, it should start moving again. if you put it at a small value that allows some motion, it should decrease the total energy. that would be an ideal test, but it would be ok to just partially implement it for joint damping, I would expect different levels of energy dissipation depending on the damping coefficient for spring properties, you could start with a pendulum in a stable downward position then apply a spring stiffness with a reference position at 90 degrees and expect it to be pulled towards that reference position. if you add some damping, you can wait for it to come to an equilibrium and check the equilibrium point. you can also apply a constant effort or use a prismatic joint at an angle relative to the gravity vector in order to get a linear response instead of the nonlinear pendulum behavior just some thoughts, please reach out if you want to discuss further |
Thanks a lot for the suggestions Steve. I will start implementing these tests. Also, what should be the expected behaviour from the prismatic joint with constant force or gravity applied to it? |
if the parent link of the prismatic joint is the
The the
With no stiffness or damping, I would expect two regimes of behavior for a child of a prismatic joint subject to joint friction:
I would use a similar approach to predict the behavior with spring and damping properties. |
Thanks a lot for the detailed explanation Steve 😁. I will start with implementation. |
Desired behavior
There are several joint parameters specified in
//joint/axis*/dynamics
such asfriction
,damping
,spring_stiffness
, andspring_reference
. Several of these parameters are supported by thedartsim
plugin when loading from an SDFormat file, but there is no Feature for changing these parameters at runtime. Related to #96 which requested the ability to set joint limits at runtime, resolved in #260.Alternatives considered
Implementation suggestion
See #260
Additional context
The text was updated successfully, but these errors were encountered: