Trying to Turn the robot

Hi everyone,

I have a “Qik 2s12v10” Motor Controller, and an Arduino controller.
The motor controller is connect to four dc motors and has its own power supply. The right side motors are connected to motor1 and left motors to motor0. Input voltage is 7.2v.
The robot, moves forward and backward without any issues.
When tries to turn, if it’s on a stand, wheels not touching ground, wheels turn in opposite direction, but when the wheels are touching ground, wheels don’t turn, just a jerk.
Below is the code; please advise.

void MobiloTurn( void )
{
  if ( IR_Distance_L >= IR_Distance_R )
  {
     Motor_F = 140;
     Motor_B = 138;
  }
  else
  {
    Motor_F = 136;
    Motor_B = 142;
  }
  Cmnd[0] = Motor_F;
  Cmnd[1] = 110;
  for ( int i = 0; i < 2; i++ )
  {
    Serial.write( Cmnd[i] );
  }
  Cmnd[0] = Motor_B;
  for ( int i = 0; i < 2; i++ )
  {
    Serial.write( Cmnd[i] );
  }
}

Thanks,
Barmak

It looks like you are not quite setting the motors to their highest speed, but if you can see the motors behaving as expected when you hold the wheels off the ground and they are not turning at all on the ground, then this seems like a mechanical issue.

Turning a differential drive robot requires overcoming the friction of your robot (i.e. your wheels need to slip), and it sounds like your combination of motor power, sideways friction, and surface friction are too much to overcome. So, aside from just getting more powerful motors, some options you could consider to resolve an issue like that are replacing two, or all of your wheels with some that have less side-to-side friction (e.g. omni-wheels). You might also consider a different drive train configuration such as a two wheel drive solution with a swivel or a ball caster as a third point of contact, or a six-wheel drive configuration where either the middle wheel is a little lower than the others (so you avoid dealing with the friction from all the wheels at once) or where the outer wheels have low sideways friction. Additionally, a shorter front-to-back distance (i.e. wheelbase) and a longer side-to-side distance (i.e. track) between the wheels will reduce the load when turning as well.

- Patrick

Thank you, Patrick.

The thing is it moves forward and backward even when the wheels are on the ground.
It only doesn’t work when the left and right wheels are turning in opposite directions.

Good day,
Barmak :sunglasses:

For your robot to drive forward or backwards the robot’s wheels just need force and traction in the same direction they are spinning. When your robot turns from the motors on each side turning different directions, the wheels need to slip sideways (perpendicular to the direction they are spinning), which changes the dynamics of the system by increasing the forces each motor needs to overcome.

You can see this yourself by just by playing with a high grip wheel in your hands. Rolling the wheel on a surface requires a much less force than translating it sideways on the same surface.

- Patrick

Interesting.
Thanks for the info, Patrick.

Will try with another set of wheels.

Good day,
Barmak :sunglasses: