BotOf TechAI / IoT / Full-Stack / 植物养护知识分享
返回首页室内导航系统 01:先定义运行边界,再谈 SLAM 和路径规划

室内导航系统 01:先定义运行边界,再谈 SLAM 和路径规划

·4 分钟阅读·

很多机器人项目从“用视觉还是雷达”“选哪套 SLAM”开始,做到一半才发现真正的问题是:电梯要不要进、玻璃墙能不能识别、地图多久变化一次、人群密度多高、断网后是否必须继续、定位丢失时怎样安全停下。

导航不是一个算法,而是一组在明确运行边界内共同工作的状态估计、地图、规划、控制与安全机制。第一步应定义 ODD(Operational Design Domain,运行设计域)。

用四张表写清 ODD

环境边界

维度需要量化的内容
空间单层/多层、面积、最窄通道、最小转弯区
地面平地、地毯、门槛、坡道、台阶、湿滑区域
几何玻璃、镜面、黑色吸光物、低矮/悬空障碍
动态人流密度、叉车速度、门、电梯、临时堆物
光照逆光、夜间、频闪、全黑、日照变化
通信Wi-Fi 覆盖、允许断网时间、时钟同步条件

“室内办公楼”不是可测试的 ODD。“两层、单层 3,000 平方米、最窄通道 0.9 米、最大坡度 5°、高峰每分钟 30 人经过、玻璃隔断占墙面 20%”才是。

任务边界

任务要拆成可验收动作:

  • 从已知点到指定房间;
  • 沿路线巡检并停靠若干观察位;
  • 自动进出电梯;
  • 在充电量低于阈值时回充;
  • 遇到封路后重规划;
  • 任务超时或定位异常时进入安全状态。

“自主导航”太宽。每项任务都应有触发、完成条件、最大时长、失败码和人工接管方式。

机器人边界

底盘决定导航能否执行。至少明确:

  • 差速、全向、阿克曼、四足或轮足;
  • 机体 footprint、载荷变化和传感器外伸;
  • 最大速度、加速度、角速度与制动距离;
  • 轮滑、里程计尺度误差、腿部运动造成的机体振动;
  • 控制频率、指令接口、急停链路和最低可控速度。

规划器生成的轨迹如果底盘跟不上,就不是“控制参数没调好”,而是系统约束没有传进去。

安全边界

安全不等于一个急停按钮。需要定义:

  • 哪些传感器直接进入独立碰撞保护;
  • 人与机器人允许的最小距离;
  • 速度如何随区域、人流和可见距离变化;
  • 定位协方差多大时必须降速;
  • 地图外、传感器超时、计算过载分别怎样处理;
  • 谁可以远程解除停车,解除前检查什么。

一套可落地的分层架构

任务层
  目标、路线、房间、电梯、充电、任务状态机
        ↓
导航层
  全局路线 → 局部路径 → 轨迹控制 → 恢复行为
        ↑
环境表示
  静态地图 + 动态代价地图 + 语义/禁行/限速区域
        ↑
状态估计
  wheel odom + IMU + LiDAR/VIO → odom;地图匹配 → map
        ↑
设备与安全
  驱动、传感器、时间同步、急停、碰撞监控

任务层不应该直接输出左右轮速度。它描述“去哪个房间、需要通过哪扇门、何时调用电梯”。导航层把任务意图转成可执行路径;控制层只追踪短时轨迹;独立安全层保留随时覆盖运动指令的权力。

先冻结四个接口

1. 坐标系

至少保持:

map → odom → base_link → sensors
  • map 允许全局修正和跳变;
  • odom 要连续,供控制器使用;
  • base_link 代表机器人机体;
  • 传感器外参由静态 TF 或经过管理的标定结果提供。

不要让两个节点同时发布同一段 TF,也不要把回环修正直接写进连续里程计。

2. 状态质量

位姿消息之外,还要传递协方差、时间戳、数据年龄和健康状态。规划器需要知道“位置大约在这里”与“位置可信到厘米级”是两种状态。

3. 地图产品

建图输出不只是 map.pgm。至少应包含:

  • 地图版本与适用楼层;
  • 分辨率、原点和坐标基准;
  • 禁行区、限速区、停靠位、门和电梯;
  • 建图时的传感器与标定版本;
  • 验证轨迹与已知缺陷。

4. 失败码

区分无全局路径、局部被阻塞、控制不收敛、定位丢失、传感器超时、底盘故障和安全停车。所有失败都叫 navigation failed,现场就无法形成改进闭环。

降级设计比正常路径更重要

建议至少设计五个状态:

  1. 正常:全速、全传感器、地图定位稳定。
  2. 受限:部分传感器质量下降,降低速度并缩短规划视距。
  3. 等待:动态障碍短时阻塞,保持安全位置等待。
  4. 重定位:停止任务运动,旋转或退到已知区域恢复定位。
  5. 安全停车:状态不可恢复或进入危险边界,独立制动并请求人工。

降级触发应使用时间窗口和迟滞,避免状态在阈值附近反复切换。

第一阶段的验收目标

不要把“全楼自主运行”作为第一版目标。更好的最小闭环是:

  • 一条 50—100 米代表性路线;
  • 包含窄门、交叉口、玻璃、动态行人和一次临时封路;
  • 连续运行 100 次;
  • 到点成功率、最小人距、定位误差、接管率和 P95 时长可统计;
  • 所有失败能归到明确模块和失败码;
  • 换一台同型号机器人后可通过标定复现。

完成这一步,团队才真正拥有一个导航系统,而不是一段能在 RViz 里移动的演示。

延伸阅读