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

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

需为定制传感器打内核补丁与驱动集成;
维护自定义 Yocto 层需要大量管理成本;
系统更新必须通过人工方式管理。
虽然最终实现了功能需求,但显然我们重复构建了 Toradex 通过 Torizon OS 已提供的工具链。
Torizon OS 是 Toradex 推出的开源工业 Linux 平台,基于 Yocto 构建,但专为简化开发与维护而设计。
稳定的基础操作系统
长期支持(LTS)并定期提供安全补丁。
无需维护自定义 Yocto 构建版本。
容器化部署方案
将 ROS 2 封装于 Docker 容器中运行
彻底消除与基础操作系统的环境冲突
实现开发设备与部署设备的环境完全一致
开发者友好型工具链
提供 Visual Studio Code 的 Torizon IDE 扩展插件.
支持远程调试、交叉编译及 CI/CD 流水线集成.
面向未来的 OTA 更新机制
内置的 OTA 功能支持应用程序与系统更新
安全启动和 SBOM 满足合规要求。
由此,我们的迭代周期大幅缩短,无需重建完整 Yocto 镜像,现在只需在基 于Ubuntu 的 ROS 容器内开发,并通过 Torizon 在数分钟内完成部署。

前提条件
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 容器还提供了卓越的可复现性、跨平台移植能力以及极简的系统集成工作量。
在 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 关于机器人原型逐步开发流程的博客文章。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。