Cylinder/Capsule rigid contacts with ground plane causing drift on differential drive robot?

I have been struggling with an issue regarding drift on a differential drive robot and have noticed a few things:

When using cylinders for wheels, calling draw_env_rigid_contacts()does not produce any indicators for contact with the ground plane besides one small dot from the caster wheel at the beginning. Also, the velocities of the wheels are pretty erratic which I assume is due to the faces on the cylinder. Changing the number of faces on the cylinder does not produce different results.


However, when using capsules there are two contact points at either end of each capsule. The velocities oscillate quite a bit, but not as severely as when using cylinders. Tuning the PD parameters on the velocity controller do not seem to fix the problem.


Shouldn’t there be contact points drawn for the cylinder? And shouldn’t the capsule have contact points that extend the length of the capsule?

You can find the source code here: GitHub - devarsi-rawal/crawler