引言:
解决现代机器人系统的技术挑战
机器人系统对嵌入式计算提出了严峻要求,它需要实现低延迟实时通信、多传感器集成以及确定性性能,这些功能都需在复杂的中间件栈中协同运作。ROS 2 凭借其数据分发服务(DDS)通信架构、模块化软件生态系统以及对嵌入式 Linux 的支持,已成为机器人领域的事实标准。
本文记录了我们将基于 ROS 2 的机器人原型移植至 Toradex Verdin iMX8M Plus 模块的技术探索过程。该平台凭借其神经网络处理单元(NPU)、异构核心架构及相机接口特性,非常适合机器人应用开发。
本文并按步讲解的机器人教程,而是旨在记录我们在 Toradex 硬件上对 ROS 2 工作流程的工程评估。我们将重点分析实际验证过程中的成功经验与难点,并从开发速度、可维护性和部署效率等维度,对比基于 Yocto 的构建方案与 Torizon 容器化方案的差异。文中同时提供了关键步骤的示例命令,以便读者复现实验过程。
ROS 2 是什么以及我们为何使用它
ROS 2 并非传统意义上的操作系统,而是一个帮助开发者构建机器人应用的开源软件框架。可以这样理解:Linux 是处理器的操作系统,而 ROS 2 则是实体机器人的"操作系统"。
ROS 2 在机器人领域被广泛采用的一个重要原因在于其对实时通信的支持。这一特性通过 DDS 实现,使开发者能够根据不同任务需求灵活调整消息传递机制。此外,ROS 2 还拥有庞大的生态系统,提供涵盖导航、感知、可视化及硬件驱动等领域的即用型功能包。

在我们的项目中,我们选择了 ROS 2 Humble 版本,因为它提供长期支持,并且能在基于 ARM 架构的嵌入式硬件( 如 Toradex Verdin iMX8M Plus)上良好运行。采用 ROS 2 使我们能够更轻松地组织机器人软件、集成多种传感器并复用现有工具,同时保持构建自定义功能的灵活性。
起点:Yocto + ROS 2
在我们的概念验证机器人中,我们采用了以下技术栈:
-
基于 meta-ros 层的 Yocto Scarthgap 5.0.
-
ROS 2 Humble 发行版 .
-
搭载多种板载传感器:
-
DHT20(温湿度传感器)
-
环境光传感器
-
IMU(加速度计、陀螺仪、磁力计)
-
超声波测距模块
-
室内激光雷达(LiDAR)
-
USB 摄像头
-
我们将应用程序打包在基于 Ubuntu 的容器中,采用 Debian 构建方式,从而实现了快速迭代开发。该机器人在搭载 Verdin iMX8M Plus 模块的 Toradex Dahlia 与 Mallow 载板上成功运行。

Yocto 项目面临的挑战
我们选择从Yocto 起步,因为嵌入式开发团队先前已具备相关经验。然而 Yocto 在提供灵活性的同时,也带来了复杂性:
-
需为定制传感器打内核补丁与驱动集成;
-
维护自定义 Yocto 层需要大量管理成本;
-
系统更新必须通过人工方式管理。
虽然最终实现了功能需求,但显然我们重复构建了 Toradex 通过 Torizon OS 已提供的工具链。
转向 Torizon OS
Torizon OS 是 Toradex 推出的开源工业 Linux 平台,基于 Yocto 构建,但专为简化开发与维护而设计。
将 ROS 2 机器人迁移至 Torizon 后,我们实现了以下核心优势:
-
稳定的基础操作系统
-
长期支持(LTS)并定期提供安全补丁。
-
无需维护自定义 Yocto 构建版本。
-
-
容器化部署方案
-
将 ROS 2 封装于 Docker 容器中运行
-
彻底消除与基础操作系统的环境冲突
-
实现开发设备与部署设备的环境完全一致
-
-
开发者友好型工具链
-
支持远程调试、交叉编译及 CI/CD 流水线集成.
-
面向未来的 OTA 更新机制
由此,我们的迭代周期大幅缩短,无需重建完整 Yocto 镜像,现在只需在基 于Ubuntu 的 ROS 容器内开发,并通过 Torizon 在数分钟内完成部署。

在 Toradex Torizon上运行自定义和预构建的 ROS 2 软件包
得益于 Torizon 对 Docker 的支持,运行预构建及自定义 ROS 2 软件包变得十分简便。以下是详细步骤指南:
-
前提条件
-
Toradex 开发板(例如:使用 Mallow 载板的 Verdin iMX8MP)
-
已通过 Toradex Easy Installer 安装 Torizon OS 系统
-
主机 PC 需运行 Ubuntu 22.04 系统并安装 ROS 2 Humble
-
-
刷写 Torizon OS 系统
-
Username: torizon
-
Password: torizon
-
使用Toradex Easy Installer从在线服务器刷写Torizon OS
-
启动开发板并打开调试控制台
-
录系统:
-
-
运行预构建的 ROS 2 软件包
步骤一:拉取 Sibrain 预构建的 ROS 2 基础镜像
docker pull sibrain/rosbase第二步:使用 host 网络运行容器
docker run --network host -it sibrain/rosbase:latest第三步:设置 ROS 环境
source /opt/ros/humble/setup.bash第四步:运行演示对话节点
ros2 run demo_nodes_py talker从您的主机(在同一网络中):
ros2 topic list ros2 topic echo /chatter -
运行自定义 ROS 2 软件包
我们使用两个容器:
第一步:拉取所需镜像
docker pull sibrain/rosbase docker pull sibrain/hello_ros第二步:启动容器
docker run -d --name rosbase_running --network host -v ros_opt:/opt -it sibrain/rosbase:latest docker run -d --name hello_ros --network host -v ros_opt:/opt -it sibrain/hello_ros第三步:构建自定义 ROS 包
docker exec -it hello_ros bash cd src/ source /opt/ros/humble/setup.bash colcon build source install/setup.bash第四步:运行自定义节点
ros2 run ros_py_pkg py_node From your host PC: ros2 topic list ros2 topic echo /helloros-
rosbase → ROS 环境配置容器
-
hello_ros → 自定义软件包容器
-
该工作流程支持在 Toradex 硬件上快速测试通用及特定应用的 ROS 软件包。
经验总结
对于刚开始使用 Toradex 硬件的机器人团队,我们强烈建议采用 Torizon OS结合 ROS 2 容器方案,以加速原型开发并缩短产品上市周期。Torizon O S通过快速原型构建、持续更新维护和 OTA 部署功能有效降低了系统复杂性。若沿用最初基 于Yocto 构建的方案则无法实现这些优势。此外,ROS 2 容器还提供了卓越的可复现性、跨平台移植能力以及极简的系统集成工作量。
下一步计划
SiBrain 正与 Toradex 合作,致力于:
-
在 Torizon 演示库中发布 ROS 2 容器。
-
为 Torizon IDE提供 ROS 2 项目模板。
-
在行业展会上展示即将推出的演示案例,包括一款 ROS 2 无人机原型。
通过将 ROS 2 与 Torizon 结合应用于 Toradex 硬件平台,您可专注于机器人智能开发与创新,无需耗费精力维护底层基础设施。
更多内容
同时,我们建议阅读《How Torizon and ROS 2 Empower your Robotics Projects》博客文章,深入了解如何借助 Torizon 启动 ROS 2 项目,并参考 SiBrain 关于机器人原型逐步开发流程的博客文章。