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 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.
Originally posted by mrslvgg with karma: 81 on 2016-07-04
This answer was ACCEPTED on the original site
Post score: 1
Original comments
Comment by Mav14 on 2016-07-05:
Thanks for that answer. The Atlas feet are indeed approximated as boxes however the STL file is already made up of triangles I don't know how I would refine it further and whether that refinement would stop gazebo from approximating it as a box.