Summary

I’ve been interested in this space for about 6 months now, but this past week, I’ve really started to dive in. For the most part I am familiarzing myself with software & dependenices, which has been a headache, but is hump I have to overcome at some point. So far here is what I’ve learned on the software side:

On the math side of things I started learning about coordinate transformations. The idea is that there is some global reference coordinate system and robot’s local coordinate system. Ultimately we want to know the robots position with respect to the global system, so we need a way to transform between coordinate systems.

We can use the coordinate transformation matrix $\begin{bmatrix} cos(\theta) & sin(\theta)\\ -sin(\theta) & cos(\theta) \end{bmatrix}$ to transform our coordinate system. This matrix is actually the same as the rotation matrix $\begin{bmatrix} cos(\theta) & -sin(\theta)\\ sin(\theta) & cos(\theta) \end{bmatrix}$ rotated in the negative theta direction. This makes sense because we can either rotate or coordinate system by theta or rotate our point by negative theta and achieve the same final coordinates.

In 2d these rotation transformations are linear, meaning that v = R1v1, v2 = R2v1, v2 = R1R2v. So v2 = R(theta1 + theta2)v. In 3d this does not hold.