2. AMR系统架构

AMR(Autonomous Mobile Robot,自主移动机器人)之所以能“看见环境、知道自己在哪里、规划出路径并稳稳走到目标点”,并不是靠某一个算法或某一个传感器完成的,而是多层软硬件协同的结果。理解 AMR 系统架构,是后续地图构建与自主导航部署的基础。本节把 AMR 拆解为感知层、定位层、建图层、规划层、控制层、执行层和通信层七个层次,并说明常见硬件与软件框架的对应关系。

一、七层架构的核心原理

AMR 的分层架构本质上是一条“从环境到动作”的信息处理链:传感器采集原始数据,感知层完成特征提取与障碍识别;定位层结合地图与观测估计机器人位姿;建图层维护环境地图;规划层在已知地图与位姿上生成全局路径和局部轨迹;控制层把轨迹转化为速度指令;执行层驱动电机、舵轮、升降机构等物理部件;通信层则贯穿所有层,负责数据总线、网络与调度。每一层都有明确的输入输出,层与层之间通过标准接口解耦,便于替换算法或硬件。

AMR 七层系统架构与数据流 感知层 激光雷达 / 深度相机 / 超声波 / IMU / 轮式里程计 / 防跌落传感器 原始数据 → 特征与障碍 定位层 AMCL / 激光匹配 / 里程计融合 / 重定位 建图层 栅格地图 / 代价地图 / SLAM 建图 / 地图更新 规划层 全局路径规划(A*、Dijkstra) + 局部轨迹规划(DWA、TEB) + 行为树调度 目标点 → 路径与速度 控制层 PID / MPC / 纯跟踪 / 速度平滑 执行层 驱动电机 / 舵轮 / 差速轮 / 升降与顶升机构 通信层 CAN / EtherCAT / RS485 / Wi-Fi / 5G / MQTT / ROS 2 DDS / 调度系统接口 位姿与状态反馈 常见硬件 • 主控:x86 工控机 / Jetson / RK3588 • 传感:2D/3D 激光雷达、深度相机、IMU • 底盘:差速、麦克纳姆轮、舵轮 • 安全:急停、防撞条、安全激光 常见软件框架 • ROS / ROS 2(Nav2 导航栈) • SLAM:Cartographer、LIO-SAM • 调度:RMF、自研 RCS 系统 • 仿真:Gazebo、Isaac Sim

二、各层职责与关键接口

感知层是系统的“眼睛和耳朵”,负责把物理世界的信号转换为可计算的数据。定位层解决“我在哪”,建图层解决“环境长什么样”,两者常通过 SLAM 联合估计。规划层解决“怎么去”,分为全局规划与局部规划两级。控制层解决“如何平稳地走”,执行层解决“谁去执行”,通信层解决“信息如何流动”。

层次 核心职责 典型输入 典型输出
感知层环境感知与障碍检测激光、图像、IMU 原始数据点云、障碍物列表、特征
定位层估计机器人位姿观测数据、地图、里程计位姿 (x, y, θ)
建图层构建与维护地图点云、位姿栅格地图、代价地图
规划层生成路径与轨迹目标点、地图、位姿全局路径、局部速度指令
控制层轨迹跟踪与速度控制期望轨迹、当前状态线速度、角速度
执行层驱动机械与执行机构速度指令、控制信号电机转动、机构动作
通信层数据交换与系统调度各层消息话题、服务、总线报文

三、典型场景:从任务下达到机器人移动

假设调度系统下发一个“从 A 点搬运货物到 B 点”的任务。通信层把任务传给规划层;规划层读取建图层的代价地图,结合定位层给出的当前位姿,用 A* 生成全局路径;局部规划器根据实时障碍物生成速度指令;控制层把速度指令转换为左右轮转速;执行层驱动电机;感知层持续检测障碍,定位层持续更新位姿,形成闭环。整个过程在几十毫秒内循环一次,保证机器人安全、平滑地到达目标。

关键闭环:感知 → 定位 → 建图 → 规划 → 控制 → 执行 → 反馈回感知。任何一层延迟或错误,都会导致机器人“迷路、撞墙或抖动”。

四、常见误区与复盘

  • 误区一:只关注算法,忽略通信层。很多现场问题不是算法不行,而是 Wi-Fi 丢包、CAN 总线负载过高导致指令延迟。
  • 误区二:定位与建图割裂。定位不准会导致地图重影,地图不准又会反过来影响定位,必须联合调试。
  • 误区三:控制层参数照搬。不同底盘质量、轮径、摩擦系数不同,PID 参数必须现场整定。
  • 误区四:忽视执行层反馈。编码器、限位开关、电流反馈是判断执行层是否正常的重要依据。

调试建议:先确认通信层稳定,再验证感知与定位,最后调规划与控制。顺序颠倒会浪费大量时间。

五、配置示例:ROS 2 中查看各层话题

# 查看当前所有话题(通信层与各层接口)
ros2 topic list

# 查看激光雷达数据(感知层)
ros2 topic echo /scan --once

# 查看定位位姿(定位层)
ros2 topic echo /amcl_pose --once

# 查看代价地图(建图层)
ros2 topic echo /global_costmap/costmap --once

# 查看规划路径(规划层)
ros2 topic echo /plan --once

# 查看速度指令(控制层)
ros2 topic echo /cmd_vel --once

注意:如果 /cmd_vel 有输出但机器人不动,优先检查执行层使能与通信层总线状态,而不是继续调规划参数。

掌握七层架构后,后续的地图构建、定位配置、路径规划与部署调试都会变得有章可循。每一层都可以独立验证、独立替换,这也是 AMR 系统能够快速迭代和规模化部署的根本原因。