Octomap概率公式推导

本文详细介绍了Octomap中叶子节点占据概率的推导过程,从先验概率出发,结合观测数据和对数几率变换,通过累加和sigmoid函数将测量结果转化为概率。还探讨了在实际应用中,如何通过截断处理实现数据压缩,以适应环境变化并减少存储需求。
摘要由CSDN通过智能技术生成

Octomap概率公式推导

详细推导过程

最近看高博关于octomap介绍地博文,其中对每个叶子节点在一系列观测数据下被占据的概率公式,看着有点绕,这里记录梳理过程。
首先公式是这样的
P ( n ∣ z 1 : t ) = [ 1 + 1 − P ( n ∣ z t ) P ( n ∣ z t ) 1 − P ( n ∣ z 1 : t − 1 ) P ( n ∣ z 1 : t − 1 ) P ( n ) 1 − P ( n ) ] − 1 P(n|z_{1:t})=[1+\frac{1-P(n|z_t)}{P(n|z_t)}\frac{1-P(n|z_{1:t-1})}{P(n|z_{1:t-1})}\frac{P(n)}{1-P(n)}]^{-1} P(nz1:t)=[1+P(nzt)1P(nzt)P(nz1:t1)1P(nz1:t1)1P(n)P(n)]1
其中P(n)为未观测前叶子节点是否被占据的先验概率,基于均匀假设认为空间中一个叶子节点被占据为均匀分布,即 P ( n ) = 0.5 P(n)=0.5 P(n)=0.5 P ( n ∣ z 1 : t ) P(n|z_{1:t}) P(nz1:t)为对该叶子节点进行$1 \to t $次观测后该叶子节点被占据的概率,使用了第t次观测下被占据的概率和$1 \to t-1 $的数据和先验概率进行计算。
传感器对空间一个点的测量的测量过程,可以看作是传感器向一个空间点发射了一只箭,如果空间点处确实有物体,并且被传感器成功探测到,那么称这次测量是命中的(hit),如果有物体却没有被探测到,则称这次探测错过了目标(miss),这两个参数在octamap中就是传感器的命中参数和丢失参数。比如命中概率为0.7,错过概率为0.3。
但工程中没有直接使用这个概率,而是使用了对数几率变换(这里可能是追求一个更保险的做法),先将每次测量概率都转换到实数域上,如此对多次测量结果进行一个累计的量化,最后再转化为概率。
Y = log ⁡ ( P 1 − P ) Y=\log ({\frac{P}{1-P}}) Y=log(1PP)
这里的Y称为log-odds,即对数几率。
logit变换
对每次测量结果,其累计量化方式是累加,即
Y 1 : 2 = Y 1 + Y 2 = log ⁡ ( P 1 1 − P 1 ) + log ⁡ ( P 2 1 − P 2 ) Y_{1:2}=Y_1+Y_2=\log ({\frac{P_1}{1-P_1}})+\log ({\frac{P_2}{1-P_2}}) Y1:2=Y1+Y2=log(1P1P1)+log(1P2P2)
= log ⁡ ( P 1 1 − P 1 P 2 1 − P 2 ) = > log ⁡ ( P 1 : t − 1 1 − P 1 : t − 1 P t 1 − P t ) =\log ({\frac{P_1}{1-P_1}}{\frac{P_2}{1-P_2}})=>\log ({\frac{P_{1:t-1}}{1-P_{1:t-1}}}{\frac{P_t}{1-P_t}}) =log(1P1P11P2P2)=>log(1P1:t1P1:t11PtPt)
这里的P含义发生了变化,指每次测量结果,如果命中,为0.7,未命中,为0.3。(P(n)=0.5,则原公式最后一项为1,略去不写)

然后利用对数几率函数 (logistic function) 这种“sigmoid”函数,将累计值转换回[0,1]区间:
f = 1 1 + exp ⁡ ( − z ) f=\frac{1}{1+\exp (-z)} f=1+exp(z)1
sigmoid函数图像

完整的写法为:
f = 1 1 + exp ⁡ [ − log ⁡ ( P 1 : t − 1 1 − P 1 : t − 1 P t 1 − P t P ( n ) 1 − P ( n ) ) ] f=\frac{1}{1+\exp[-\log ({\frac{P_{1:t-1}}{1-P_{1:t-1}}}{\frac{P_t}{1-P_t}}{\frac{P(n)}{1-P(n)}})]} f=1+exp[log(1P1:t1P1:t11PtPt1P(n)P(n))]1
= 1 [ 1 + 1 − P t P t 1 − P 1 : t − 1 P 1 : t − 1 P ( n ) 1 − P ( n ) ] = 原 式 =\frac{1}{[1+\frac{1-P_t}{P_t}\frac{1-P_{1:t-1}}{P_{1:t-1}}\frac{P(n)}{1-P(n)}]}=原式 =[1+Pt1PtP1:t11P1:t11P(n)P(n)]1=

原博文高博的解析过程为:
高博解析
对数几率确实是累加的,但最后通过sigmoid函数转化为概率时不能当作累加。但最后实际使用的概率,则会在一个区间内进行截断处理,处理完后,再使用sigmoid函数转换为概率。
截断处理
这里的 l m a x 与 l m i n 指 叶 节 点 最 大 和 最 小 占 据 概 率 l_{max}与l_{min}指叶节点最大和最小占据概率 lmaxlmin,而这种处理方式,原论文表示这可以起到一种数据压缩的作用(不是很理解为啥可以数据压缩)

  • 我们确保了地图中的保密性是有界的,因此该模型可以快速地适应环境的变化。此外,我们能够通过修剪来压缩邻近的体素(见第二节。3.4)。正如我们将在第二节中讨论的那样。5.4,这导致必须维持的体素数量大大减少。截断实现的压缩不再完全无损,因为接近零的信息丢失了。然而,在截断阈值之间,保留了完整的概率。(论文原文翻译)

总结:先通过对数几率转换,映射为实数域变量,然后进行累计计算,累计结果通过sigmoid函数映射回[0,1]区间。

参考

OctoMap: an efficient probabilistic 3D mapping framework based on octrees
SLAM拾萃(1):octomap
对数几率回归(logistic regression)逻辑回归

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值