Skip to content

Commit

Permalink
add some pdf for autodriver
Browse files Browse the repository at this point in the history
  • Loading branch information
kahowang committed Apr 13, 2022
1 parent aa5a9e3 commit ccc8b1c
Show file tree
Hide file tree
Showing 591 changed files with 37,377 additions and 7 deletions.
32 changes: 32 additions & 0 deletions 待问问题.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 待问问题

## 1.lio_sam 在程序中默认初始化的bias为0,这样做是否正确,kitti的数据集自身补过bias,tixiaoshan供大家测试的数据集也补了bias吗,实际有必要上电静止标一下bias 吗?



## 2.世界系的问题。VINS初始化中,需要对重力进行估计,用绝对的重力作为世界系。那么在LIO系统中,为什么不需要对重力进行估计呢,LIO系统中一般是以谁作为世界系原点(lidar 第一帧的位置? 还是gnss第一帧位置?)

答:

**WGS84**:Apollo 采用的是 WGS84 ( World Geodetic System 1984 )作为标准坐标系来表示
物体的纬度,经度和高度。

**UTM** : 将球面经纬度坐标经过投影算法转换成的平面坐标,即通常所说的 XY 坐标,单位为米制。UTM 相当于是把世界分成了若干个 ENU 坐标系,每个 zone 对应一个 ENU 。Apollo采用的是将 WGS84 -> UTM

**ENU**:导航系下的坐标表示,一般为"前左上" 。 课程采用的是 wgs84 -> ENU

**LIO + GNSS** : 任乾课程所配套的框架为 lidar + ins (imu + gnss) , 导航系的原点为 第一帧 ins 的位置,为ENU系下的坐标。具体转换为,ins 获得WGS84 坐标系下的经纬高,然后将 经纬高 信息转换为ENU坐标系下的位置信息。注意,该位置信息的x,y 是由经纬映射而来,z直接复用“高”信息。 ENU 系下

**LIO** : fastlio , lidar + imu(6DOF) 系统,跟vins一样,需要估计重力的方向,使用绝对重力作为导航系。 ENU 系下。

**VIO**: vins , 需要估计重力方向,使用绝对重力方向作为导航系的原点。ENU 系下。

**LO** : loam、lego_loam ,因为没有绝对重力矫正,只有单雷达传感器,所以在mapping的过程中,以第一帧点云的雷达所在位置为导航系的原点。

注意:

1.LIO + GNSS 、LIO 、VIO 等多传感器融合系统都是ENU系下,多种传感器数据融合都需要找到一个绝对的world做转换。

2.a.LIO + GNSS 系统中,因为使用的是惯导,默认已经完成一系列的初始化,所以不需要进行重力估计,也可以很容易得到ENU下的坐标。b.LIO 和 VIO 系统因为没有GNSS 信息,所以无法获得绝对的ENU信息,可以通过估计imu的重力方向,使用重力方向确定 ENU(前左上)的“天”,进而确定导航系下的原点。c.LIO_SAM 因为使用的是9DOF IMU,磁力计可以获取绝对重力,所以不需要额外做重力估计。

3.lego_loam 的去重力部分,就只是通过外参,把imu的重力分量去掉了,没有说有估计重力的部分。是因为在lego_loam 这类系统里,默认机体是平放地面,Z轴朝上, 而VINS考虑到手持飞控等场景,所以需要额外估计重力方向。但是为了系统具有更强的鲁棒性,所以静止几秒估计重力的方向会更好。("激光比较重型,除了机载的特殊轻型激光,一般都默认水平安装的")
6 changes: 6 additions & 0 deletions 第七章 基于滤波的融合方法/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1210,7 +1210,13 @@ bool KITTIFiltering::SetInitGNSS(const Eigen::Matrix4f &gnss_pose) {
| ![2021-10-12 12-32-51 的屏幕截图](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E5%85%AD%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A112021-10-12%2012-32-51%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png) |
| ![2021-10-12 13-21-40 的屏幕截图](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E5%85%AD%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A112021-10-12%2013-21-40%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png) |
## 6. 关于ESKF 的一些个人理解
重温:[多传感器融合定位理论基础(八):基于滤波的融合方法](https://leetcode-cn.com/problemset/all/)
1.以误差作为状态量的滤波方法ESKF(Error state kalman filter)较为常用,“EKF尝试通过线性化来近似名义状态的变化,而EsKF则尝试通过线性化来近似误差状态的变化”。而使用位姿做更新的EKF方法也成为(名义方程)。在完成一次ESKF迭代后,有点需要主要的是:当有新的融合数据进来,要进行一次新的观测时,因为之前的状态量已经用来补偿了,因此需要清零,所以此时的 先验状态量 delta_x_k_hat = 0 。 变化的更新体现在观测上 delta_y = (预测值 - 观测值) 。
​ edited by kaho 2021.10.12
​ edited by kaho 2021.10.12
24 changes: 24 additions & 0 deletions 第五章 惯性导航原理及误差分析/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -475,4 +475,28 @@ virtual bool Evaluate(double const *const *parameters,

![analytical2](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E5%9B%9B%E7%AB%A0%E7%82%B9%E4%BA%91%E5%9C%B0%E5%9B%BE%E6%9E%84%E5%BB%BA%E5%8F%8A%E5%9F%BA%E4%BA%8E%E7%82%B9%E4%BA%91%E5%9C%B0%E5%9B%BE%E5%AE%9A%E4%BD%8Danalytical2.png)

### 4. 课程答疑总结

#### 4.1 重定位问题

问:定位这一块,借助 gps 能大致获取 pose(这里假设 gps 初始比较到位),初始的 orientation 只能沿各个方向去搜索是吧。然后当定位
丢了,现在普遍采用什么样的形式去进行重定位,已经在运行中了,点云在不断的变化,已经很难去定位了吧。

答:在有惯导的前提下,可以使用惯导的姿态来做重定位的初始化。

#### 4.2 在建图启动初期,汽车速度是否最好为低速或静止?

答:是的,低速或静止的情况下,建图效果会更好,过高的动态会有影响。

### 4.3 在长直道时,发现即使慢速播放,也会跑飞,暂时分析由于,长直道特征点较少,并且车辆较多,导致特征匹配混乱导致。请
问老师,在解决长直道的建图定位,有什么好的 trick 吗(imu + RTK +Lidar) 框架下。

答:使用优势互补,公开道路可以使用gps,组合导航可以把很多问题都解决一下,或者添加轮速计,或者加入路标约束。

### 4.4 室外环境下,有 RTK 进行位姿矫正,还有必要进行回环检测么?

答:非常有必要,RTK本身也有误差,假设RTK本身的位置误差为10cm(已经非常小),那么一辆车建图时,向北10cm误差,向南10cm误差,地图拼接起来是20cm的误差,容易导致产生重影,消除地图重影是非常必要的,引入回环检测可以有效的消除地图重影。关于为什么要使用回环检测,可参考: https://zhuanlan.zhihu.com/p/110711975



​ edited by kaho 2021.9.21
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
28 changes: 21 additions & 7 deletions 第十章 基于优化的定位方法/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

本章是基于先验地图的图优化方法,先验地图的构建可参考[多传感器融合定位 第九章 基于优化的建图方法](https://blog.csdn.net/weixin_41281151/article/details/123406337)

代码下载:
代码下载:[https://github.com/kahowang/sensor-fusion-for-localization-and-mapping/tree/main/%E7%AC%AC%E5%8D%81%E7%AB%A0%20%E5%9F%BA%E4%BA%8E%E4%BC%98%E5%8C%96%E7%9A%84%E5%AE%9A%E4%BD%8D%E6%96%B9%E6%B3%95](https://github.com/kahowang/sensor-fusion-for-localization-and-mapping/tree/main/%E7%AC%AC%E5%8D%81%E7%AB%A0%20%E5%9F%BA%E4%BA%8E%E4%BC%98%E5%8C%96%E7%9A%84%E5%AE%9A%E4%BD%8D%E6%96%B9%E6%B3%95)

## 1.环境配置:

Expand Down Expand Up @@ -65,10 +65,12 @@ VINS系列相关代码:滑动窗口部分

![image-20220319175400826](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E4%BA%8C%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A11image-20220319175400826.png)

注意的是,GeYao助教的公式推导和代码少了,位置残差对姿态的雅克比,以下为补充的推导
注意的是,GeYao助教的公式推导和代码少了,位置残差对姿态的雅克比,以下图一为补充的推导。以及姿态残差对i时刻的姿态的雅克比补充详细推导,如下图二所示

![webwxgetmsgimg](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E4%BA%8C%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A11webwxgetmsgimg.jpeg)

![1638492414](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/%E6%B7%B1%E8%93%9D%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88%E5%AE%9A%E4%BD%8D/%E7%AC%AC%E4%BA%8C%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A111638492414.jpg)

##### c.代码补全

FILE: factor_prvag_relative_pose.hpp
Expand Down Expand Up @@ -781,17 +783,29 @@ gps的主要作用个人认为主要有两个:1.消除行驶过程中累积误
### 5.7 点云匹配过程中,特征退化的现象(长廊、隧道),有什么方法可以判断出来?(待补充)
1.特征退化的场景(如长廊、隧道),因为只有两侧的观测,可以对匹配的协方差矩阵进行特征值分解,通过判断特征值的分布状况判断。
1.特征退化的场景(如长廊、隧道),因为只有两侧的观测,可以对匹配的协方差矩阵进行特征值分解,通过判断特征值的分布状况判断,可参考 [LOAM SLAM原理之防止非线性优化解退化](https://blog.csdn.net/i_robots/article/details/108724606),但loam里解决特征退化的方法,鲁棒性不强,需要通过不同的场景来设置阈值,实际中只有特征退化很明显的地方(长廊没有其他物体),才好区分出是否发生特征退化
2.也可已增加imu uwb等辅助传感器。
### 5.8 IMU上电的bias需要怎么估计?(待补充)
### 5.8 IMU上电的bias需要怎么估计?在建图定位中,我们有必要做bias初始化吗,课程的框架是没给bias初始化的。(待补充)
bias的估计,不同的传感器厂家标定方法不一样。课程中给定的初始bias为0,因为kitti数据集中已经默认补偿了bias。一般的传感器厂家,如果有定制需求,可以输出bias或者bias补偿后的accel、gyro数据,如果传感器只输出raw_data 可以参考 lio_mappping vins 的初始化bias的方法。民用级的MEMS惯导,bias的影响很大,尽量标定补偿一下。
### 5.9 惯导绕“8”字初始化的作用?VINS绕“8”字初始化的作用?
**惯导**绕“8”字初始化,是为了imu初始对准,包括航向和bias。**VINS**是单目相机,初始化的时候需要估计重力方向和尺度,激光就不需要估计尺度了。
### 5.10 图优化 因子图 位姿图 概念(待补充)
### 5.11 边缘化先验因子移除老的帧过程中,为什么需要分两步?
a.使用和要边缘话掉的量无关的因子,构建剩余变量对应的Hessian矩阵。
kitti数据集中貌似已估
b.挑出要和边缘化掉的量相关的因子,构建待边缘化的Hessian矩阵,并使用舒尔补做边缘化。
### 5.9 图优化 因子图 位姿图 概念(待补充)
分两步的原因:原话“基于kitti的实现原理 22:00" ,个人理解是,分开两部构建边缘化后的Hessian矩阵,可以将两部分解耦开来,解耦为,第一部分:与历史信息相关的信息矩阵 ;第二部分:仅与后续状态量相关的信息矩阵;两部分互不干扰,而第一部分也称为先验因子(factor_graph)。lio_mapping 中是分两部进行边缘化老的关键帧,VINS中使用一步更新Hessian矩阵。
### 5.10 SLAM 算法岗位应届生招聘要求
### 5.12 SLAM 算法岗位应届生招聘要求
a.slam 的基础知识,前端匹配:icp ndt, 后端优化: 高斯牛顿法、LM优化
Expand Down
Binary file added 第十章 基于优化的定位方法/README.pdf
Binary file not shown.
Empty file.
Loading

0 comments on commit ccc8b1c

Please sign in to comment.