Home | Tutorials | Wiki | Issues
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

According to the manual ODE approximates the contact between two bodies using a set of contact points. Given two geoms o1 and o2 that potentially intersect, the method dCollide generate these contact points and store them in an array then used to create contact joints. Depending on geoms type a different collision function is called. Usually the number of contact points as well as their order is determined within this latter function. For example in the case of box-plane collision dCollideBoxPlane method is called. It computes up to 4 collision points on the box and orders them based on their collision depths.

I suppose Atlas feet are approximately considered as boxes (check the feet collision meshes), that's why you get only 4 contact points. In ODE there is the possibility to create custom collision functions as callbacks, but I don't know how much effort is needed to change gazebo simulation code.

What you can easily do, instead, to get more collision points is to replace the collision meshes of Atlas feet with a more refined mesh made up by triangles (is easy to create one and export it in an STL file using Blender for instance).

Be careful since each extra contact point added to the simulation will slow it down, so sometimes we are forced to ignore contact points in the interests of speed.

Hope this can help.

According to the manual ODE approximates the contact between two bodies using a set of contact points. Given two geoms o1 and o2 that potentially intersect, the method dCollide generate these contact points and store them in an array then used to create contact joints. Depending on geoms type a different collision function is called. Usually the number of contact points as well as their order is determined within this latter function. For example in the case of box-plane collision dCollideBoxPlane method is called. It computes up to 4 collision points on the box and orders them based on their collision depths. depth.

I suppose Atlas feet are approximately considered as boxes (check the feet collision meshes), that's why you get only 4 contact points. In ODE there is the possibility to create custom collision functions as callbacks, but I don't know how much effort is needed to change gazebo simulation code.

What you can easily do, instead, to get more collision points is to replace the collision meshes of Atlas feet with a more refined mesh made up by triangles (is easy to create one and export it in an STL file using Blender for instance).

Be careful since each extra contact point added to the simulation will slow it down, so sometimes we are forced to ignore contact points in the interests of speed.

Hope this can help.