基于 Toradex 硬件和 ROS 2 加速机器人原型开发:SiBrain 的技术视角

引言:

解决现代机器人系统的技术挑战

机器人系统对嵌入式计算提出了严峻要求,它需要实现低延迟实时通信、多传感器集成以及确定性性能,这些功能都需在复杂的中间件栈中协同运作。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 DahliaMallow 载板上成功运行。

Yocto 项目面临的挑战

我们选择从Yocto 起步,因为嵌入式开发团队先前已具备相关经验。然而 Yocto 在提供灵活性的同时,也带来了复杂性:

  • 需为定制传感器打内核补丁与驱动集成;

  • 维护自定义 Yocto 层需要大量管理成本;

  • 系统更新必须通过人工方式管理。

虽然最终实现了功能需求,但显然我们重复构建了 Toradex 通过 Torizon OS 已提供的工具链。

转向 Torizon OS

Torizon OS 是 Toradex 推出的开源工业 Linux 平台,基于 Yocto 构建,但专为简化开发与维护而设计。

将 ROS 2 机器人迁移至 Torizon 后,我们实现了以下核心优势:

  1. 稳定的基础操作系统

    • 长期支持(LTS)并定期提供安全补丁。

    • 无需维护自定义 Yocto 构建版本。

  2. 容器化部署方案

    • 将 ROS 2 封装于 Docker 容器中运行

    • 彻底消除与基础操作系统的环境冲突

    • 实现开发设备与部署设备的环境完全一致

  3. 开发者友好型工具链

  4. 面向未来的 OTA 更新机制

    • 内置的 OTA功能支持应用程序与系统更新

    • 安全启动SBOM 满足合规要求。

由此,我们的迭代周期大幅缩短,无需重建完整 Yocto 镜像,现在只需在基 于Ubuntu 的 ROS 容器内开发,并通过 Torizon 在数分钟内完成部署。

在 Toradex Torizon上运行自定义和预构建的 ROS 2 软件包

得益于 Torizon 对 Docker 的支持,运行预构建及自定义 ROS 2 软件包变得十分简便。以下是详细步骤指南:

  1. 前提条件

  2. 刷写 Torizon OS 系统

    • Username: torizon

    • Password: torizon

    • 使用Toradex Easy Installer从在线服务器刷写Torizon OS

    • 启动开发板并打开调试控制台

    • 录系统:

  3. 运行预构建的 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
  4. 运行自定义 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 关于机器人原型逐步开发流程的博客文章。

相关推荐
初学大模型4 小时前
机器人原生感知系统设计
人工智能·机器人
田里的水稻4 小时前
BI_双足机器人舞蹈动作的sim2sim和sim2Real(Gymnasium + Mujoco)
服务器·数据库·机器人
lisw054 小时前
AI宠物市场有哪些成功案例?
人工智能·机器人·宠物
冻伤小鱼干4 小时前
《自动驾驶与机器人中的slam技术:从理论到实践》笔记——ch7(2)
笔记·机器人·自动驾驶
ZPC82104 小时前
FANUC Karel TCP SERVER
算法·机器人
冻伤小鱼干5 小时前
《自动驾驶与机器人中的slam技术:从理论到实践》笔记——ch7(4)
笔记·机器人·自动驾驶
沫儿笙5 小时前
发那科机器人气保焊二元混合气节气
人工智能·机器人
樊梓慕7 小时前
【嵌入式】buildroot构建ros2环境
c++·机器人
冻伤小鱼干7 小时前
《自动驾驶与机器人中的slam技术:从理论到实践》笔记——ch7(3)
笔记·机器人·自动驾驶