Hello DrLeopoldStrabismus,
The closest I can find is a FOOTBOT_MAX_FORCE defined in dynamics2d_footbot_model.cpp::25, which is then passed to the m_cDiffSteering CDynamics2DDifferentialSteeringControl object. I can't find anywhere down the chain where this constraint is applied to velocity control.
FOOTBOT_MAX_FORCE is indeed one of the variables that limits the force that the foot-bot can exert. This is enforced internally by the Chipmunk physics library.
The foot-bot is made of an "actual body", which is the body that effectively collides with stuff, and a "control body" managed by the differential steering model component. The two bodies are connected by a Chipmunk joint for translation and one for rotation. When you set the speed on the control body, the joint transforms this into forces applied on the actual body - this way the dynamics of the robot is simulated correctly.
These maximum forces tell you how much force the joint can sustain before "snapping", that is, before exerting no force anymore.
How can I programatically retrieve the maximum velocity of a footbot?
You can't, it's something that is hardcoded in the model. This can obviously change if people need to use this value - it just never occurred that someone would ask
If no method exists, what would be a sane constraint?
The maximum speed of a real foot-bot is about 20 cm/s, but for best controllability 10 cm/s is a good upper value.
Cheers,
Carlo
I made ARGoS.