2
$\begingroup$

I have a 4 wheeled differential drive robot, like the Pioneer 3-AT. There are only two motors, one for left wheels and one for right wheels.

I want to send velocity commands to the robot, I'm using ROS and the standard commands are: [linear_velocity, angular_velocity].

I need to convert them into left and right velocities, from literature if I had 2 wheels I should do this:

$v_l = linear_v - \omega * |r|$

$v_r = linear_v + \omega * |r|$

where |r| is the absolute value of the distance from the wheels to the robot "center".

How should I take into account that I have 4 wheels?

$\endgroup$
3
$\begingroup$

This is an old question but I see it repeated without a real answer. Sticking with a kinematic model only, here's what I would do:

4 wheel model

The linear velocity of the robot is $\upsilon$ and the angular velocity of the robot is $\omega$.

The distance to the ICR (not shown in the diagram) is $$ \frac{\upsilon}{\omega} $$ The velocity of the wheel about the ICR is $$ \omega \sqrt{ d^2+s^2} $$ The angle between our wheel and the ICR is $$ \alpha = \arctan\frac{s}{d} $$ We assume our wheels are the only thing creating motion about the ICR. $\upsilon_r$ is the linear velocity of the wheel. $$ \upsilon_r=\frac{\omega \sqrt{ d^2+s^2}}{\cos \alpha} $$

When the Instantaneous Center of Rotation (ICR) is far from the vehicle, the model is the same as the differential drive model. When the ICR is near the center of the vehicle this model is more accurate.

Just like the kinematic model for differential drives, this works well when friction is high and equal at all wheels. Rubber on concrete or hard floor for instance.

$\endgroup$
  • $\begingroup$ Your answer seems interesting, do you have any reference please? I would like to go deeper in the subject. Thanks $\endgroup$ – Regis Bekale Mar 10 at 14:39
  • $\begingroup$ There's no research reference about that. It's just Applied Mechanics $\endgroup$ – galtor Mar 11 at 7:39
3
$\begingroup$

If there is no differential between the front and rear wheels, you will be skid-steering. You will just treat it like a simple 2-wheeled differential drive robot: Calculate position of differential drive robot

It shouldn't change much, but if you really wanted to you could find the robot's center of rotation (e.g. following this question) and consider a virtual "axle" running through that point on the vehicle.

$\endgroup$
  • $\begingroup$ Thank you for your answer, yes it is a skid-steering. And if I need to estimate the drift or the slippage of the robot on a low grip terrain what should I consider? (maybe this should be a new question) $\endgroup$ – Michele mpp Marostica Jan 23 '14 at 10:57
  • $\begingroup$ I'm considering something like this: youtube.com/watch?v=5ANDE48dWLw $\endgroup$ – Michele mpp Marostica Jan 23 '14 at 10:59
  • $\begingroup$ I'd propose a new question about the slippage estimation, since that's more about sensors than control/actuation. $\endgroup$ – Ian Jan 23 '14 at 14:33

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.