Skip to content
This repository was archived by the owner on Feb 3, 2025. It is now read-only.

ODE Joints don't support friction parameter #381

Closed
osrf-migration opened this issue Jan 12, 2013 · 21 comments
Closed

ODE Joints don't support friction parameter #381

osrf-migration opened this issue Jan 12, 2013 · 21 comments
Labels

Comments

@osrf-migration
Copy link

Original report (archived issue) by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


At ODEJoint.cc line 113, the ODE joint friction parameter is ignored. There is a warning, but we should implement this.

@osrf-migration
Copy link
Author

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).


  • changed state from "new" to "on hold"

Until 2.0

@osrf-migration
Copy link
Author

Original comment by Ian Chen (Bitbucket: Ian Chen, GitHub: iche033).


  • changed state from "on hold" to "open"

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


  • set component to "physics::ODEPhysics"

@osrf-migration
Copy link
Author

Original comment by Fadri Furrer (Bitbucket: ffurrer).


Is there already a plan to implement this?

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


It's not on our short-term list; please vote for the issue if it's important to you.

@skuinder You might be interested in this one too.

@osrf-migration
Copy link
Author

Original comment by Jonathan Bohren (Bitbucket: jbohren).


Is this still unsupported? It's really desirable.

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


I am going to start on this today. I will post an outline of my approach, write a test, and then start implementing it. Please feel free to give feedback at any point if you're interested.

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


ODE and Bullet have "joint motors" which will try to force the joint velocity to match a specified value, with a limited maximum force (see ODE user guide, dParamVel and dParamFMax).

The ODEJoint class currently uses this functionality for the Joint::SetVelocity API, though Bullet does not. I would propose to implement ODEJoint::SetVelocity in a different way, then implement joint friction by setting dParamVel = 0 and dParamFMax = friction.

@osrf-migration
Copy link
Author

Original comment by Jonathan Bohren (Bitbucket: jbohren).


@scpeters I would propose to implement ODEJoint::SetVelocity in a different way, then implement joint friction by setting dParamVel = 0 and dParamFMax = friction.

That sounds reasonable, I'd be happy to try it out, though I probably wouldn't be able to until October.

@osrf-migration
Copy link
Author

Original comment by Silvio Traversaro (Bitbucket: traversaro).


@scpeters What you describe seems to implement the Coulomb friction, while in URDF [2] and SDF [3] documentation the friction joint attribute is described as :

The physical static friction value of the joint.

What do you think?

Given that terminology on Coulomb/static friction can be inconsistent across literature I am using the terminology proposed in [1], see figure 1 at beginning of page 3 for a clear explanation.

[1] : http://robotics.tch.harvard.edu/publications/pdfs/armstrong1994survey.pdf

[2] : http://wiki.ros.org/urdf/XML/joint

[3] : http://osrf-distributions.s3.amazonaws.com/sdformat/api/dev.html#friction384

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


@traversaro Thanks for pointing out the imprecision. Looking at Fig 1b in [1], I think it would require more than one parameter to describe static + Coulomb friction. With only one parameter, I would choose Coulomb friction. I will update the sdformat documentation accordingly.

@osrf-migration
Copy link
Author

Original comment by Silvio Traversaro (Bitbucket: traversaro).


@scpeters It makes sense, the Coulomb + Viscous model is much easier for doing simulation and also friction estimation/compensation in real world.

If only the SDF definition is changed the mismatch between URDF/SDF should be clearly stated. By the way it seems that some users are already changing the URDF friction parameter semantic meaning to Coulomb friction coefficient, see for example [1].

[1] : https://github.com/RobotLocomotion/drake/blob/master/doc/drakeURDF.xsd#L539

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


  • set assignee_account_id to "557058:5de38267-b118-494c-aa76-4fab35448816"
  • set assignee to "scpeters (Bitbucket: scpeters, GitHub: scpeters)"

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Created #1275 to track the implementation details for simbody.

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


First pass at implementation for ODE and a test is in 32def69 (branch issue_381). The test fails for bullet and dart, and is disabled for simbody.

This breaks ODEJoint::SetVelocity, so that will have to be fixed before this can be merged to a release branch.

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Created #1281 to track the implementation details for dart.

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


see pull request #1206 for the initial ODE implementation

@osrf-migration
Copy link
Author

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


resubmitted as pull request #1221

@osrf-migration
Copy link
Author

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).


  • changed state from "open" to "resolved"

Resolved in pull request #1221

@osrf-migration
Copy link
Author

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).


  • set version to "all"

@osrf-migration
Copy link
Author

Original comment by Nate Koenig (Bitbucket: Nathan Koenig).


  • changed state from "resolved" to "closed"

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

No branches or pull requests

1 participant