文章同步更新于github page

文章目录

  • Occupancy Map
  • Odds
  • Odds的更新
  • 对数Odds

Occupancy Map

将空间划分为一个个小网格(cell),每个cell中存储cell内是否有障碍物的概率,这样的地图称为Occupancy Map,由于所有cell构成一个网,所以也称为Grid Map。

以2D Occupancy Map为例,每个cell中都有一个概率,那整个地图可以看做一个描述障碍物分布的概率分布(严格要归一化后才是概率分布)。构建地图的过程,就是根据传感器(比如Lider)的观测,更新这个概率分布。

设每个cell的概率相对于其他cell是独立的,更新地图的概率分布就简化为更新每个cell的概率。即在已知1到t时刻所有观测的情况下,该cell中有障碍物的概率,记为

p(mi∣z1:t)p(m_i|z_{1:t}) p(mi​∣z1:t​)

Odds

考虑到更新的方便,每个cell中实际存储的是概率对应的Odds。

Odds定义为有障碍物的概率与无障碍物概率的比,即

o(mi∣z1:t)=p(mi∣z1:t)1−p(mi∣z1:t)=p(mi∣z1:t)p(¬mi∣z1:t)o(m_i|z_{1:t})=\frac{p(m_i|z_{1:t})}{1 - p(m_i|z_{1:t})} = \frac{p(m_i|z_{1:t})}{p(\neg m_i|z_{1:t})} o(mi​∣z1:t​)=1−p(mi​∣z1:t​)p(mi​∣z1:t​)​=p(¬mi​∣z1:t​)p(mi​∣z1:t​)​

已知Odds,也很容易反算出对应的概率。可以将Odds理解为一个映射,将值域在[0,1][0, 1][0,1]之间的概率映射到[0,+∞)[0,+\infty)[0,+∞)。

Odds的更新

根据贝叶斯公式,有

p(mi∣z1:t)=p(zt∣mi,z1:t−1)p(mi∣z1:t−1)p(zt∣z1:t−1)p(m_i|z_{1:t})=\frac{p(z_t|m_i, z_{1:t-1})p(m_i|z_{1:t-1})}{p(z_t|z_{1:t-1})} p(mi​∣z1:t​)=p(zt​∣z1:t−1​)p(zt​∣mi​,z1:t−1​)p(mi​∣z1:t−1​)​

根据Markov假设,已知障碍物mim_imi​的情况下,观测结果与之前的观测无关,则

p(mi∣z1:t)=p(zt∣mi)p(mi∣z1:t−1)p(zt∣z1:t−1)p(m_i|z_{1:t})=\frac{p(z_t|m_i)p(m_i|z_{1:t-1})}{p(z_t|z_{1:t-1})} p(mi​∣z1:t​)=p(zt​∣z1:t−1​)p(zt​∣mi​)p(mi​∣z1:t−1​)​

于是根据Odds的定义,可得

o(mi∣z1:t)=p(mi∣z1:t)p(¬mi∣z1:t)=p(zt∣mi)p(mi∣z1:t−1)p(zt∣¬mi)p(¬mi∣z1:t−1)=p(zt∣mi)p(zt∣¬mi)⋅o(mi∣z1:t−1)=p(mi∣zt)p(zt)/p(mi)p(¬mi∣zt)p(zt)/p(¬mi)⋅o(mi∣z1:t−1)再次利用了贝叶斯公式=o(mi∣zt)⋅o(mi∣z1:t−1)⋅p(¬mi)p(mi)⎵prior\begin{aligned} o(m_i|z_{1:t})&=\frac{p(m_i|z_{1:t})}{p(\neg m_i|z_{1:t})} \\ &=\frac{p(z_t|m_i)p(m_i|z_{1:t-1})}{p(z_t|\neg m_i)p(\neg m_i|z_{1:t-1})} \\ &=\frac{p(z_t|m_i)}{p(z_t|\neg m_i)}\cdot o(m_i|z_{1:t-1}) \\ &=\frac{p(m_i|z_t)p(z_t)/p(m_i)}{p(\neg m_i|z_t)p(z_t)/p(\neg m_i)} \cdot o(m_i|z_{1:t-1}) \ \ \ \ \text{再次利用了贝叶斯公式} \\ &=o(m_i|z_t)\cdot o(m_i|z_{1:t-1})\cdot \underbrace{\frac{p(\neg m_i)}{p(m_i)}}_{\text{prior}} \end{aligned} o(mi​∣z1:t​)​=p(¬mi​∣z1:t​)p(mi​∣z1:t​)​=p(zt​∣¬mi​)p(¬mi​∣z1:t−1​)p(zt​∣mi​)p(mi​∣z1:t−1​)​=p(zt​∣¬mi​)p(zt​∣mi​)​⋅o(mi​∣z1:t−1​)=p(¬mi​∣zt​)p(zt​)/p(¬mi​)p(mi​∣zt​)p(zt​)/p(mi​)​⋅o(mi​∣z1:t−1​)    再次利用了贝叶斯公式=o(mi​∣zt​)⋅o(mi​∣z1:t−1​)⋅priorp(mi​)p(¬mi​)​​​​

在没有观测的情况下,一般假设cell有障碍物的概率为0.5,即p(mi)=p(¬mi)=0.5p(m_i)=p(\neg m_i)=0.5p(mi​)=p(¬mi​)=0.5,所以最终有

o(mi∣z1:t)=o(mi∣zt)⋅o(mi∣z1:t−1)o(m_i|z_{1:t})=o(m_i|z_t)\cdot o(m_i|z_{1:t-1}) o(mi​∣z1:t​)=o(mi​∣zt​)⋅o(mi​∣z1:t−1​)

即更新某个cell的Odds时,只需用新的观测结果对应的Odds,乘以该cell原本的Odds即可。

比如Lider击中cell中的物体,并返回一个距离值,这时可认为cell中有障碍物的概率为0.9,即p(mi∣hit)=0.9p(m_i|hit)=0.9p(mi​∣hit)=0.9,对应的Odds就是o(mi∣hit)=9o(m_i|hit)=9o(mi​∣hit)=9,如果激光没有击中任何东西,则其传输路径上的所有cell存在障碍物的概率就较低,设为p(mi∣loss)=0.2p(m_i|loss)=0.2p(mi​∣loss)=0.2,对应的Odds即o(mi∣loss)=0.25o(m_i|loss)=0.25o(mi​∣loss)=0.25。这样,Odds的更新就变成了根据激光的返回情况,选择乘以9还是0.25。

对数Odds

更进一步的,可以对Odds取对数,每个cell中保存的也是Odds的对数值,则Odds的更新变为

log⁡o(mi∣z1:t)=log⁡o(mi∣zt)+log⁡o(mi∣z1:t−1)\log o(m_i|z_{1:t})=\log o(m_i|z_t) + \log o(m_i|z_{1:t-1}) logo(mi​∣z1:t​)=logo(mi​∣zt​)+logo(mi​∣z1:t−1​)

即将乘法变为了加法,在log⁡o(mi∣zt)\log o(m_i|z_t)logo(mi​∣zt​)是几个已知常数值的情况下(如之前Lider的例子),这种方式更高效。

Occupancy Map(Occupancy Grid)的更新相关推荐

  1. 微信小程序--map组件视图无法更新的问题

    在使用微信小程序 map组件的时候,会有一个小问题.当出现markers是一个数组,在切换数据的时候,页面会残留上次留下来的markers. 在js中使用setData更新markers数据后,地图上 ...

  2. 奇点汽车黄浴:SLAM的动态地图和语义问题

    点击我爱计算机视觉标星,更快获取CVML新技术 本文原载于知乎自动驾驶的挑战和发展专栏,作者为奇点汽车美研中心首席科学家兼总裁黄浴,52CV非常荣幸取得黄先生授权转载. https://zhuanla ...

  3. CUDA中Occupancy相关知识

    文章目录 occupancy初步理解 occupancy具体分析 occupany的推导流程 Occupancy实际运用 occupancy 有啥用 前言 本篇文章只适合稍微有一些cuda基础的朋友阅 ...

  4. 特斯拉应用在自动驾驶汽车上的神经网络模型—Occupancy Networks

    2022 年CVPR上,特斯拉宣布将在其自动驾驶车辆中发布一种全新的算法.这个算法被命名为Occupancy Networks,它用来改进特斯拉的AI 模型HydraNets. --1-- 特斯拉自动 ...

  5. Grid map 的应用

    文章目录 1. 前言 2. Grid Map 简介 3. Grid Map 使用 3.1 写入Grid Map 3.2 使用 Grid Map 3.2.1 识别障碍物 3.2.2 判断轨迹可通行性 1 ...

  6. CUDA的Occupancy和Achieved Occupancy概念

    官方原文 Occupancy is defined as the ratio of active warps on an SM to the maximum number of active warp ...

  7. 一文告诉你哪些map element类型支持就地更新

    年初,我代表团队和人民邮电出版社签订了翻译<Go Fundamentals>[1]一书的合同,本月底便是四分之一进度的交稿时间点,近期闲时我们都在忙着做交叉review. 上周末我revi ...

  8. poi-tl导出word;自定义列表序号和表格宽度,表格合并,自定义标题,更新目录

    文章目录 poi-tl 入门示例 1.准备word模板 2.代码 自定义列表序号 1. poi-tl 支持的序号列表,直接使用文档种说明即可 2. 要是没有,可以利用NumberingFormat类去 ...

  9. 行人检测(Pedestrian Detection)资源与更新

    行人检测相关的网站链接:      [1].Caltech Pedestrian Detection Benchmark: http://www.vision.caltech.edu/Image_Da ...

最新文章

  1. codefirst数据库迁移
  2. 烂泥:学习Nagios(三): NRPE安装及配置
  3. android 数字时钟代码大全,Android自定义view实现数字时钟
  4. 修改Tomcat可支持get传参方式的url长度,get形式
  5. acrgis api for javaScript需要对Dojo了解多少?
  6. IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)
  7. Z-Stack Home Developer's Guide—6. Clusters, Commands and Attributes中文翻译【Z-Stack Home 1.2.0的开发文档】
  8. Windows下打印服务器的管理(二)
  9. Summarize 2014 Look Ahead 2015
  10. (C语言) 用牛顿迭代法求方程2x^3 - 4x^2 + 3x - 6 = 0在1.5附近的根
  11. 计算机专业电脑内存,电脑内存大小是否和速度有关?
  12. MATLAB 2016b--神经网络工具箱中BP网络的实现
  13. 几种常见MOSFET栅极驱动电路
  14. python 因果推断_微软因果推理框架DoWhy入门
  15. java浮点型数据的比较
  16. (Python)sum函数的用法
  17. php update when,iphone will restart when update什么意思
  18. excel排序没有 扩展选定区域
  19. 大数据全网最佳学习路线总结,不看肯定后悔
  20. urlretrieve的用法

热门文章

  1. Exchange邮箱的创建和配置
  2. 手把手教你:图像识别的垃圾分类系统
  3. unity 《王者荣耀》帧同步开发教程
  4. 10个副业兼职创业,在家赚钱绝对真实
  5. 《三国演义》之人物出场统计
  6. 汇编 二进制拆炸弹 r -t 3 -x 124
  7. android 仿iphone多任务管理效果,别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多!...
  8. ps -ef和ps -aux的区别
  9. U盘格式选择 FAT32、exFAT、NTFS
  10. Vue一级路由与二级路由/路由重定向