One wheel goes faster than the other one

Hi I recently got the pololu 3pi robot. And I’m having a complication.

I’m not using any maze solver nor line follower code, I’m just trying to move it straight foward, but suddenly turns out, one wheel moves just a little faster(or easier) than the other one and I can’t make it go straight.

I check out the wheels without turn it on and I realized that it is easier to move one wheel with my finger than the other one. I tried using some oil, but it didn’t seem to help. I also tried to compensate the speed with code making something like this:


And well this did help somehow, but It doesn’t make it perfectly straight.

The batteries are equally a full charged, I know the code is just find and the only modification that I did was to solder 2 female headers 1x7, like in this page: to have serial communication using PD0.

If someone could help me or give at least ideas it would be great.

Thanks anyway.


What you are seeing is completely normal: motor speed varies slightly from motor to motor due to minute differences between the motors. A ±10% difference (or more) in motor speed between two same-model motors powered at the same voltage should not be surprising, and what you’re describing seems to be way better than that if a 1/255 = 0.4% change results in a significant improvement.

In general, making a differential-drive robot go straight is a complicated task that typically requires closed-loop feedback, such as from encoders. When you use the 3pi as a line-follower, you are closing the loop with feedback from the reflectance sensors, and the robot is able to drive in straight lines. However, without any sort of feedback, the best you can do is characterize your motors so that you can manually set them to different “speeds” in order to get relatively straight driving. For example, to drive in a straight line, your motor 2 speed might always need to be approximately 5 less than your motor 1 speed. (Note that it might be more even more complicated than this: the required speed difference might be a function of the overall speed, so you might need to perform a series of tests to determine what speed difference is best at, say speed 50, speed 100, speed 150, etc.)

By the way, the 3pi motors are already lubricated and should never need re-lubrication.

- Ben

Just wondering…how hard is it to fit an encoder to the wheels?
Yours Simon M.

Hello, Simon.

The 3pi was not intended for use with encoders. There aren’t enough free I/O lines to process two quadrature encoders, and there isn’t really physical space on the board to add them. That said, several people have found ways to add encoder feedback, but what they did was either pretty low-tech (e.g. using a reflectance sensor to look at the side of the 3pi wheels and trigger off the three spokes) or incredibly advanced (e.g. moving the motors and disconnecting the reflectance sensors to gain more I/O lines). There are probably some clever things you could do involving expansion boards, but generally that would be beyond what we could directly advise you on (though I’d be happy to provide you feedback if you want to run some ideas by me).

If you want a robot with encoder feedback, I suggest you make it from scratch using various components we sell. You can buy most of the 3pi components individually and put them together on one of our laser-cut chassis or something you design yourself.

- Ben

I’m interested in doing exactly this, but haven’t been able to find the components list for the 3pi. Can someone point me to the right place?

Also interested in opinions. If wheel encoders and feedback aren’t sufficient to make it travel in a straight line, what’s the simplest supplement to make sure that it does?

Hello, mgw.

I am not sure what component list you are looking for. The simplest supplement would be to add a straight line to your 3pi Robot’s environment that it follows.

- Ryan

The component list for the 3pi robot - . I want to use an arduino with motor shield and wheel encoders, but would be interested to know exactly what motor, wheels, voltage regulators, caster, etc. are used on the 3pi just to give me a starting point. I’ve hunted and can’t find the information. I know I’ll probably feel silly when you show me where it is.


Hi, Matt.

We don’t post a bill of materials for the 3pi Robot. You can probably get what you want to do by some combination of the information on our round robot chassis product page, and the 3pi Robot schematic.

- Ryan

Already did that, but still wasn’t able to pin down exactly which motor, for example, and some other details. So was looking for the specific information if its available. You must have a bill of materials that you use when you make them. Did you intentionally decide not to publish it for a specific reason? If so, I’m OK with that. Just asking.


Hi, Matt.

We do not publish a complete bill of materials for many reasons. One reason is that we do not want to be tied down to specifying particular components. Sometimes parts become unavailable and we need to replace them with other parts. We would not want our customers to use our bill of materials and come to rely on specifications of the parts in there, if they might change. Please ask whatever specific details you are interested in and I will try to answer the best I can based on our current component list.

The motors are our 30:1 micro metal gearmotors.

- Ryan

Thanks. This was helpful.

Now I have some beginner questions. What are my options for making connections to the terminals of the micro-metal gear motor and to the breakout board for the quadrature encoder, Are there solderless connectors that fit? With the breakout board screwed tight to the platform as shown in the picture, how do you avoid part of the electrical connection messing up the wheel alignment by protruding through the bottom of the encoder board? Any tips for soldering to the tiny motor terminals?

Unfortunately, I don’t know of any solderless connections for the motor terminals. For the encoders, you could solder some of our breakaway headers in place. There are holes on the chassis right where the headers would protrude. Then you could connect to them with some of our jumper wires.

- Ryan