Assignment 4 Rovios

Though Rovio is just a toy robot, yet it is still very powerful with all these accessories -- wifi, high-res camera, microphone, etc. Most importantly, it has three omni wheels.
"Omni wheels or poly wheels, similar to Mecanum wheels, are wheels with small discs around the circumference which are perpendicular to the rolling direction. " wikipedia
With this kind of omni wheels, Rovio is able to move any direction.

Here is my video of Rovio find its way home:

The first thing to do in order to plot the trajectory of a Rovio is to find inverse Jacobian, which can be found by calibrating Rovio.
Here is the inverse Jacobian:

where fl is the encoder tick of left wheel, and fr is the encoder tick of right wheel, and so on. 
With inverse Jacobian, I can find Jacobian which can further recover the entire trajectory based timestamps and encoder tick.

Here is how:

Here is the expected trajectory (the orange trail) :

Here is the actual trajectory (green circle represents possible deviance): 
Here is a 3D view:

Here is the recovered trajectory from encoder tick (the black trail):
1. Inverse Jacobian is very useful, yet it's hard to obtain.
2. Using Rovio video feed to create a autonomous car would be very interesting. I have a basic idea that using graph-cut to segment out the ground, so the rest will be obstacles, which Rovio has to evade. Simple idea, yet very possible since the video feed is so close to the ground.