ROS学习方法论

收集大佬们的经验,汇总一下。

1、作者:小葡萄;链接:https://www.zhihu.com/question/35186064/answer/473908402

        建议不要上来就搞一大堆资料学习,这样效率很低,又学不精,又没成就感。

        可以先看重点关注一些经典的书籍和经典算法。

        视觉SLAM建议先看一下高博的《视觉SLAM十四讲》,同时再把ORB-SLAM2深入看明白、看透彻,最能把ORB-SLAM复写出来。再去看其他视觉SLAM算法的话,基本上就能豁然开朗。

        学习激光SLAM的话可以看《概率机器人》,同时把gmapping、Cartographer搞清楚,也要能复写,能推导公式。

        一定要写code。尽量把所有算法都推导、实现一下。


2、  知乎链接: 学习两年多,感觉SLAM太难了,大家对此有什么想法? - 知乎

        关于SLAM学习方法论,我觉得可以用"螺旋上升"这四个字来概括,大家可以根据自己的喜好和实际基础,选择从理论或者代码开始看。下面假设先从理论开始学习,当然从代码开始学习也是类似的。

        第1步:假如以理论开始看起,就是涉猎各种会议期刊论文、博客、知乎,看得过程中肯定有很多不懂的很正常,一般论文或者博客都会提及相应的一些开源代码实现。

        第2步:然后你就可以挑一两个开源代码框架自己安装到电脑上运行跑跑数据集;如果你能将一两个开源代码亲自安装到电脑上,并且解决安装过程中的各种bug和兼容性问题,并成功的把数据集跑通了,相信你的编程和代码功底绝对有了质的飞跃。这时候你就会想,我光跑跑别人的数据集有什么用,于是你就想自己改改这些代码中的一些功能,比如给ORB-SLAM2添加一个地图保存功能(原版ORB-SLAM2是没有这个功能的)、或者让AMCL重新上电后能记住之前的位置(这样就不需要费劲吧啦的重定位搜索过程),当然要改代码,必须懂原理。

        第3步:因此就要重新回到理论学习,这次就不是泛泛看书了,而是有针对性的看你要解决的问题所涉及的具体理论知识。比如你要实现ORB-SLAM2的地图保存功能,你就需要知道ORB-SLAM2的地图数据结构是什么,这个地图数据结构中涉及到关键帧、共视关系图、生成树本征图等概念,你就需要针对性的理解。当你对开源代码做了一些改进后,你可能信心百倍,想要搞到真实机器人上玩玩,这个时候就要回到实操。

        第4步:这个时候的实操就与之前跑个数据集不一样了,而是要考虑真实的机器人上的传感器,以及传感器数据的标定校准,tf转换关系,以及代码在机器人主板上的实时性能,还有整个系统的稳定性,就需要更全面系统的知识,实现系统性技术突破,达到这个程度你应该就是大牛了,带领团队做实际的项目,或者站在顶层解决最核心的技术问题。


 激光SLAM:

 

小知识:

        ① Mono(单目)、Stereo(双目)、IMU(里程计)、Line(线特征)、Encoder(编码器)

        ② 一般用 IMU 测角度,轮式里程计(wheel Odometry)测距离。

 相关课程:3D视觉工坊公众号



kitti数据集(raw原始数据)的使用:

        kitti数据集使用-rosbag-rviz - 古月居

猜你喜欢

转载自blog.csdn.net/qq_40528849/article/details/124626822