关于激光雷达观测及jacobian求导的一些理解一

符号定义

带噪声的激光观测点:p_i

预测的地图坐标点:p'_i

真实的激光观测点:p^{t}_i

真实的地图坐标点:q_i

预测的pose:\widehat{x}

真值的pose:x

误差pose:\delta x

激光的观测噪声:\eta _i ~ N(0,R_i)

激光雷达观测的是什么:


激光雷达可以获取一系列3D坐标点,代表着周围物体的表面点距离激光中心的距离和方位。
如果这帧是第一帧,那么就认为这一系列的雷达点,构成了地图的最开始的数据。
如果是接下来的帧,那么就要考虑,如何通过这个帧的一系列激光点,与之前构建的地图点能匹配上,从而计算出当前激光的pose。
有两种方式,一种是点对点,另一种是点到面(或线段)。

点到点的观测

对于点到点来说,就是把激光测量的点p_i,用预测的pose,转换到地图坐标系得到点p'_i,找到最近的地图点q_i。如果pose是准确的,那么应当两者要重合,及\left \| p'_i-q_i \right \|=0

那么观测就是,观测到了地图点q_i,预测就是p'_i。即观测量是坐标点。

注意,这个观测到的地图点,实际上是利用了激光的相对坐标p_i,以及预估的pose:\widehat{R}|\widehat{p},得到了预测的点p'_i后,通过最近距离搜索得到的,不是直接获取的。

不像图像,点都是更加稠密的,可以通过特征点方式,来进行独立的匹配。激光不行,不能保证某束激光一定是打到之前的某个地方点,且也没有什么所谓的特征可以用来匹配,这也是这种传感器的特点带来的对于匹配的改变。

这也就会带来一些问题,比如预估的pose比较差,那所谓的观测到的地图点,就不会准确,执行下面的优化,就会越来越差。比如说弱势场景下如直面一堵墙,范围内都是墙,就不能稳定的进行优化。

观测方程

其形式是:

h(x,p_i)=R*p_i+p

又可以分为以下几种情况:

1、真实的位姿,真实的观测:

h(x,p^t_i) 

这个就等于是找到的地图点q_i

这个p^t_i我们也不知道它是啥,只知道它与p_i的关系:p^t_i-p_i=v \sim N(0,R_i)

2、真实的位姿,带噪声的观测:

h(x,p_i)

这个实际上就是qi附近,呈现v的分布,不知道具体值是多少。

3、预测的位姿,带噪声的观测:

h(\widehat{x},p_i)

可以计算出来值的。

根据以上的关系,我们可以知道:

h(x,p_i)=h(x,p^t_i)+v  

因为v是0均值的正太分布,正负号无所谓。

v=h(x,p_i)-h(x,p^t_i)=h(x,p_i)-q_i=h(\widehat{x}\oplus \delta x,p_i)-q_i

表示,就算用真值的pose,计算的地图点,与真实的地图点,之间还是有误差,这个是来源于激光的测量误差。

这个v在后面求偏导中好像没有有什么作用,实际上,反馈了一个在当前误差状态的情况下,观测量的概率分布,就是

p(\delta z |\delta x)

 

偏导求取

滤波的做法:

如果是按照滤波的思路来往下走的话,就是要求出观测方程对于误差状态的偏导,即:

H=\frac{\partial h}{\partial \delta x}

这个H有两种求解思路:

1、一种是直接泰勒近似:

h(x,p_i)=h(\widehat{x}\oplus \delta x,pi)=h(\widehat{x},pi)+H\delta x

那么H\delta x=h(x,p_i)-h(\widehat{x},p_i)=h(\widehat{x}\oplus \delta x,p_i)-h(\widehat{x},p_i)

这个与优化的求解过程是一样的。

2、另一种是加扰动:

假设:

a=h(x,p_i)

那么:

a+\Delta a = h(x+\Delta x)

就看:\Delta a\Delta x的关系:

需要具体参数化来运算:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

 

优化的做法:

如果是按照优化的思路,是要让残差越来越小,因此要找出残差与误差状态的因果关系,求出残差对于误差状态的偏导:

J=\frac{\partial err}{\partial \delta x}=\frac{\partial (h(x,p_i)-h(\widehat{x},p_i))}{\partial \delta x}=\frac{\partial h((\widehat{x}\oplus \delta x,p_i)-h(\widehat{x},p_i))}{\partial \delta x}

以上两者,怎么统一理解呢?

实际上,泰勒近似的做法,就是认为,以当前预估的pose,计算出来的预测地图点,之所以与真实的地图坐标点有误差,是因为,pose不准,把这个误差的pose与考虑上,假设它与结果有个变换关系(这个正是我们要求的H),那就能近似得到了。

而残差,本质上就是真实的地图点与预测的地图点的距离,相当于是把泰勒近似的做法,反过来想了一下,即:

h(x)=h(\widehat{x}+\delta x)

变成:

h(x)-h(\widehat{x})有个误差,这个误差是误差状态量引起的,假设用符合表示这个误差,那就是因果转换矩阵*误差状态量。 这个因果转换矩阵就是偏导。

所以,泰勒近似,与优化的残差与误差量的偏导,是一个事情的两种说法。

加扰动是怎么理解呢?

这个其实是更容易理解的,就是假设pose变动了多少,带来的结果会变化多少。本质上是一回事。

具体做法是列出之前是什么,然后,左边加上一个结果的变化量,右边在变量中增加变量的变化量,最终得到结果的变化量与变量的变化量的关系,然后用极限的方式求出偏导。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值