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

README.md

ev3g-odometry

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

Why?

Motivation

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

Travel

Travel with Pose

Travel with Pose

Rotate using the Sensor Lego Gyro

Rotate

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

Usage

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

Downloads

Download the program here

Documentation

Platform

The project was tested with the following mobile platform.

Base

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

Brity2

Backlog

  • 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.

References

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

Juan Antonio Brenha Moral, 2016 http://www.iloveneutrinos.com

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