Odemetry - Notes¶
Table Of Contents
- What is Odometry ?
- How it works ?
- Kinematic Model
- Direct Model
- Inverse Model
- Calculation of Odometry
- Applications
- Example of Model Implementation in Matlab - Control Law
- Example of Model Implementation in C language
- Example Machine Learning Modeling of Kinematic Model
- Tools \& frameworks
- References
What is Odometry ?¶
Estimates the robot position relative to a starting location.

Odometry of a robot - the distance traveled by each of the wheels is identical, but the final positions are different.¶
How it works ?¶
graph LR
A[Input]-->B[Odometry Model]
B-->C[Output]
graph LR
A[Initial position/location]-->B[Integration of <br>velocity measurements]
B-->C[Computing of <br> new position/location]
This method is sensitive to errors due to the integration of velocity measurements over time. But we can use dynamic control model to reduce the errors (Ex : inner-loop technique etc)
Kinematic Model¶

- Allows describe the movement of the robot
- calculate the global movement of the robot from the odometric measurements
- the robot movement is controlled by the speed/velocity differential btw two drive wheels.
Where :
- $d_{l}$ , $d_{r}$ : the respective movements of the left and right wheels
- $v_{l}, v_{r}$ : the respective speeds of the left and right wheels
- $x, y, \theta$ : the coordinates of the robot (position and orientation)
- $d$ : the movement of the robot
- $v$ : the speed of the robot
- $e$ : the gap between the two wheels;
- ${\displaystyle x_{0}}, {\displaystyle y_{0}}$ and $R$ : center coordinates $O$ of the trajectory circle and its radius.
Direct Model¶
If we assume that the trajectory of the robot is a circle of radius $R$ traveled at angular rate $\omega$ :
$\omega = \frac {\mathrm {d} \theta }{\mathrm {d} t}$ ($R > 0$, if the circle is traversed counterclockwise)
Notice : $v = R\omega$ , then we have:
$\displaystyle v=R{\frac {\mathrm {d} \theta }{\mathrm {d} t}}$
then wheel speeds :
$$ \begin{matrix} v_{l}&=&\displaystyle (R-{\frac {e}{2}})\;{\frac {\mathrm {d} \theta } {\mathrm {d} t}}&=&\displaystyle (R-{\frac {e}{2}}){\frac {v}{R}} \ v_{r}&=&\displaystyle ( R+{\frac {e}{2}})\;{\frac {\mathrm {d} \theta }{\mathrm {d} t}}&=&\displaystyle (R+{\frac {e}{2 }}){\frac {v}{R}} \end{matrix} $$
Inverse Model¶
- The inversion of the previous system gives:
$$ \begin{matrix} v&=&\displaystyle {\frac {v_{l}+v_{r}}{2}} \ R&=&\displaystyle {\frac {e}{2}} \,{\frac {v_{r}+v_{l}}{v_{r}-v_{l}}} \end{matrix} $$
Calculation of Odometry¶
$$ \displaystyle \mathrm {d} \theta={\frac {d}{R}} $$
$$ \begin{matrix} x_{O}&=&x-R\,\cos(\theta -{\frac {\pi }{2}}) \ y_{O}&= &y-R\,\sin(\theta -{\frac {\pi }{2}}) \end{matrix} $$
Update the position of the robot :
$$ \begin{matrix} \theta & \leftarrow &\theta +\mathrm {d} \theta \ x&\leftarrow &x_{O}+R\,\cos(\theta -{\ frac {\pi }{2}}) \ y&\leftarrow &y_{O}+R\,\sin(\theta -{\frac {\pi }{2}}) \end{matrix} $$
Applications¶
- Robotics
- Self-Driving Cars
- Trains
- ...
Example of Model Implementation in Matlab - Control Law¶
Example of Model Implementation in C language¶
- Position
Example Machine Learning Modeling of Kinematic Model¶
@TODO
Tools & frameworks¶
References¶
en : - Odometry : - https://en.wikipedia.org/wiki/Odometry - Differential wheeled robot : - https://en.wikipedia.org/wiki/Differential_wheeled_robot - Robo-Rats Locomotion Page: - https://groups.csail.mit.edu/drl/courses/cs54-2001s/locomotion.html
fr - wiki : - https://fr.wikipedia.org/wiki/Odom%C3%A9trie - https://fr.wikipedia.org/wiki/Portail:Robotique -
- Positionnement du robot (OLIVIER COCHELIN (COCO) :
- http://manubatbat.free.fr/doc/positionning/Positionning.html
- http://manubatbat.free.fr/doc/positionning/node5.html
Additional reading and tools
- https://en.wikipedia.org/wiki/Classical_mechanics
- https://en.wikipedia.org/wiki/Kinematics
- https://en.wikipedia.org/wiki/Rotation_around_a_fixed_axis
- https://en.wikipedia.org/wiki/Coordinate_system
- https://en.wikipedia.org/wiki/Control_engineering
- https://en.wikipedia.org/wiki/Dynamical_system
- https://en.wikipedia.org/wiki/Algebra
- https://en.wikipedia.org/wiki/Mathematical_analysis
- https://en.wikipedia.org/wiki/Trigonometry
YT - Configuration and Velocity Constraints - Holonomic vs Nonholonomic