NASA-Tensegrity-Robotics-Toolkit / NTRTsim

The NASA Tensegrity Robotics Toolkit Simulator, a physics based simulator to research the design and control of tensegrity robots.
Apache License 2.0
161 stars 81 forks source link

Sticking Friction #83

Closed brtietz closed 9 years ago

brtietz commented 9 years ago

This is an issue deep within Bullet, and is lower priority than contact dynamics for strings (corde branch) or motor models (#8). In fact with a little luck Corde may solve this problem.

Tensegrities with decent pretension (order of 10 - 30 N or more) tend to have a slight vibration that moves them around on the ground with no actuation. Large values of friction (10 - 1000) reduce this problem but do not solve it. Whatever cable/motor model we use should more directly interface with Bullet's solver, so that the cable forces are directly solvable within an MLCP solver (http://goo.gl/84N71q and http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=9496) or whatever we're using at the time. Switching to the existing MLCP solver does not significantly change the dynamics for our current implementation.

Alternatively, write a contact solver for Bullet that provides sticking friction i.e. having both static and dynamic friction values. Testing of Bullet's basic friction properties should be done (i.e. can a force be placed on an object such that friction prevents it from moving?)

Note, that work required for a good solution may be on par in work with switching physics engines, so finding an engine with both a static and dynamic friction model should be a part of addressing this issue.

brtietz commented 9 years ago

Well, on a whim I tried changing Muscle2P from using the applyForce method to the applyImpulse method (multiplying by dt to preserve the mechanics, of course). AND IT WORKED!! This is the original plot that was giving me grief: applyforce Notice how the outside left and right muscles go to the desired tension, then decrease as the tetrahedron slides forward. The following is with applyImpulse and the MLCP solver: applyimpulse And it doesn't move! Now, there is more tuning to be done with the friction, but this is the best we've ever had in that regard. As far as benchmarks, the learning spines now move about 12% faster. This may not be a perfect static friction model, but it should work for the foreseeable future. Look for a pull request tomorrow.

For those curious about the Bullet internals, applyImpulse directly affects the velocity of the body. My guess is the Muscle2P forces and friction conflicted, leading to sliding/vibration. Now we deal with them separately, and things work a little better.

vsunspiral commented 9 years ago

VERY cool! I love it when mystery energy is solved! and, I assume that you are using applyimpulse in the new corde model?

zoooom vytas

On Sep 25, 2014, at 12:06 AM, Brian Mirletz notifications@github.com wrote:

Well, on a whim I tried changing Muscle2P from using the applyForce method to the applyImpulse method (multiplying by dt to preserve the mechanics, of course). AND IT WORKED!! This is the original plot that was giving me grief:

Notice how the outside left and right muscles go to the desired tension, then decrease as the tetrahedron slides forward. The following is with applyImpulse and the MLCP solver:

And it doesn't move! Now, there is more tuning to be done with the friction, but this is the best we've ever had in that regard. As far as benchmarks, the learning spines now move about 12% faster. This may not be a perfect static friction model, but it should work for the foreseeable future. Look for a pull request tomorrow.

For those curious about the Bullet internals, applyImpulse directly affects the velocity of the body. My guess is the Muscle2P forces and friction conflicted, leading to sliding/vibration. Now we deal with them separately, and things work a little better.

— Reply to this email directly or view it on GitHub.


Vytas SunSpiral
Dynamic Tensegrity Robotics Lab cell- 510-847-4600 Office: 650-604-4363 N269 Rm. 100

Stinger Ghaffarian Technologies Intelligent Robotics Group NASA Ames Research Center

I will not tiptoe cautiously through life only to arrive safely at death.