BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
返回首页室内导航系统 07:地图不是一张图,而是五种空间表达的组合

室内导航系统 07:地图不是一张图,而是五种空间表达的组合

·3 分钟阅读·

机器人项目常把地图理解成建图软件保存的一张图片。实际上,导航系统要回答五类问题:

  • 哪里有障碍;
  • 离障碍多远;
  • 地面能否通过;
  • 这里是什么区域;
  • 长距离应该走哪条路线。

一种地图很难高效回答全部问题。成熟系统会维护多层空间表达,并明确谁负责更新、谁可以覆盖谁。

1. 占据栅格:平面可达性的基础

二维栅格把每个单元表示为占据、空闲或未知。它适合:

  • 室内平面全局规划;
  • AMCL/scan matching;
  • 禁行区与膨胀层;
  • 低算力设备。

优点是简单、生态成熟;缺点是把高度压平。桌板、悬空障碍、台阶和坡度会丢失。

全局静态地图可以长期保存,局部 costmap 则应快速衰减动态障碍。不要把人群短暂观测永久写进静态图。

2. 三维占据体素:回答“空间里是否有东西”

体素地图将 3D 空间离散为小立方体,适合表达货架、桌面、机械臂工作区和机体高度范围的障碍。

关键参数包括:

  • 体素分辨率;
  • 地图范围;
  • 占据概率更新;
  • free-space ray casting;
  • 动态衰减;
  • 是否分层存储语义。

分辨率减半,体素数量理论上可能增长八倍,因此通常使用稀疏哈希、Octree 或局部滚动窗口。

3. TSDF 与 ESDF:重建和规划不是同一张场

TSDF(截断符号距离场)在表面附近存储带符号距离,适合融合深度并重建平滑表面。它回答“表面大概在哪里”。

ESDF(欧氏符号距离场)存储到最近障碍的欧氏距离,适合轨迹优化和碰撞查询。它回答“当前位置离障碍还有多远”。

深度/点云
  → TSDF 融合与表面重建
  → 占据判断
  → ESDF 距离传播
  → 轨迹代价与碰撞梯度

对需要三维局部规划的轮足机器人和移动机械臂,ESDF 比单纯占据值更有用,因为优化器能获得连续距离梯度。

4. 高程地图:地面机器人最有效的 2.5D 表达

高程地图按平面网格保存高度、方差、坡度、粗糙度和可通行性。它比完整 3D 体素更省内存,又能表达坡道、门槛和台阶。

适合:

  • 四足和轮足机器人;
  • 轻度起伏的室内外过渡;
  • 对地面高度敏感的 AMR;
  • 局部落足与机体姿态规划。

它的盲点是同一平面位置存在多层表面,例如桌面上方、楼梯下方或桥梁。多模态高程图或局部体素可以补充。

5. 语义与拓扑地图:把几何变成任务空间

语义层描述:

  • 房间、走廊、门、电梯;
  • 禁行、限速、单向、洁净区域;
  • 充电位、装卸位和等待位;
  • 玻璃、软帘、地毯等感知特殊区域。

拓扑图则把空间压缩成节点和边:

节点:门口、电梯厅、路口、站点
边:可通行关系、距离、时间、方向、速度、权限

它适合跨楼层和大楼长距离路由,也方便执行“到电梯口 → 召梯 → 进梯 → 切换楼层地图”的任务逻辑。

Nav2 的 Route Server 可以使用预定义图做长距离路线,同时在短距离仍由 freespace planner 根据局部环境生成可行路径。

地图组合建议

平面服务机器人

静态 2D occupancy
+ 局部 2D costmap
+ 语义 zone
+ 大楼 route graph

RGB-D/3D LiDAR AMR

2D 全局地图
+ 局部 3D voxel/TSDF
+ 2D 投影 costmap
+ 语义与动态障碍层

轮足机器人

全局 2D/拓扑路线
+ 机器人中心局部高程图
+ 3D 障碍/ESDF
+ 可通行性与落足层

谁可以修改地图

地图层的更新权必须分开:

  • 建图后端更新几何;
  • 运营平台更新禁行与限速;
  • 感知系统更新短时动态障碍;
  • 任务系统临时封闭路线;
  • 人工审核永久结构变化。

不应让局部避障把一个人写进永久地图,也不应让大模型直接修改几何占据。大模型可以提出语义候选,例如识别“这里可能是会议室”,但最终写入要经过规则或人工确认。

地图一致性与版本

各层必须共享坐标基准和版本关系。若几何地图更新,旧语义 polygon 可能偏移;若电梯位置调整,拓扑边也要重建。

地图 manifest 应记录:

geometry_version
semantic_version
route_version
calibration_version
valid_from / rollback_to
compatible_robot_profiles

上线前运行静态检查:语义区域是否落在地图内、路线边是否穿墙、停靠位是否有足够 footprint、楼层切换锚点是否存在。

地图不是 SLAM 的副产品,而是导航、任务和运营共同依赖的数据产品。选对表达,比把一张点云做得更密更重要。

延伸阅读