# vld_imu_slam **Repository Path**: dejunN/vld_imu_slam ## Basic Information - **Project Name**: vld_imu_slam - **Description**: 本仓库是对开源lidar,imu,slam算法的学习。请勿用作商业用途,如果使用,请引用原仓库和原文。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-09-29 - **Last Updated**: 2022-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vld_imu_slam #### 介绍 本仓库是对开源lidar,imu,slam算法的学习。请勿用作商业用途,如果使用,请引用原仓库和原文。 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 问题 ### lio-sam中没有考虑imu与lidar帧插值对齐后积分。 ### 需要用当前帧第一个采样点的时间。之后的imu数据作点云去畸变。用当前帧之前的imu数据进行当前帧的位姿估计,以及imu预计分。 ### gtsam如果bias都设为0的话,积分不会考虑重力,会把重力积分进去。 ### imu预积分估计的imu的bias容易出现过大的情况。因此,要设置相应的优化从启条件 ### imu预积分优化得到的imu的bias等状态,要想办法赋值到imu积分得到的位姿估计中 ### imu积分线程如果过快,将导致,后面优化得到的bias将无法及时用于相应数据的积分。因此,积分线程要与用到这个数据的线程沟通。原始的点云数据和原始的imu数据要存下来协同处理。 ### 悖论需要imu的数据取出点云的运动畸变,但是,后面优化bias之后,状态是在点云帧的初时时刻的,后面的imu数据有没有被积分完。 ### imu预积分估计imu状态,不是按照关键帧频率,而是按照帧间匹配频率 ### imu预积分估计的状态bias的大小和设置的bias的噪声大小有关 ### c++条件变量如果已经notif过了,后面wait的话,会不会被阻塞 ### 后端优化完之后,需要更新每个节点 ### imu积分,优化得到新的bias需要重置积分器和设置新的bias。不然,后面积分就会导致错误。同时,imu预积分和lidar odom共同优化得到的state和lidar odom差不多 ### imu优化得到的bias和状态赋值给imu积分器的时候,有时候,不能马上得到赋值后的结果。需要原子操作,貌似不支持 ### 由于匹配是使用时间最近的关键帧,因此,在结构退化的场景就容易出现问题。 ### 帧间匹配使用的localmap要使用时间最近的,不然,容易导致,较早的帧和最近帧拼合,地图失帧 ### 回环检测本质是要检测该帧是不是之前来过的地方。scancontext。而lio-sam就仅仅是检测时间和空间 ### openMP中,将其分成多线程的代码部分,读取的数据不用管,但是,需要写入改变的变量就需要线程锁保护。或者使用相关的openMP语句保护。 ### 如果不使用imu预测值进行点云匹配话,在结构退化的环境中,容易匹配失败。 但是,如果仅仅使用匹配之后的位姿的话,就会导致建图效果差 ### 如果使用历史的局部地图作为匹配局部地图的话,如果场景中有退化的环境,那么就可能由于得到错误的匹配位姿,从而影响imu积分,导致跑飞