SLAM十四讲笔记进行中
ch2
主要记录cmake用法。
cd 到CMakeLists.txt所在的文件夹
CMake
mkdir build
cmake .. //通过 cmake .. 命令,对上一层文件夹,也就是代码所在的文件夹进行编译
make //当我们发布源代码时,只要把 build 文件夹删掉即可。
./helloSLAM
./useHello
CMakeLists.txt
#声明要求的cmake最低的版本
cmake_minimum_required(VERSION 2.8)
#声明一个cmake工程
project(HelloSLAM)
#添加一个可执行程序
#语法:add_executable(程序名 源代码文件)
add_executable(helloSLAM helloSLAM.cpp)
add_executable(useHello useHello.cpp)
# 静态库以.a 作为后缀名,共享库以.so
# 静态库每次被调用都会生成一个副本,而共享库则只有一个副本,
add_library(hello_shared SHARED libHelloSLAM.cpp)
target_link_libraries(useHello hello_shared) #这个可执行文件会调用什么库
ch3
3.1旋转矩阵
- 内积 投影 向量的反对称矩阵
- 特殊正交群 旋转的矩阵描述了相机的旋转
- 变换矩阵和齐次坐标
- 特殊欧式群
3.3 旋转向量和欧拉角
- 旋转向量。旋转可以用一个旋转轴和一个旋转角来刻画。
(1)旋转矩阵使用一个向量,方向为旋转轴,长度为旋转角。Axis-Angle。
(2)变换矩阵,使用一个旋转向量和一个平移向量。- 旋转向量到到旋转矩阵的变换为,罗德里格斯公式
- 旋转矩阵到旋转向量
由于旋转轴上的向量在旋转后不发生改变,转轴 n 是矩阵 R 特征值 1 对应的特征向量- 欧拉角 把一个旋转分解成三次绕不同轴的旋转
(1)绕物体的 Z 轴旋转,得到偏航角 yaw;
(2)绕旋转之后的 Y 轴旋转,得到俯仰角 pitch;
(3)绕旋转之后的 X 轴旋转,得到滚转角 roll。
(4)一般都是rpy,会有一个万向锁的问题:俯仰角为90度时。
总结:旋转矩阵和变换矩阵有冗余,欧拉角和旋转向量虽然紧凑但是有奇异性。
3.4 四元数
- 复平面,复平面上乘i是旋转90度,https://zhuanlan.zhihu.com/p/38100173 这里面有一个图,很直观的表示了复平面
- 四元数 q = q0 + q1i + q2j + q3k ,一个实部和3个虚部,ij = k