Skip to content

Commit

Permalink
add some question reply
Browse files Browse the repository at this point in the history
  • Loading branch information
kahowang committed May 20, 2022
1 parent ccc8b1c commit 0995f5d
Show file tree
Hide file tree
Showing 37 changed files with 107 additions and 11 deletions.
Binary file not shown.
24 changes: 24 additions & 0 deletions 不同SLAM算法比较/不同SLAM算法比较.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## LEGO_LOAM

参考博客:

[简单总结LEGO-LOAM相对于LOAM的一些改进及不同点](https://wenku.baidu.com/view/2b7cb5dacbd376eeaeaad1f34693daef5ef71321.html)

### 3.两步优化的帧间里程计

#### 3.1和LOAM的相同点

都是通过前后两帧的点云来估计两帧之间的运动,然后累加得到前端里程计的输出(相对于第一帧),也都是采用的线面约束。

#### 3.2不同点

LOAM采用的是线面约束同时优化六自由度的帧间位姿,LEGO-LOAM的前端分成两个步骤,每个步骤估计三个自由度。

Motivation:提高运算效率,可以在嵌入式平台运行。

```shell
#步骤
1)使用地面点构建点面约束,由于地面点之间的约束对x,y,yaw三个自由度是不可观的(地面可以转动,但残差不会明显变化),所以地面点的优化只会对pitch、roll、z进行约束和优化。
2)使用提取的角点进行优化,由于多线激光雷达提取的角点通常是垂直的边缘特征,这些特征对x, y , yaw有较好的能观性,通过角点的优化,结合1)中的结果就可以得到六自由度的帧间优化结果。具体代码实现在updateTransformation() 中。
```

26 changes: 25 additions & 1 deletion 待问问题.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,28 @@

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考虑到手持飞控等场景,所以需要额外估计重力方向。但是为了系统具有更强的鲁棒性,所以静止几秒估计重力的方向会更好。("激光比较重型,除了机载的特殊轻型激光,一般都默认水平安装的")
3.lego_loam 的去重力部分,就只是通过外参,把imu的重力分量去掉了,没有说有估计重力的部分。是因为在lego_loam 这类系统里,默认机体是平放地面,Z轴朝上, 而VINS考虑到手持飞控等场景,所以需要额外估计重力方向。但是为了系统具有更强的鲁棒性,所以静止几秒估计重力的方向会更好。("激光比较重型,除了机载的特殊轻型激光,一般都默认水平安装的")

## 3.ESKF 中融合轮速计后,kalman update问题

​ 问:ESKF 融合轮速计后如何考虑常值bias?答:把这个bias作为状态量添加到状态方程里,然后适当修改相应观测的更新。
​ 问:常值bias状态矩阵里都是0,咋更新?答:常值bias,在融入观测时,随着kalman增益的改变,跟着改变。
​ 问:如果不融合gps,轮速计的常值bias还能估计出来吗?

## 4.slam整体处理框架上,使用buffer把所有数据进行存起来,这样做是否合理?更行业的处理数据的方法是:处理最新的数据还是也是所有数据存起来慢慢处理呢?

## 5.建图与定位的算法上主要区别在哪?这样理解正确吗:建图是通过融合多源信息,计算得到最优的的帧间里程计,进而把点云拼接起来成为点云地图,因为优化所需要的时间和建图的规模较大,所以一般可以选择离线建图,对实时性要求没这么高。而定位一般是基于一定的先验信息(先验地图),进行全局定位,对实时性要求较高。

## 6.ESKF状态方程推导中,为什么状态方程离散化后,

## delta_x_dot 可以转为 delta_x_k ? (微分具有对下一时刻的量做预测的意思吗?)对应如下图(1、2)

<img src="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-20220520132030187.png" alt="image-20220520132030187" style="zoom: 67%;" />

<img src="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-20220520132058853.png" alt="image-20220520132058853" style="zoom:67%;" />

## 7.第六章的惯性导航误差分析总结中,delta_v_dot 的推导代表的是world系下速度增量,是不是末尾漏了减去g? (对应下图3)

![image-20220520132833398](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-20220520132833398.png)

## 8.课程框架里的ekf是作为一个前端吗?对前后端的概念较为模糊。后端主要是指:全局优化、回环检测等模块吗?
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
8 changes: 6 additions & 2 deletions 第三章 3D激光里程计2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ sudo apt-get install libgoogle-glog-dev

#### 公式推导

注意这里的推导形式是分别更新R ,t ,与 直接更新转换矩阵T的导数会有所不同
注意:

1.这里的推导形式是分别更新R ,t ,与 直接更新转换矩阵T的导数会有所不同

2.线面残差是一个数,为标量,而待优化量位移、姿态等是具有方向、大小,是矢量,在 线面残差(标量)求对应待优化变量(矢量)的jacobian时,链式法则时,需要求 标量对矢量的偏导,标量对矢量的偏导是一个单位向量,代表矢量的单位方向。

参考博客:[基于线面特征的激光里程计](https://zhuanlan.zhihu.com/p/348195351)

Expand Down Expand Up @@ -93,7 +97,7 @@ $$
=\frac{\left(p_{i}^{\prime}-p_{b}\right) \times\left(p_{i}^{\prime}-p_{a}\right)}{\left|\left(p_{i}^{\prime}-p_{b}\right) \times\left(p_{i}^{\prime}-p_{a}\right)\right|} \frac{\left(p_{a}-p_{b}\right)_{\times}}{\left|p_{a}-p_{b}\right|}
\end{gathered}
$$
其中,
其中,标量对矢量求导
$$
\quad \frac{\alpha|X|}{\alpha X}=\frac{\alpha\left(s \operatorname{qrt}\left(X^{T} X\right)\right)}{\alpha\left(X^{T} X\right)} \frac{\alpha\left(X^{T} X\right)}{\alpha(X)}=\frac{X}{|X|}
$$
Expand Down
Binary file not shown.
Binary file not shown.
12 changes: 12 additions & 0 deletions 第二章 3D激光里程计/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,18 @@ ICP_SVD:
max_iter : 10
```

### ICP补充

经陈助教的指点,在进行ICP_SVD求解时,求出的旋转矩阵,可以进行reflection(旋转反射的判断),KITTI场景中,数据集可能没有点云反射的现象,但是工程中,对求出的R阵加入reflection的判断,可以提升激光里程计ICP的精度。当出现需反射问题时:det(VU.tranpose()) = -1 ,正确的R阵为: det(VU.tranpose()) = 1。因此,我们可以将R阵改为如下通式:

![image-20220424175530082](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-20220424175530082.png)

参考论文:Least-Squares Rigid Motion Using SVD

参考博客:[雷达系列论文翻译(二):Least-Squares Rigid Motion Using SVD](https://blog.csdn.net/weixin_39061796/article/details/119861178)



## NDT_CPU

参考源码: [autoware ndt_cpu](https://github.com/Autoware-AI/core_perception/tree/master/ndt_cpu)
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
38 changes: 36 additions & 2 deletions 第八章 基于滤波的融合方法2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,40 @@ evo_res *.zip --use_filenames -p

### 3.4 结论通过对比上述实验

可得知,融合了odom轮速里程计后,数据波动得到大幅度抑制。
可得知,融合了odom轮速里程计后,数据波动得到大幅度抑制。

​ edit by kaho 2021.10.22
## 4.第六次在线答疑

1.编码器解算速度时间里在平面和轮胎不打滑的假设条件下的,而野外地面很难满足这些条件,小车会经常出现轮胎打滑的问题,该怎么进行补偿或者模型修正呢?

```
答:这里需要解决的可能不是补偿问题,而是场景识别。通过算法去区分打滑或者不平坦的场景,进行传感器的策略的变换(是否使用imu或者编码器)。如,当出现打滑时,编码器会出现飞快的变动;当路面不平坦时,imu数据也会出现较大的波动,可通过这个来进行场景识别,进而改进算法。
```

2.一般imu+odom+gnss 的融合策略是怎样的?是例程中,imu做预测,gnss和odom做观测,还是附加题中imu+odom做预测,imu做观测?

答:一般预测 imu 、观测 gnss + odom 都是军用场景下,军用场景下gnss一般误差比较大,需要长时间依赖imu的积分,所以需要odom做额外的修正;而预测 imu + odom 、观测 gnss 一般是低成本mems的适用场景,低成本的mems精度较低,所以imu+odom做预测的性价比会更高。

3.在滤波器里额外添加对轮速计bias的估计,在这种情况下,如果不融合gps了,轮速计的bias还能估计出来吗?

```shell
答:这个问题其实有点歧义,没有说明白当前滤波器的传感器组合情况。解答这个问题前,需要先梳理清楚以下几个点:

a.在ESKF 框架中加入odom编码器有两种策略。a. imu 做预测,odom观测 ; b. imu + odom 做预测。

b.当使用b.imu + odom 做预测时,状态方程中需要考虑bias 有 imu的bias 和 odom的bias 。但是当使用a. imu 预测 odom 做观测时,作为观测量的odom只需要提供观测值就ok,观测值 = 真值 + 噪声, 并不需要额外考虑odom bias。

c.odom编码器作为预测时,可通过编码器线速度积分提供的预测量为 P_w(position) V_w(velocuty)。进行kalman 迭代时,通过预测修正观测,odom的bias进行估计的话,需要有相应的预测量(P V),所以预测需要有GPS 或者 laser_odom 这类能提供P V的观测。
```

4.至于上述第3点所提到的,为什么odom放在观测不需要考虑bias,个人认为,放在观测的传感器本来就是低频传感器(相对于imu),并不会考虑bias的影响,而且在求解kalman gain时,也不需要对观测方程做非线性化处理,也是源于观测较低频的原因(个人理解)。

5.odom的bias是怎么导致的?

```
轮速编码器的bias取决于编码器的种类,如果是测速的,可以把bias当成常值误差来估计;倘若是光电编码器,本身测得是位置增量,测速度误差时,误差不是一个常值。
```



5. edited by kaho 2021.10.22
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
8 changes: 3 additions & 5 deletions 第六章 惯性导航解算及误差分析/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,7 @@ void Activity::UpdatePosition(const double &delta_t, const Eigen::Vector3d &velo
roslaunch imu_integration imu_integration.launch
```

![mid](/home/kaho/Pictures/chapter6/中值法解算/mid.png)


![mid](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%A11mid.png)

## 2.姿态更新-基于欧拉法解算

Expand All @@ -186,7 +184,7 @@ bool Activity::GetVelocityDelta( )
roslaunch imu_integration imu_integration.launch
```

![euler](/home/kaho/Pictures/chapter6/欧拉法解算/euler.png)
![euler](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/深蓝多传感器融合定位/第二章激光里程计1%E7%AC%AC%E4%BA%8C%E7%AB%A0%E6%BF%80%E5%85%89%E9%87%8C%E7%A8%8B%E8%AE%A11euler.png)

## 3.gnss-ins-sim仿真数据数据集,对比中值法和欧拉法得解算精度

Expand Down Expand Up @@ -607,7 +605,7 @@ rosbag play static.bag

现象:groundtruth(红色)在原点不动,estimator(蓝色)竖直向上移动

![2021-10-01 09-23-49 的屏幕截图](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-01%2009-23-49%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)
![2021-10-01 09-23-49 的屏幕截图](https://kaho-pic-1307106074.cos.ap-guangzhou.myqcloud.com/CSDN_Pictures/深蓝多传感器融合定位/第二章激光里程计1%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-01%2009-23-49%20%E7%9A%84%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png)

解决:

Expand Down
2 changes: 1 addition & 1 deletion 第十章 基于优化的定位方法/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -769,7 +769,7 @@ Ti Tj 一般是预测值,一般是由scan2scan 上一时刻的后验POSE给
问:因子图优化中的激光里程计约束指的scan2scan 还是 scan2map, 如果是scan2map 的话,那它和“先验地图匹配因子”的区别是在于 “激光里程计因子”的map是局部分割的小地图,“先验地图匹配因子”的map是大地图是吗? 使用全局的大地图匹配,对资源消耗不是很大吗?
答:激光里程计:前端激光里程计主要还是loam的方案,使用的是scan2map 方式构建,这里的map并不是只小的先验地图,只是指loam里的submap小特征地图。“先验地图匹配因子”里所说的先验地图,使用滑窗分割出的小地图,为了节省运算资源。
答:激光里程计:前端激光里程计主要还是loam的方案,使用的是scan2map 方式构建,这里的map并不是指小的先验地图,只是指loam里的submap小特征地图。“先验地图匹配因子”里所说的先验地图,使用滑窗分割出的小地图,为了节省运算资源。
### 5.5 如何去评估地图的质量精度
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 0995f5d

Please sign in to comment.