# 2 wheeled, 2 motor robot control

I decided to work on a 2 wheeled robot position mapping problem. For that I have 2 DC motors with encoders from pololu. I have the following two questions:

1. Do I need to know the model of each motor in order to tune a controller?

2. What are the steps/approach used to get a good mapping (let's say 1 mm maximum error)?

As Gouda mentioned, you cannot get any reasonable accuracy without knowing exactly how the control inputs translate to wheel movement.

This is a very hard problem: Imagine knowing only that approximately 6 volts are being applied to each motor, but not knowing anything about the efficiency of the motors in converting this to torque, the friction of the gears which translate that torque to the wheel, or the friction of the wheels and the floor in translating that torque to movement. This goes on an on. I have never heard of this working, or even being attempted.

Instead, encoders are used to measure the effect of the control inputs on the wheels, but counting how much the wheel rotates. This is called using odometry to estimate the path of the robot, and was answered here

You say that you are trying a "position mapping problem", I think by this you mean that you want to track the position and orientation relative to the starting location of the robot. This is known as relative localisation. A mapping problem is quite different.

Unless the terrain you are on is high-friction and flat with good wheel contact, and your mechanics in your robot are very high tolerance, I think it will not be possible to get any kind of accuracy close to 1mm for say a 2m path.

If you want to try anyway here are the answers to your questions:

1) Do you need to know the Dynamic Model of the motors? Yes, if you want very high accuracy. In addition you will need the dynamic model of the entire robot's mobility system; all in all this is a difficult task. I would try this without the dynamic model first, using only a kinematic model. You can have a PID controller on each of the motors to achieve closed-loop speed control using the encoders.

2) The only sensor measurements you have available to you are encoders on the wheels, which cannot observe the absolute position of the robot, but can estimate the velocity (plus noise). Such an approach (without absolute measurements of position/orientation) is known as Dead Reckoning, and is subject to drift in the estimate as the robot continues to move. As such, if your path is infeasibly short (5-10cm), you could in theory achieve a 1mm accuracy, however moving another 5-10cm will increase your error further.

• Any suggestion on how to get the dynamic model of each motor? Feb 1, 2015 at 8:25