大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。博主创建了一个科研互助群Q:951026257,欢迎大家加入讨论。
一、确定框架
我们都是站在巨人的肩膀上(狗头),自己从零开始写代码工作量巨大切效果不好保证,那么最简单的方法就是找大佬们的开源代码用起来。目前主流的激光SLAM框架可以分为两种批量增量优化LOAM系列,与增量系列Fast-lio。其中批量优化适用于全局优化及定位,增量优化适用与局部精确定位与建图,根据自己的课题需求选择合适的框架往往会事半功倍。博主列出常用的框架
批量:LeGO-LOAM LIO-SAM KISS-ICP
增量:FAST-LIO Point-LIO R3Live++
当你确定好使用框架后,配置环境运行代码,代码成功运行后不要急。多找几个数据集跑一下,改一下参数看看如何影响最终效果,对代码和原论文思路进一步熟悉,这有利于找到问题导向和创新点。(现有的方法都是不完美的,运行测试多了自然就发现其缺陷在哪里,如何改进)
二、问题导向
1.确定研究领域和主题:
选择一个你感兴趣且熟悉的研究领域。阅读相关领域的文献,找出当前研究的热点和争议点。
2.识别研究空白:
查找已有研究中未被解决的问题或存在的争议。通过阅读最新的期刊文章、综述和会议论文,确定哪些问题仍然没有得到充分的研究。
3.提出研究问题:
确定你想要回答的具体问题。这些问题应该是明确的、具体的,并且具有可研究性。问题可以是因果关系、描述现象、比较不同情况或解决特定问题。
4.设定问题目标
根据研究问题,确定你论文的目标是什么,即你希望通过研究达到什么目的。
三、阅读源码
这一步是非常重要的,完全决定了你能否最终改出一篇论文,刚开始阅读源码是十分困难的,因为SLAM的代码量很大且一般用C++去写。可以选择经典的框架去读源码学习,因为经典框架网上一般有代码解析。阅读源码虽然不用做到知道每一行的意思,但代码执行逻辑和一个函数的作用,以及和论文中原理如何匹配是必须知道的。博主的阅读习惯如下。
- 代码文件结构
- 代码逻辑框架
- 具体函数作用
- 针对重要模块清楚每一行意思
四、找创新点
通过第二步你清楚了要解决什么问题,这一步就是该怎么解决问题,并且解决的方法要具有创新性,这也是很多同学发不出论文的原因。创新点如何来,最简单的回答就是多看论文,可以找一些综述去读。最后选择方便自己实现的创新点。当然如果不要求分区也完全可以用A+B创新的模式。现在SLAM比较容易发论文也可以与深度学习结合,难度会大大降低。
五、将创新点改进代码
这一步也难倒了很多人,并且改进去可能效果还不如原来的好,建议一个一个改,确定效果提升了再改下一个创新点。这一部分只能下硬功夫了,从小创新点改起,慢慢提升能力后改大创新点。可以借助ChatGPT的帮助,但ChatGPT给的代码往往看起来逻辑对但是直接用不了。每次改动千万记得代码备份!
六、做实验
SLAM方向对实验的要求还是挺高的,有条件的用自己数据集,没条件的用公用数据集例如kitti。实验部分一般为:
- 实验设置介绍:数据集、设备、参数设置
- 精度消融实验:自己跟自己比,验证你的创新点有没有用
- 精度对比实验:和其他算法在不同数据集上对比
- 时间或计算效率
七、选择期刊
切记一定先选择期刊再写论文,因为每个期刊的格式要求和页数是不一样的,比如RAL不允许超过8页。选完期刊,下载这个期刊的几篇与你相关的论文,看看他们怎么写,你才能更好的书写论文。
八、写论文
建议先从实验写起,因为这是你最熟悉的一部分,你的创新思路哪些最重要在消融实验中体现。写完实验你会对你的思路和创新点有更系统的认识。
最后写introduction 和摘要,大部分审稿人只是和你的大方向相关其实不太明白你具体小方向的理论,introduction是审稿人唯一了解你论文为什么研究这个、研究意义是什么,有什么难点的内容。想快速入门SLAM的同学私聊博主哦。