因为SLAM需要计算位置的变化,
为什么SLAM要用群的概念呢?群简单来说就是如下,需要满足封闭性等,是一种集合加上一种运算的代数结构。
继续采取这个迭代更新的策略势必要再想想办法,使得导数“可行”。而这就可以通过李群及其对应的李代数来实现。
Z=RP+T, 旋转矩阵怎么求,按理说也应该用导数梯度下降的方法来,但是R'不等于R+delta R啊?所以需要群的方法,构造群来做这个,使得其具有更好的导数运算性质。 导数是一种du/dR=(v2-v1)/(r2-r1),这需要加法封闭,旋转矩阵明显不行。一个旋转矩阵加上一个旋转矩阵后,行列式可能就不为1,也不正交了,即是不在SO(3)里了
旋转矩阵的特点:正交矩阵(正交矩阵(orthogonal matrix)是一个方块矩阵,其元素为实数,而且行向量与列向量皆为正交的单位向量,使得该矩阵的转置矩阵为其逆矩阵):
那么旋转矩阵集合与矩阵乘法构成群,由于其正交性质,更细的叫特殊正交群(SO)
求导
Tcw camera world从相机到世界坐标系的转换。
这就定义好了反对称矩阵符号的运算规则,和叉乘一样
扰动模型得出的是合适的deltaR,然后左乘,就得出对应的旋转矩阵了。
Sophus库
mkdir build
cmake ..
make -j2
make
编译好Sophus第三方库
然后到ch4里
用CLion打开,右上三角形运行就可以了