I have the EV3 education kit.

When I create a program and upload it to the brick and run it, the first time it runs very well and the robot goes in a straight line, then makes a 90 degree turn. But when I run it again it does not move the same way: it does not go in a straight line and turns 95 degrees or 86 degrees.

Can anybody help me find why?

  • Are you sure the battery is charged? Are you confirming that the motors rotate the proper distance? What is the method of travel (walking, steering, etc.)? What firmware are you running on the EV3?
    – Gliderman
    Feb 19, 2016 at 22:31
  • the battery is charged and i use move tank block (the robot has two rear wheels Responsible for moving the robot ) and i use 1.09 home edition firmeware
    – islam
    Feb 20, 2016 at 4:50
  • Do you tell the wheels to rotate a certain distance, or just "forward" until something happens? Same with the turning, do you tell it degrees, or just x time, etc.? What happens if you turn it off, and then back on and run, will it run straight for the first run? What surface is the robot on? Is your robot's weight distributed evenly? I will mention that there are firmware replacements out there that give you non-drag-and-drop programming, but much more accuracy when it comes to traveling and rotating as they can use the tachometers built into the motors (and do things like auto-pilot).
    – Gliderman
    Feb 23, 2016 at 3:11
  • I tell the wheels to go forward until it see a color or a distance by ultrasonic sensor and turn until the gyro sensor read an angle but the problem is when the wheels start to rotate there is one wheel start rotate earlier than the other wheel so the robot doesn't move well I try to replace the motors and the cables but there is no change.the robot weight distributed evenly.
    – islam
    Feb 24, 2016 at 3:56

3 Answers 3


Contrary to the previous answer, I don't believe that the problem is EV3.

I do believe that your problem is a hardware issue. I have personally run a test or two on this, and my conclusion is that the wheels are set off kilter on their axles.

The answer is bushings. Bushings are the little doodads that keep a gear or wheel in place on the axle. Put one on either side of a wheel, and the result is that those 90-degree turns, which produce torque on the wheel, relieved by movement along the cross-axle, will no longer set your wheel out of place. If this doesn't work, I would do as the commentators and other answer-er suggest, and make sure that your unit can hold a charge.

Measure this by telling just one motor with your EV3 unit to turn. Measure the amount of rotation. Now run the program again. You don't need anything attached on the motor, so as not to throw it off, and when the next turn program is run, you will have your answer based on the amount of rotation.

If it is lower, your EV3 doesn't hold charge anymore, and you need a new one. Sorry.

If it is the same, it is a structural problem, and you just need to make sure that nothing is moving noticeably out of place when running it.


So it appears there is nothing wrong with the structure of your robot, you just aren't confirming that the robot is turning its wheels the proper distance. I am not sure how to do that with the drag-and-drop EV3 software, but my recommendation is to have some sort of feedback loop that reads the rotation of the motors from their tachometers. If you can, make sure that the move block is combined with the other wheels move block and not separate so that the firmware can't think that it should start the moves at separate times.

There are firmware replacements out there that do this feedback loop automatically, if that would be a preferred option. This allows them to rotate exactly 90 degrees or move x centimeters.

You mention that you use the gyro, the last time I used that it seemed to be very hard to calibrate. If the reading from it drifts over time even though the robot is sitting perfectly still, that could be part of your problem during rotates as well (and perhaps traveling if you use it to drive straight).


I know that gyros can be unpredictable. I'd recommend displaying the output of the gyro to the screen, and watching it. Is it drifting even when the robot isn't turning? That may be why. The only fix I've found is to hold the robot steady, then unplug the gyro and plug it back in, all while the robot is being held still. Then, check if the gyroscope is drifting. If it is, repeat from step one.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.