Type: ICRA

Year: 2022

tag: SLAM

1. Motivation

为了和环境内其他机器人进行交互,access to volumetric and semantic maps是很重要的。而对于长时间段,环境多少都会发生变化,而构建地图时我们也应当考虑到这点

提出了一种针对变换环境的 novel representation panoptic multi-TSDFs for multi-resolution volumetric mapping

背景介绍

volumetric representations:

  • occupancy
  • Truncated Signed Distance Fields (TSDF)

但是这类fixed grid结构使得这一类方法耗memory 而且对于变化的东西 渲染也不灵活变化,本篇工作主要是 invert this paradigm and explore how semantic information can be leveraged to improve the modeling of geometry and achieve temporal consistency,也就是如何利用语音信息进行改进 几何建模 并 实现时空上的连续性

  • [11, 12] spatially consistent volumetric mapping
  • [5, 6, 13] moving object reconstruction

Contribution

  1. 提出了全景 multi-TSDF 作为可调整的volumetric map representation,这样能满足capture long-term object-level scene changes
  2. 提出了能使 全景 multi-TSDF 在 online operation 对 temporally consistent mapping
  3. 相关实验及开源

2. Method

本工作并不是优化 segmantic labeling,而是 explore high-level information 以便能实现 多分辨率三维重建和temporal consistency

2.1 框架

输入是RGBD相机上的彩色图像和深度图像,由此来预测我们的语义信息,此处主要使用了[33]的语义输出,所以文章整体的重点并不是在如何构建语义地图,而是从别的模块拿取这一信息

2.2 地图表示

主要是使用object作为最小的单位,然后整个world就是 a collection of panoptic entities, structured as submaps,所以我们将分为三类:objects, background, free space,每一个submaps包含有这个entity的信息,比如类别或是free space ,为了是实现每个submap的temporal consistency,我们将其分为active和inactive的,其中

  • active 表明 现在正在被跟踪、建立
  • inactive则是 过去的观测 observations

为了表示几何,我们选取TSDF grids[2]进行表示,同时TSDF可以融合多帧观测;被object占据的空间会分成blocks,只有blocks才包含有surface information

对于traversal submap,则是将object在blocks上用一个球进行扩展;每个block都包含有 a dense grid of voxels 去存储TSDF值

2.3 Label Tracking

首先是使用了marching cubes [34] 对每个submap的iso-surface进行计算,随后将view frustum上的点投影到图像平面中

对于点的深度有tolerance \(\xi_d=\nu\) 其中v表明TSDF的voxel size,当此深度被认为是有效的时候,填充此patch为v,注意input segment以IoU进行筛选

在label tracking和更新时,submaps为被跟踪t=3帧来确保它被kept,如果submaps在t=5帧间没有被检测,则视为deactivated

2.4 Integration 集成

TSDF的更新权重 [2],其中fx, fy为相机的参数,z(v)为v voxel的深度值

\[w_{i n}(v)=\frac{f_x * f_y * \nu^2}{z(v)^4}
\]

对应函数:

float ProjectiveIntegrator::computeWeight(const Point& p_C,
const float voxel_size,
const float truncation_distance,
const float sdf) const {
// This approximates the number of rays that would hit this voxel.
float weight =
cam_config_->fx * cam_config_->fy * std::pow(voxel_size / p_C.z(), 2.f); // Weight reduction with distance squared (according to sensor noise models).
if (!config_.use_constant_weight) {
weight /= std::pow(p_C.z(), 2.f);
} // Apply weight drop-off if appropriate.
if (config_.use_weight_dropoff) {
const float dropoff_epsilon =
config_.weight_dropoff_epsilon > 0.f
? config_.weight_dropoff_epsilon
: config_.weight_dropoff_epsilon * -voxel_size;
if (sdf < -dropoff_epsilon) {
weight *=
(truncation_distance + sdf) / (truncation_distance - dropoff_epsilon);
weight = std::max(weight, 0.f);
}
}
return weight;
}

关于每个voxel上的概率更新

代码对应 count probability 公式(2)

float BinaryCountVoxel::getBelongingProbability() const {
return static_cast<float>(belongs_count) /
static_cast<float>(belongs_count + foreign_count);
}
void BinaryCountVoxel::incrementCount(const int id, const float weight) {
// ID 0 is used for belonging voxels.
if (id == 0u) {
belongs_count++;
} else {
foreign_count++;
}
}

2.4 Map Management

首先是关于inactive submaps会frozen 仅对他们状态进行更新 \(C(S) \in \{\text{persistent, unobserved, absent}\}\)

为了对比两个submaps,我们对每个iso-surface point的SDF和weight进行插值。

如果sdf小于一个值,则加入进更新和计算。

\[\hat{w}(p)=\sqrt{\min \left(\frac{w(p)}{\xi_w}, 1\right) * \min \left(\frac{w_{r e f}(p)}{\xi_w}, 1\right)} \tag{5}
\]

结合TSDF权重,再给对应每个点权重的更新

float TsdfRegistrator::computeCombinedWeight(float w1, float w2) const {
if (w1 <= 0.f || w2 <= 0.f) {
return 0.f;
} else if (w1 >= config_.normalization_max_weight &&
w2 >= config_.normalization_max_weight) {
return 1.f;
} else {
return std::sqrt(std::min(w1 / config_.normalization_max_weight, 1.f) *
std::min(w2 / config_.normalization_max_weight, 1.f));
}
}
// Compute the weight to be used for counting.
if (config_.normalize_by_voxel_weight) {
weight = computeCombinedWeight(weight, point.weight);
total_weight += weight;
} else {
weight = 1.f;
}

为了在下游任务中使用,efficient queries are 是很重要的(迅速查询)。为了实现这一特性,对于我们的hierarchical map representation 我们仅考虑与查询点p相交的submaps和blocks

  • 如果这个点是处于active submap,直接使用最高的分辨率
  • 否则sdf(p) 则为到 any persistent submap 的最小距离

3. 实验及结果

首先是我们的方法在重建误差上最小,同时因为multi-resolution,能保持与其他方法在相同范围分辨率情况下的map size也更小

  • monolithic map as in [3,8,9]
  • Long-term fusion: [26] for volumetric maps (our implementation)

从图六折线图,可以看到一开始 Monolithic no map的误差还比较低,但会随时间而类似误差,其他with map和fusion等都会误差降低,由于semantic consistency的加入,我们的方法可以保持稳定误差范围内

如上更多关于误差和计算时间的表格,下面为定性图:

4. Conclusion

主要是提出了全景的multi-TSDFs,是一种可以多分辨率volumetric mapping下新型的representation

我们提出的submap-based方法能实现 语义上在时间上的连续性,同样保证高分辨率的准确度

未来的工作可以在segmentation refinement 和 short-term dynamics,同时也可以 提升在变化环境下的重定位算法效果

碎碎念

第一次看mapping类,cpp代码真的是套娃(继承)起飞,感觉完全弄懂代码还需要点时间,不过大概就是以下几点:

  • 得益于TSDFs 信息配合下一条,能有效降低map size
  • 根据不同的物体进行不同的分辨率赋值
  • 时间上 binary, count 概率,同时配合TSDF有权重更新,所以可以建出变化图形
  • 一种 map 新型的表达方式

赠人点赞 手有余香 ;正向回馈 才能更好开放记录 hhh

【论文阅读】ICRA2022: Panoptic Multi-TSDFs: a Flexible Representation for Online Multi-resolution Volumetric Mapping and Long-term Dynamic Scene Consistency的更多相关文章

  1. 【论文阅读】TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes

    TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes ECCV2018 北京大学.face++ 思路: ...

  2. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  3. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  4. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  5. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  6. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  7. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  8. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  9. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  10. 论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline

    论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline  如上图所示,本文旨在解决一个问题:给定一张图像, ...

随机推荐

  1. MacBook M1 虚拟机安装Windows for ARM使用体验

    前言 大家好,我是 刚进入春天还没来得及踏青又开始从早忙到晚的 蛮三刀.去年给大家带来了一篇比较详尽的MacBook M1评测.评测经历了全网的热情转载,成为了我唯一的一篇爆款文章(我该哭还是该笑!) ...

  2. Golang重复Rails Devise gem密码加密

    https://github.com/haimait/go-devise-encryptor package main import ( "fmt" //devisecrypto ...

  3. 在 Chromebook 上使用 Word 的最佳方法

    Splashtop 允许您从 Chromebook 远程控制 Windows 和 Mac 计算机,从而可以访问 Word 的桌面版本和所有文件. 对于远程工作者和学生,Chromebook 可以是一种 ...

  4. C语言:如何删除在可视化网页中未可见的内容(网页txt)

    我这个代码仅仅限制于在chrome浏览器中下载china daliy的网页中实现删除可视化内容,因为每个网页的超链接或者文本主内容分布不一样,但是学会了删除一个网页类型的不可视化内容之后,修改其他网页 ...

  5. AIRIOT答疑第6期|如何使用二次开发引擎?

    ​​灵活扩展,满足客户定制化需求   AIRIOT物联网低代码平台提供丰富的前端.后台服务二次开发接口,具备灵活的组件服务部署与管理能力,对任何功能模块进行二次开发,满足客户各类二次开发需求.支持多种 ...

  6. 用Yacht管理docker容器

    今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...

  7. ASP.NET Core环境Web Audio API+SingalR+微软语音服务实现web实时语音识别

    处于项目需要,我研究了一下web端的语音识别实现.目前市场上语音服务已经非常成熟了,国内的科大讯飞或是国外的微软在这块都可以提供足够优质的服务,对于我们工程应用来说只需要花钱调用接口就行了,难点在于整 ...

  8. 批量处理图片(resize;grayscale)以及重命名

    批量处理图片(resize:grayscale)以及重命名 做深度学习,有大量图片需要做为训练集,为方便批量resize,rename,灰度化,制作python脚本. 先纪录一些函数: resize ...

  9. ceph deploy部署ceph集群 ceph扩容 rbd存储

    架构拓扑 节点主机 节点IP 节点角色 OS ceph-admin 10.0.0.60 admin deploy mds centos7 ceph-node1 10.0.0.61 mon osd md ...

  10. 《剑指offer - 题目2》

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   注意方 ...