I was looking at the contact points for the Atlas in the DRCsim package. Each foot has 4 contact points at each vertex of the rectangle. I'd like to know how these points are determined. I've tried looking at the ODE code, but C++ isn't my strong suit so I had some difficulty figuring out what was going on. What I understand is that ODE compares the geometries one by one however it's not possible to compare all points so it only compare a select few points. What I'm trying to understand is what basis are those particular points selected? Why does the Atlas have the 4 contacts set up the way they are, and not some additional points on the heel? Can I add them myself?



Collision detection is a main part of ODE

ODE has two main components: a dynamics simulation engine and a collision detection engine.

For ODE, there is a wiki page outlining how that part of ODE works. Collision is detected between geometric primitives that have been defined to resemble the shape of the simulated objects. There is a trade-off here between speed and accuracy. More complicated shapes will require more checks and reduce the overall performance of the simulation.

The basic geometry is not so complicated. The difficult part is making the checks fast. Diving into the C++ code might be challenging because of this.

And yes, you should be able to change the collision model. Have a look at the model files. Note that the collision model not necessarily the same as the visualisation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.