# 仅用深度前视时如何绕开未知深度障碍物

> 原文链接：https://robotics.hellobike.com/pitfalls/2016-07-13-robotics-se-10252
> 频道：pitfalls | 更新日期：2016-07-13 | 标签：auto, stackexchange, control, motion-planning, algorithm
> 核心摘要：将深度点云投影为含未知区域的代价地图，让 A* 可穿越未知但代价更高。

# 仅用深度前视时如何绕开未知深度障碍物

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Obstacle Avoidance while Navigating](https://robotics.stackexchange.com/questions/10252/obstacle-avoidance-while-navigating)（Robotics Stack Exchange #10252）

**状态**：已解决

## 问题

机器人用占据栅格和 A* 离线路径规划，只能通过 Google Project Tango 深度感知看到障碍物正面，知道高度和宽度但不知道深度，重新填充栅格再规划效果不好。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 将 3D 深度点云中与机器人高度相关的点投影到 2D 平面。
2. 构建 `costmap`/占据栅格，把单元标为 `free space`、`obstacle`、`unknown`。
3. 点云命中的位置标为 `obstacle`，用简单射线追踪将机器人与障碍物之间标为 `free space`，障碍物后方或传感器最大距离外标为 `unknown`。
4. 在 A* 中使用这些代价，允许路径经过 `unknown`，但代价高于 `free space`。
5. 通常按至少机器人半径膨胀障碍物单元；若机器人或传感器有噪声、环境动态，可用多次读数做概率化代价。

原问题作者：dannyyy；采纳答案作者：Ben。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #10252：Obstacle Avoidance while Navigating](https://robotics.stackexchange.com/questions/10252/obstacle-avoidance-while-navigating)