视觉SLAM十四讲从理论到实践第二版源码调试笔记(理论基础1-6章)

举报
zhangrelay 发表于 2021/07/15 03:57:54 2021/07/15
【摘要】 2019-2020-2学期机器人工程专业需要开设SLAM技术课程,使用教材为视觉SLAM十四讲从理论到实践第二版。 为方便学生学习课程知识,将Arduino、ROS1、ROS2和SLAM集成到课程定制版镜像中。链接如下: https://blog.csdn.net/ZhangRelay/article/details/102596056 第一章 预备知识 关键词:数学...

2019-2020-2学期机器人工程专业需要开设SLAM技术课程,使用教材为视觉SLAM十四讲从理论到实践第二版。

为方便学生学习课程知识,将Arduino、ROS1、ROS2和SLAM集成到课程定制版镜像中。链接如下:


第一章 预备知识

关键词:数学、C++、Linux

学有余力的同学,请完成课后习题。

第二章 初识SLAM

关键词:SLAM、g++、IDE

g++ helloSLAM.cpp -o hello_slam

熟练使用:mkdir build , cmake .. , make等。

IDE环境使用KDevelop或者VSCode等都行。

第三章 三维空间刚体运动

关键词:矩阵、四元数、欧拉角、Eigen

全部内容:


      matrix 2x3 from 1 to 6:
      1 2 3
      4 5 6
      print matrix 2x3:
      1	2	3
      4	5	6
      [1,2,3;4,5,6]*[3,2,1]=10 28
      [1,2,3;4,5,6]*[4,5,6]: 32 77
      random matrix:
       0.680375   0.59688 -0.329554
      -0.211234  0.823295  0.536459
       0.566198 -0.604897 -0.444451
      transpose:
       0.680375 -0.211234  0.566198
        0.59688  0.823295 -0.604897
      -0.329554  0.536459 -0.444451
      sum: 1.61307
      trace: 1.05922
      times 10:
       6.80375   5.9688 -3.29554
      -2.11234  8.23295  5.36459
       5.66198 -6.04897 -4.44451
      inverse:
      -0.198521   2.22739 2.8357
        1.00605 -0.555135  -1.41603
       -1.62213   3.59308   3.28973
      det: 0.208598
      Eigen values =
      0.0242899
       0.992154
        1.80558
      Eigen vectors =
      -0.549013 -0.735943  0.396198
       0.253452 -0.598296 -0.760134
      -0.796459  0.316906 -0.514998
      time of normal inverse is 0.312ms
      x = -55.7896 -298.793  130.113 -388.455 -159.312  160.654 -40.0416 -193.561  155.844  181.144  185.125 -62.7786  19.8333 -30.8772 -200.746  55.8385 -206.604  26.3559 -14.6789  122.719 -221.449   26.233  -318.95 -78.6931  50.1446  87.1986 -194.922  132.319  -171.78 -4.19736   11.876 -171.779  48.3047  84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237  28.9419  111.421  92.1237 -288.248 -23.3478  -275.22 -292.062  -92.698  5.96847 -93.6244  109.734
      time of Qr decomposition is 0.182ms
      x = -55.7896 -298.793  130.113 -388.455 -159.312  160.654 -40.0416 -193.561  155.844  181.144  185.125 -62.7786  19.8333 -30.8772 -200.746  55.8385 -206.604  26.3559 -14.6789  122.719 -221.449   26.233  -318.95 -78.6931  50.1446  87.1986 -194.922  132.319  -171.78 -4.19736   11.876 -171.779  48.3047  84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237  28.9419  111.421  92.1237 -288.248 -23.3478  -275.22 -292.062  -92.698  5.96847 -93.6244  109.734
      time of ldlt decomposition is 0.054ms
      x = -55.7896 -298.793  130.113 -388.455 -159.312  160.654 -40.0416 -193.561  155.844  181.144  185.125 -62.7786  19.8333 -30.8772 -200.746  55.8385 -206.604  26.3559 -14.6789  122.719 -221.449   26.233  -318.95 -78.6931  50.1446  87.1986 -194.922  132.319  -171.78 -4.19736   11.876 -171.779  48.3047  84.1812 -104.958 -47.2103 -57.4502 -48.9477 -19.4237  28.9419  111.421  92.1237 -288.248 -23.3478  -275.22 -292.062  -92.698  5.96847 -93.6244  109.734
  
 

./eigenGeometry

./coordinateTransform

./plotTrajectory

图示如下:

./visualizeGeometry 

图示如下:

第四章 李群与李代数

关键词:SO(3)、SE(3)、Sophus

./useSophus 

编译需要注意“sophus/se3.hpp”,路径要配置正确,如果不想配置,就sudo make install也可以。

全部内容如下:


      SO(3) from matrix:
      2.22045e-16 -1 0
       1 2.22045e-16 0
       0 0 1
      SO(3) from quaternion:
      2.22045e-16 -1 0
       1 2.22045e-16 0
       0 0 1
      they are equal
      so3 = 0 0 1.5708
      so3 hat=
       0 -1.5708 0
       1.5708 0 -0
       -0 0 0
      so3 hat vee= 0 0 1.5708
      SO3 updated =
       0 -1 0
       1 0 -0.0001
       0.0001 2.03288e-20 1
      *******************************
      SE3 from R,t=
      2.22045e-16 -1 0 1
       1 2.22045e-16 0 0
       0 0 1 0
       0 0 0 1
      SE3 from q,t=
      2.22045e-16 -1 0 1
       1 2.22045e-16 0 0
       0 0 1 0
       0 0 0 1
      se3 =  0.785398 -0.785398 0 0 0 1.5708
      se3 hat =
       0   -1.5708 0  0.785398
         1.5708 0 -0 -0.785398
       -0 0 0 0
       0 0 0 0
      se3 hat vee =  0.785398 -0.785398 0 0 0 1.5708
      SE3 updated =
      2.22045e-16 -1 0 1.0001
       1 2.22045e-16 0 0
       0 0 1 0
       0 0 0 1
  
 

./trajectoryError 

第五章 相机与图像

关键词:OpenCV

./imageBasics ubuntu.png

./undistortImage

 ./stereoVision

./joinMap

第六章 非线性优化

关键词:最小二乘法、高斯牛顿法、列文博格-马夸尔特法、Ceres、g2o

./gaussNewton

./ceresCurveFitting

如果出现:./g2oCurveFitting: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory

使用如下方式:

$ sudo gedit /etc/ld.so.conf

添加:/usr/local/lib

运行:sudo ldconfig

再次运行:

./g2oCurveFitting

对比求解时间:

  • gaussNewton:solve time cost = 0.000938872 seconds.
  • ceresCurveFitting:solve time cost = 0.00942216 seconds.
  • g2oCurveFitting :solve time cost = 0.000908874 seconds. 

依据电脑配置会有差异。

作业为完成1-6章课后习题。


 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/103071586

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。