26.Isaac教程-局部建图
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html
局部地图是机器人周围直接环境的基于网格的简化表示。 这些简化的世界表示对于安全地规划机器人附近的静态和动态障碍物至关重要。 局部建图管道将来自连接到机器人的不同传感器的传感器消息(如 FlatscanProto)作为输入。 每个传感器都遵循独立的发射模式,并且可以围绕机器人任意定向。 局部建图管道的输出是一个统一的距离图,由规划堆栈使用。 距离图是一个单通道图像,描述了机器人与网格图上最近障碍物的距离。
证据网格图
为了融合来自不同传感器的数据并生成统一的地图,使用了一种基于中间网格的表示形式,称为证据网格图。 Dempster-Shafer 理论有助于在机器人周围构建一个占用网格,其中每个单元格包含三个浮点数:一个单元格是自由的信念质量,一个单元格被占用的信念质量和被分配为不确定的剩余质量。 每个传感器消息都被解析成一个证据网格图,所有这些单独的网格图融合在一起,构建一个统一的环境证据网格图。
Evidence Grid Map 消息作为三通道 ImageProto 消息传输,可以使用 EvidenceGridMapViewer codelet 查看。
一个有代表性的工厂环境及其对应的统一证据网格图如下所示:
白色代表空闲单元格,黑色代表占用单元格,绿色代表不确定单元格。
架构
本地构图管道的架构如下所示:
-
每个证据图的结构是通过其格定义来定义的。 网格指定证据网格图的机器人中心、单元格大小、维度和框架。 可以更改相应 LatticeGenerator codelet 中的参数以更改相应证据网格图的结构。
-
收到平面扫描消息后,RangeScanToEvidenceMap 通过鸟瞰证据网格图表示范围值。 命中点之前的所有网格单元都标记为空闲,而命中点之外的网格单元标记为不确定。 lattice proto 指定传感器在网格地图上的中心,并帮助可视化传感器范围值相对于它自己的格子。
-
一旦生成传感器证据网格,它就会与 EvidenceMapFusion codelet 中先前时间步计算的统一网格融合。 最后计算的融合地图根据机器人在刻度之间的相对运动进行转换。 传感器地图根据传感器相对于机器人的对齐方式进行转换(如机器人模型中指定的那样)。 然后将两个转换后的地图堆叠起来,并融合它们相应的证据网格值(在必要时进行插值)。 可以通过将 ISAAC_PARAM(FusionOperator, fusion_operator) 设置为四个字符串之一来使用四个融合规则之一:“pcr6”(默认)、“dempster_shafer”、“josang_average”、“josang_cumulative”。
注意
目前,PCR6 融合规则是 CUDA 加速的,结果比同等的基于 CPU 的融合实现至少快 4 倍。
-
EvidenceMapInpaint 使用所需的证据质量值绘制证据网格图中的区域。 例如,如果传感器配置有盲点,则可以通过此小代码手动设置这些区域中的值。
-
EvidenceToBinaryMap 根据空闲类和占用类的参数化阈值将证据图转换为二进制图。
-
BinaryToDistanceMap codelet 将二进制映射转换为距离映射以供规划器使用。
更多精彩内容:
https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561