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.
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.
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
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.
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.
Download the program here
- Configuration
- Motion Model for a Wheeled robot
- Remote Debugging with Bluetooth
- Trigonometry
- Developer notes
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)"
If you have some doubt, please create a issue in the project.
- EV3Dev Mapping
- Odin
- LeJOS RCX RotationNavigator.java
- Robot Nav
- Sariel section about Wheels
- Cartographer
- David Anderson notes about IMU Odometry
- COS495-Lecture5
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.