作者:Kenton Williston
自主移动机器人 (AMR) 和自动导引车 (AGV) 的正常运行需要多个子系统的紧密协调,包括传感器、电机、导航和基于人工智能 (AI) 的决策。对开发人员来说,整合所有这些子系统具有一定的挑战性。
机器人操作系统 (ROS) 为破解这一复杂难题提供了一条清晰的路径。ROS 是开源的机器人中间件,可提供标准化通信框架和庞大的可重复软件包生态。选用支持原生 ROS 的组件,设计人员可以直接使用自带软件可寻址功能的预制硬件模块,从而缩短调试时间并提高互操作性。
本文简要梳理了 AMR 和 AGV 设计人员面临的各种挑战,以及 ROS 如何助力解决这些挑战。然后介绍 Analog Devices (ADI) 的 ROS 兼容硬件,包括电机控制器、惯性测量单元 (IMU) 和飞行时间 (ToF) 传感器,并解释了这些组件如何与 ROS 软件栈集成以加速产品开发。
为什么 AMR/AGV 集成这么难?
“AMR/AGV 集成难在硬件选型与信号验证、软件数据流对齐;自研易重复开发并被专有接口锁定。”
在 AMR 或 AGV 设计中,集成工作可能会决定设计初期的进度。在硬件层,团队必须选择组件、设计接口并验证信号完整性和定时功能。在软件层,他们必须加载驱动程序、定义数据流,并确保系统特性在实际条件下具有可预测性。
优秀的研发团队能够通过内部自研设计实现这些目标,但这样做往往意味着需要重复开发现货产品的已有功能。这种努力往往难以证明其合理性,尤其是传统方案还会将研发团队束缚于专有接口体系之中。当需求发生变化时,更换一个组件可能需要重新设计软件栈的大部分内容。
利用ROS的节点、话题与服务破解 AMR/AGV 集成难题
“ROS 是开源机器人中间件,用节点加话题、服务实现标准化通信,软件包封装节点与配置。”
创建 ROS 就是为了解决这些问题。尽管名为 ROS,但它并不是传统意义上的操作系统。相反,ROS 是一个开放源码框架,提供丰富全面的工具集、软件库和标准化开发规范。
ROS 的关键概念是将复杂的机器人应用结构化为模块节点(图 1)。这些小程序可执行特定任务,如读取传感器数据或控制电机速度。

节点通过两种主要机制进行通信:
- 话题:订阅者模式 —— 一种用于连续数据流的发布,如传感器数据
- 服务:请求 – 响应模式,最适合离散式动作,如设备配置和初始化等
多个节点及其依赖项(包括相关话题和服务)可整合成一个软件包,以实现更全面的功能。例如,Analog Devices 为其专为 AGV 和 AMR 设计的传感器和执行器模块创建了 ROS 驱动程序包。这些软件包封装了将硬件集成到基于 ROS 的系统中所需的节点、消息定义和配置文件。
ROS 2 如何简化 AMR/AGV 设计?
“ROS 2 提供 Nav2 导航、定位建图与仿真工具,并支持 Linux 与 micro-ROS 实时系统。”
这种模块化架构可实现互操作性并加快开发速度。在硬件层,ROS 为相机和电机控制器等组件提供标准化接口。这既加快了集成速度,又使设计人员免于被供应商锁定和支付许可费用。
在软件层,ROS 提供工具和中间件,有助于设计人员开发、测试、部署和维护复杂的机器人。当前版本的 ROS 2 框架提供了一些对 AMR 和 AGV 特别有用的功能。具体包括:
- Nav2 导航堆栈支持行为树、进行区域、限速等功能
- 先进的定位算法,包括建图和定位工具,以使 AMR 和 AGV 实现环境感知
- 实现了与仿真、可视化和日志工具的集成,有助于开发和诊断
ROS 2 通常在基于 Linux 的计算机上运行,同时也支持其他操作系统。ROS 2 还支持 micro-ROS 操作系统,这是一种可在搭载如 Zephyr 和 FreeRTOS 等实时操作系统 (RTOS) 的微控制器 (MCU) 上直接运行的变体版本。
AMR/AGV 电机控制接入 ROS 2的路径
“TMCM-2611-AGV 双轴 BLDC 驱动经 adi_tmcl 订阅 /cmd_vel_X 话题接收导航速度指令。”
为了阐明 ROS 2 的潜力,请考虑驱动控制的复杂性。大多数 AMR 和 AGV 采用差速驱动配置,即两组独立控制的车轮可同时前行和转弯。这种结构要求电机控制器能够同时驱动两个车轮,同时接受导航系统的协调指令。
ADI 的 TMCM-2611-AGV(图 2)直接满足了这一需求。该板属于 Trinamic 电机控制器模块 (TMCM) 系列,是用于三相无刷直流 (BLDC) 电机的双轴伺服驱动平台,专为 AGV 和 AMR 牵引应用而设计。每个轴可在 48 伏电压下驱动可达 14 安培 (A) RMS 的电机,并通过增量式正交编码器或数字霍尔效应传感器进行位置反馈。

adi_tmcl ROS 2 驱动程序主要通过话题将这些硬件与 ROS 2 生态系统连接起来(图 3)。例如,导航堆栈可以通过 /cmd_vel_X 话题向每组车轮发布速度指令。adi_tmcl 驱动程序订阅这些话题,将命令转换成 Trinamic Motion Control Languag (TMCL) 语言框架,并通过 Linux 本地 SocketCAN 接口在 CAN 总线上发送。

在另一个方向上,adi_tmcl 驱动程序向 /tmc_info_X 话题发布电机反馈,提供速度、位置、扭矩和状态信息。其他节点可以订阅这些数据,以便在应用层面进行里程测量计算、诊断或闭环控制。
这一双向流程说明了 ROS 2 是如何实现模块化系统设计的。导航算法无需了解 TMCL 或 CAN 总线的任何信息,只需发布标准速度信息并接收反馈信息即可。
adi_tmcl 驱动程序还使用服务来完成初始化和参数访问等任务。例如,/tmcl_gap_all 可读取所有轴参数值,/tmcl_ggp_all 可读取控制器板的所有全局参数值。
用于位置跟踪的IMU
“ADIS16500 系列 IMU 经 imu_ros2 输出六自由度数据,与里程计做卡尔曼融合抑制漂移。”
虽然车轮编码器能让系统根据车轮行程估算位置,但仅靠车轮里程计往往不足以实现精确的位置跟踪。随着时间的推移,车轮打滑和路面不平都会带来很大的误差。在许多室内环境中,GPS 信号不可靠,无法进行持续校正,这一点尤其令人担忧。
IMU 提供独立的运动参考,AMR 和 AGV 能够利用这一特性提高航位推算精度。这方面的典型产品如 ADIS16500/05/07 系列,它通过三轴陀螺仪和三轴加速度计提供六自由度精密惯性传感,且全部采用 15 × 15 × 5 毫米 (mm) BGA 封装。工厂校准会针对每个传感器的灵敏度、偏置、轴对准特性和温度补偿进行特性标定,以此减轻系统设计人员的集成负担。
ADIS16500AMLZ 就是一款典型的产品(图 4)。该部件的陀螺仪量程为每秒 ±2000° (˚/s),陀螺仪运行中零偏稳定性为 8.1° 每小时 (˚/hr),角度随机游走为 0.29° 每根号小时 (°/√hr)。这些性能指标可有效降低随时间累积的漂移,提升两次外部校正间隔内的航位推算性能。

为集成 ROS 2,imu_ros2 驱动程序支持 ADIS16500/05/07 系列。该驱动程序通过 LibIIO 利用 Linux 工业 I/O 子系统,其输出兼容机器人定位等常见的 ROS 2 传感器融合软件包,后者采用扩展卡尔曼滤波器将 IMU 和里程计数据结合在一起。
有意对该 IMU 进行测试评估的设计人员,可先使用 ADIS16500/PCBZ 评估板(图 5)开启前期工作。该评估板通过一个与标准 2 mm 间距带状电缆兼容的 16 针针座,提供 IMU 的 SPI 接口。

障碍物探测如何补盲?
“ADTF3175BMLZ 以 1024×1024 深度图补盲,经 adi_3dtof_adtf31xx 驱动接入。”
障碍物探测是 AMR/AGV 的另一项标准功能。虽然激光雷达擅长在较远距离探测障碍物,但许多应用也需要近场感知功能来探测低洼障碍物、地面不连续性或位于 LiDAR 扫描平面之外的物体。ToF 深度相机通过在宽视场提供稠密深度图像,弥补了这一不足。
ADTF3175BMLZ ToF 模块(图 6)非常适合这些要求。该模块搭载了 CMOS 深度传感器与照明光学器件,可捕捉分辨率高达 1024 × 1024 的深度和主动亮度 (AB) 帧,视场角为 75˚ × 75°。这种分辨率和覆盖范围的结合,使其非常适合在仓库和制造环境中进行安全区域监控和地面检测,因为在这些环境中可能会出现不同高度的障碍物。

adi_3dtof_adtf31xx 驱动程序可使用标准 ROS 2 消息格式发布深度和 AB 帧,从而能够轻松访问相机数据。这些输出可直接与常见的感知软件包集成,用于实现点云生成、楼层检测和安全气泡监测等任务。该驱动程序还支持文件播放模式,允许在没有物理硬件连接的情况下,进行算法开发和测试。
EVAL-ADTF3175D-NXZ 开发套件(图 7)为开发和进行原型设计提供了一个完整的传感器平台。该套件最显著的特点是,搭载一块基于 Arm® 的 Linux 开发板,可以直接部署 ROS 2 节点。另外,传感器还可通过以太网将深度数据流传输到单独的 ROS 2 主机,以提升不同系统架构的灵活性。

Analog Devices Autonomous Mobot (ADAM) 参考平台展示了这些 ROS 兼容组件如何与电池管理、电源转换和通信方面的其他解决方案集成,从而形成一个完整的 AMR 系统。
ROS 2 兼容组件选型结论
“选用 ADI 等厂家的 ROS 2 兼容组件,可显著降低 AMR/AGV 集成复杂度与研发风险。”
通过选择与 ROS 兼容的组件,可以大大降低 AMR 和 AGV 设计研发的复杂性。选择象 ADI 这样成熟可靠的元器件供应商,该公司可为各类传感器与执行器提供 ROS 2 驱动,是极具价值的合作伙伴。
敲黑板
- ROS 是什么?
- ROS 节点之间靠什么通信?
- ROS 2 对 AMR/AGV 有哪些专属能力?
- AMR/AGV 的电机控制如何接入 ROS 2?
- TMCM-2611-AGV 的驱动能力是多少?
- 为什么仅靠车轮编码器不足以定位?
- ADIS16500AMLZ 的关键性能指标是什么?
- ADTF3175BMLZ 的规格与免硬件开发方式?
******
如任何问题,欢迎联系 DigiKey客服团队
中国(人民币)客服
service.sh@digikey.com
中国(美金)/香港客服
– china.support@digikey.com

打开微信搜一搜,输入「digikey」
点击关注 DigiKey 官方微信公众号
按指引完成会员登记
之后每周自动推送工程师专属秘技,边学技术边攒积分,各类工具好礼、专属采购福利等你来领。