一、方案选择

对于某种场景应该选择那些传感器、使用那种算法框架、传感器的安装方式,有人根据自己的经验给出了一些建议。

0. 其它

  • d3vo:用深度学习估计位姿的不确定性
  • 单线的可能不适合fast lio2。
  • Apriltag对机器人定位,把相机放在天花板上,离地面大概3m,标签大小大概7*7cm,放在机器人上,机器人移动时,相机能看到就能定位
  • gps融合lidar有必要做紧融合吗?没必要,gps很容易掉,即使在室外

1. 获取轨迹真值

现有一个大疆云台,可以避免摄像头抖动。需要走一个矩形来测试SLAM的精度。真值至少要比你自己的位姿高1个数量级以上.

  • 造价低的导轨
  • 起点运动到终点的闭环运动,计算闭合差
  • 用RTK组合导航测试精度
  • 室内也可以用动作捕捉, 动捕设备Vicon(https://www.vicon.com/)
  • 便宜的方案是天花板贴二维码,用pnp二维码的作为真值

2. 经典框架

  • 视觉+IMU+轮速计的slam算法: https://github.com/TouchDeeper/VIW-Fusion
  • vins紧耦合gps或者2Dlidar: https://bittly.sigechen.com/
  • VIO: https://zhuanlan.zhihu.com/p/497942945
  • 1. 2d激光雷达的多传感器融合
  • rf2o,cartographer
    2. IMU+轮式
  • https://mp.weixin.qq.com/s/GlxOfxjicOzt3KRx-QQiKg

3. 数据集

  • 搭载激光雷达和imu的公园、树林一类的数据集: liosam提供了一个park数据集,树林环境

10.

  1. 跑cartographer用2D 3D激光雷达。英特尔深度相机,直接跑orbslam3不用cartographer。

二、设备选型

不同的场景、性能需求、算法、价格等因素都会影响传感器设备的选择。如果有别人的经验,可以降低选择和尝试的成本。

1. imu

  • 阿路比lpms nav3;Stim 300
  • 国产的几百块钱的,输出频率100hz多一点的IMU能跑起来lio-sam吗?试过hi229,可以跑
  • 2. 扫地机器激光雷达

    单线激光雷达,用cartographer,有的带有视觉融合。carto建图,基于高精地图使用amcl定位,carto实时定位比较消耗资源。cartographer,建图可以,走的时候,经常会遇到问题。还有就是断电后,激光的好像很难恢复。

3.

5. RGB-D相机

  1. 第一代kinect用的结构光,第二代用的飞行时间tof

7. 带imu的相机

如果是做rgbdslam的话,azure kinect没得跑了;zed2,realsensed435i,都带。 我目前室外d435i,内置IMU感觉不咋样,这相机应该不错,很多家产品已经搭载了,d435i的模组。 realsense的视野比较窄,旋转太多就没有鱼眼相机稳定。d435i都快3000了。银牛好像可以作为realsense的平替产品。

9. 红外相机

11. innovusion激光雷达(图达通)

合作方:蔚来无人矿卡

12. 华测定位设备

组合导航:610、410、220松耦合,630紧耦合。接入轮速计可把误差从5‰减小到2‰.断开查分一段时间后会变为浮点解,进入遮挡后立即变为浮点解。PPS授时。

矿场边坡监测、形变监测。使用GNSS+太阳能板,定时发送数据判断是否警报,可达毫米级精度。

16. 其它产品

  1. 华为的cpe总会自动升级,关闭升级也不行,而且升级后不会保留配置。中兴的不会自动更新软件,更新也不会修改配置。

三、工具使用

仿真

1. 轨迹仿真

用excel表格弄出主车和目标车的位置信息和速度、相对速度信息,用Vissim仿真出两辆车的行驶轨迹动态图像。

精度评估

2. evo
  • 默认计算平移,也可以加入 -r full 参数选项,同时计算平移+旋转的误差。使用的参考连接
  • 用evo评估orb-slam轨迹,使用命令行,不是在ros里面。

100.

可以用hexo搭建博客。放弃使用hexo,因为会在md文件中插入大量hexo语法,降低了md文件的通用性。

框架优化

1. VO实时性优化

考虑速度的话,一秒钟30张图片太多,所以一开始有必要特征点匹配求出位姿和三维地图点,后面就没必要每帧都花费算力去求三维地图点了。只用去前面帧上匹配三维地图点就行了。当后面的帧距离太远了,三维点不够用的话,就再求一些三维地图点。每次求三维地图点这些帧,就是关键帧了。地图就是用关键帧求的三维点构成的,没有地图就没办法局部优化,回环优化。特别是回环优化,对精度影响比较大.


四、工程化中的问题

1. g2o版本

pic pic pic

error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1> >::BlockSolver(LinearSolver*&)

是版本问题,你看看你这个代码对g2o版本的要求吧

2. 激光雷达使用经验

  • 激光雷达底座的水平旋转,相当于标定错误,会导致识别结果的位置错误
  • 雷达点云周围出现圆环,可能是雷达周围近距离处的物体的反射,例如车体、保护结构等
  • 安装位置较高时,大视场角可水平放置,小视场角应向下倾斜
  • 灰尘附着对雷达有影响但不大
  • 翻滚角导致激光雷达把路径外障碍物误报为路径内障碍物

3. 毫米波雷达

  • 毫米波纵向测速准,侧向靠近或离开的障碍物检测不准
  • 毫米波的挡板材料会影响感知效果
  • 毫米波雷达有正负信号等四根线,接错后不会导致雷达损坏,但效果等同于雷达未连接电源

4. rtk

  • rtk出现固定的向左侧或向右侧的偏差,可通过修改标定值解决
  • rtk的传输:天线 –> 线缆 –> 设备 –> 线缆 –> 工控机
6

利用ros构建过大型的八叉树地图,用200张图片构成的点云图转换八叉树地图,但是rviz直接内存炸了。200帧,按640*480分辨率应该也就1个多G吧,八叉树内存炸不了,rviz处理这些点云的显示需要更大量级的内存和计算,所以炸了。也可能是八叉树启动时没有设置好分辨率,导致节点过多,然后导致炸了。

7

如果发现处理后的激光雷达点云明显缺少较低处的点云,有可能是64线的激光雷达当作32线处理了。

8

RANSAC算法需要迭代的次数期望值N与待估计模型的自由度K的关系。自由度越大,模型越复杂,所需迭代次数越多。(1-p^k)^N<0.05

10

闭环检测模块优化的是整个回环内所有的位姿。实践中看到的是距离当前帧比较近的关键帧位姿发生了明显变化。

11

Cartigrapher没有轮速计的情况,就建图来说差不多。不过需要先去畸变


五、数据集

STF数据集

两个通用的点云特征数据集,尤其是雨雾天气 STF