视觉SLAM十四讲|《视觉SLAM十四讲 第二版》笔记及课后习题(第四讲)
读书笔记:李群与李代数 上一讲,我们介绍了三维世界中刚体运动的描述方式,包括旋转矩阵、旋转向量、欧拉角、四元数等若干种方式。我们重点介绍了旋转的表示,但是在SLAM 中,除了表示之外,我们还要对它们进行估计和优化。因为在SLAM 中位姿是未知的,而我们需要解决什么样的相机位姿最符合当前观测数据这样的问题。一种典型的方式是把它构建成一个优化问题,求解最优的R;
t,使得误差最小化。
如前所言,旋转矩阵自身是带有约束的(正交且行列式为1)。它们作为优化变量时,会引入额外的约束,使优化变得困难。通过李群——李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。
(这一章是纯数学的内容)
文章图片
文章图片
李群(Lie Group):
- 具有连续(光滑)性质的群。
- 既是群也是流形。
- 直观上看,一个刚体能够连续地在空间中运动,故SO(3)和SE(3)都是李群。但是,SO(3)和SE(3)只有定义良好的乘法,没有加法,所以难以进行取极限、求导等操作。
- 通常记作小写的so(3)和se(3)。书中以哥特体突出显示。
- 事实上是李群单位元处的正切空间。
文章图片
文章图片
文章图片
实践部分 useSophus: 依然是出现上一讲的错误:
error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
在
CMakeLists.txt
中加入:set(CMAKE_CXX_FLAGS "-std=c++11 -O2")
然后还得去3rdparty文件夹中安装相应的
Sophus
库文件,然后编译执行可得结果:文章图片
具体结果如下:
/home/wh/shenlan/slambook2/ch4/cmake-build-debug/useSophus
SO(3) from matrix:
2.22045e-16-10
1 2.22045e-160
001
SO(3) from quaternion:
2.22045e-16-10
1 2.22045e-160
001
they are equal
so3 =00 1.5708
so3 hat=
0 -1.57080
1.57080-0
-000
so3 hat vee=00 1.5708
SO3 updated =
0-10
10-0.0001
0.0001 2.03288e-201
*******************************
SE3 from R,t=
2.22045e-16-101
1 2.22045e-1600
0010
0001
SE3 from q,t=
2.22045e-16-101
1 2.22045e-1600
0010
0001
se3 =0.785398 -0.7853980001.5708
se3 hat =
0-1.570800.785398
1.57080-0 -0.785398
-0000
0000
se3 hat vee =0.785398 -0.7853980001.5708
SE3 updated =
2.22045e-16-101.0001
1 2.22045e-1600
0010
0001Process finished with exit code 0
examples: 又依然是出现上一讲的错误:
error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
在
CMakeLists.txt
中加入:set(CMAKE_CXX_FLAGS "-std=c++11 -O2")
编译后依然出现找不到文件错误:
trajectory ./example/groundtruth.txt not found.
trajectory ./example/estimated.txt not found.
依然和上一讲那样,将路径修改清楚后再编译执行后成功:
文章图片
课后习题
文章图片
1.验证SO(3),SE(3)和Sim(3)关于乘法成群:参考这篇博客
2.验证(R^3,R,X)构成李代数:参考这篇
3.验证so(3)和se(3)(李代数)满足李代数雅的性质,se(3)同so(3)证明相似:参考这篇
【视觉SLAM十四讲|《视觉SLAM十四讲 第二版》笔记及课后习题(第四讲)】4.验证性质(4.20)和(4.21):参考这篇
5.直观的来讲,反对称矩阵p和Rp相似,相似表示的是不同基下相同的变换,此式表达的是在以R为基的(Rp) ^变换与原变换p ^相同,公式推导在这里。参考《Lie groups ,lie algebras, projective geometry and optimization for 3d Geometry,Engineering and Computer Vision》p18:
文章图片
6:第6题 有如下2.66性质,证明见《Lie Groups:An Introduction Through Linear Groups》
文章图片
参考《strasdat_phd2012》Lie groups部分
7:高博课程给出了结果:
文章图片
8:可参考本人之前关于CMake的博客,也可参考这篇。
find_package采用两种模式搜索库:
Module
模式:搜索CMAKE_MODULE_PATH
指定路径下的FindXXX.cmake文件,执行该文件从而找到XXX库。其中,具体查找库并给XXX_INCLUDE_DIRS和XXX_LIBRARIES两个变量赋值的操作由FindXXX.cmake模块完成。Config
模式:搜索XXX_DIR指定路径下的XXXConfig.cmake文件,执行该文件从而找到XXX库。其中具体查找库并给XXX_INCLUDE_DIRS和XXX_LIBRARIES两个变量赋值的操作由XXXConfig.cmake模块完成可选参数例如版本控制:
find_package(OpenCV 3)
。先决条件是首先需要安装库:如
apt-get install
或者sudo make install
。推荐阅读
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- 我与我的小区(十四)
- 遇见第三十四天
- 《癸酉金石二十四节气之“清明”》
- 推酷《Guru|推酷《Guru Weekly》第十四期
- 二十四节气灸“白露灸”
- 《教育心理学》读书笔记十四---学校班级管理的现状分析与策略研究
- 《青春在硬盘里灼烧》第十四章:名利猛贪无有足
- Ruth之第二十四天复盘
- 进阶任务十四