Skip to content
This repository has been archived by the owner on Apr 18, 2020. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This project has been designed to offer a set of Custom EV3 Blocks to be used in your projects to add Odometry features to wheeled robots. The solution uses Gyro sensors to improve the accuracy of the movements.

EV3 Odometry



The EV3 programming environment offers a basic solution based on rotations to use on your wheeled robots but if you need an advanced solution based on Odometry, in many scenarios to have to move to other alternatives based on Textual programming languages as Java LeJOS, the platform EV3Dev or Robot C. In the past, the NXT Brick, existed a project named Odin designed with a similar goal but NXT programs are not compatible for EV3 so implemented this project from Scratch. This project tries to offer a solution for LEGO Users using the visual programming environment to move robots using Odometry features.

What is Odometry?

Odometry is the use of data from motion sensors to estimate change in position over time. It is used by some legged or wheeled robots to estimate their position relative to a starting location. This method is sensitive to errors due to the integration of velocity measurements over time to give position estimates.

Source: Wikipedia

Custom EV3 Blocks



Travel with Pose

Travel with Pose

Rotate using the Sensor Lego Gyro


Rotate with Pose using the Sensor Lego Gyro

Rotate with Pose

Rotate using the Sensor Cruizcore XG1300L

Rotate Cruizcore

Rotate with Pose using the Sensor Cruizcore XG1300L

Rotate Cruizcore

EV3 Utility blocks

Show BT Pose

Show Pose

Read BT Pose

Show Pose

Show Pose

Show Pose


You can use the EV3 Blocks at home, FLL Contest or similar Contests. Remember if you are going to use this project on FLL, you will have to demostrate the Maths used in the project.

Show Pose

Carpets and other surfaces where your wheeled robot suffer

If you try to use your wheeled robot on a carpet or a similar surface, you noticed that your robot don´t reach the distance that you indicated. This problem is due to some kind of errors:

Sources of odometry error:

  • Friction
  • Gear slack
  • Wheel slippage
  • Battery charge
  • Timing issues

To solve this kind of solution, a easy way is to calculate the error generated by the surface to increase the required distance that you tried to reach but it is not a perfect solution.

Using the robot on a Carpet


Download the program here



The project was tested with the following mobile platform.


Download the LDD design. In few hours it is possible to run the same tests



  • Add the block to Rotate with the Sensor Mindsensors AbsoluteIMU
  • Add the block "RotateTo(Angle in Degrees)"
  • Add the block "GoTo(x,y)"

Questions & Issues

If you have some doubt, please create a issue in the project.


Note: My sincere thanks for Bmegli by his technical support.

Juan Antonio Brenha Moral, 2016

This project is not connected to or endorsed by The LEGO Group. LEGO, Mindstorms are trademarks of The LEGO Group.


A set of Custom EV3 Blocks for Mobile Wheeled robots designed with Lego Mindstorms EV3







No packages published