视觉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

全部内容:


  
  1. matrix 2x3 from 1 to 6:
  2. 1 2 3
  3. 4 5 6
  4. print matrix 2x3:
  5. 1 2 3
  6. 4 5 6
  7. [1,2,3;4,5,6]*[3,2,1]=10 28
  8. [1,2,3;4,5,6]*[4,5,6]: 32 77
  9. random matrix:
  10. 0.680375 0.59688 -0.329554
  11. -0.211234 0.823295 0.536459
  12. 0.566198 -0.604897 -0.444451
  13. transpose:
  14. 0.680375 -0.211234 0.566198
  15. 0.59688 0.823295 -0.604897
  16. -0.329554 0.536459 -0.444451
  17. sum: 1.61307
  18. trace: 1.05922
  19. times 10:
  20. 6.80375 5.9688 -3.29554
  21. -2.11234 8.23295 5.36459
  22. 5.66198 -6.04897 -4.44451
  23. inverse:
  24. -0.198521 2.22739 2.8357
  25. 1.00605 -0.555135 -1.41603
  26. -1.62213 3.59308 3.28973
  27. det: 0.208598
  28. Eigen values =
  29. 0.0242899
  30. 0.992154
  31. 1.80558
  32. Eigen vectors =
  33. -0.549013 -0.735943 0.396198
  34. 0.253452 -0.598296 -0.760134
  35. -0.796459 0.316906 -0.514998
  36. time of normal inverse is 0.312ms
  37. 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
  38. time of Qr decomposition is 0.182ms
  39. 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
  40. time of ldlt decomposition is 0.054ms
  41. 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也可以。

全部内容如下:


  
  1. SO(3) from matrix:
  2. 2.22045e-16 -1 0
  3. 1 2.22045e-16 0
  4. 0 0 1
  5. SO(3) from quaternion:
  6. 2.22045e-16 -1 0
  7. 1 2.22045e-16 0
  8. 0 0 1
  9. they are equal
  10. so3 = 0 0 1.5708
  11. so3 hat=
  12. 0 -1.5708 0
  13. 1.5708 0 -0
  14. -0 0 0
  15. so3 hat vee= 0 0 1.5708
  16. SO3 updated =
  17. 0 -1 0
  18. 1 0 -0.0001
  19. 0.0001 2.03288e-20 1
  20. *******************************
  21. SE3 from R,t=
  22. 2.22045e-16 -1 0 1
  23. 1 2.22045e-16 0 0
  24. 0 0 1 0
  25. 0 0 0 1
  26. SE3 from q,t=
  27. 2.22045e-16 -1 0 1
  28. 1 2.22045e-16 0 0
  29. 0 0 1 0
  30. 0 0 0 1
  31. se3 = 0.785398 -0.785398 0 0 0 1.5708
  32. se3 hat =
  33. 0 -1.5708 0 0.785398
  34. 1.5708 0 -0 -0.785398
  35. -0 0 0 0
  36. 0 0 0 0
  37. se3 hat vee = 0.785398 -0.785398 0 0 0 1.5708
  38. SE3 updated =
  39. 2.22045e-16 -1 0 1.0001
  40. 1 2.22045e-16 0 0
  41. 0 0 1 0
  42. 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个月内不可修改。