基于 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 Dahlia 与 Mallow 载板上成功运行。

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 更新机制

由此,我们的迭代周期大幅缩短,无需重建完整 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 关于机器人原型逐步开发流程的博客文章。

Read more

作为一名市场运营,我的“养虾”初体验:上手JiuwenClaw,让AI智能体真的“越用越懂我”

作为一名市场运营,我的“养虾”初体验:上手JiuwenClaw,让AI智能体真的“越用越懂我”

一、前言 最近,AI Agent(智能体)的概念非常火,但很多产品要么部署复杂,要么用起来像个死板的“工具人”。作为一名市场运营,在看到openJiuwen社区发布了基于Python开发的“小龙虾” JiuwenClaw,并宣称它能“懂你所想,自主演进”后,我决定亲自试一试,看看这只“龙虾”到底有什么特别之处。 二、🚀 丝滑开局:一行命令,即刻“养虾” 第一个惊喜来自安装。正如项目介绍里说的,整个过程确实非常简单。我没有遇到任何依赖冲突或繁琐的配置,在终端敲下几行命令,就完成了从安装到启动的全过程: # 创建名为 JiuwenClaw 的虚拟环境python -m venv jiuwenclaw# 激活 JiuwenClaw 虚拟环境(选择对应系统)jiuwenclaw\Scripts\activate # Windowssource jiuwenclaw/bin/activate

从「AI改变世界」到「AI帮我改Bug」:一个小厂架构师的Agent落地实战

从「AI改变世界」到「AI帮我改Bug」:一个小厂架构师的Agent落地实战

凌晨两点的顿悟:AI不是魔法,是工具 上周三凌晨两点,我坐在书房里揉着发涨的太阳穴——创业团队的产品刚上2.0版本,客户反馈的Bug堆了满满一屏幕。女儿的乐高积木还散在客厅地板上,老父亲的呼噜声从隔壁房间传来,而我面前的电脑屏幕上,一个红色的错误提示正在闪烁。 「要是有个AI能帮我自动定位Bug就好了。」我对着空气吐槽,顺手又灌了一口冰咖啡。 三个月前,我也是这么想的。那时候AI Agent的概念正火,我在各种技术大会上听了无数次「Agent将颠覆软件开发」的演讲。回到公司后,我拍着胸脯跟团队说:「咱们也搞个AI Agent,让它帮我们写代码、测Bug、甚至做需求分析!」 现在想来,当时的自己简直像个刚毕业的愣头青——热情有余,务实不足。 从「大而全」到「小而美」:我的Agent落地三步走 落地流程可视化 遇到问题 遇到问题 遇到问题 接入错误日志系统 懂代码库结构 全能Agent幻想 系统启动慢 代码质量差 功能臆想 反思与调整 找到最小可用场景

从微博热搜到深度报告:实测 ToClaw 的信息检索与分析能力,AI 终于开始“先找再写”

从微博热搜到深度报告:实测 ToClaw 的信息检索与分析能力,AI 终于开始“先找再写”

现在做内容、做运营、做市场,最怕的不是没有灵感,而是信息流转得太快。一个热点从冒头到发酵,可能只需要几个小时;而从“看到热搜”到“形成一版可用分析”,往往要经历找榜单、翻链接、看评论、筛信息、做结构、再写结论一整套流程。很多人以为这件事的核心是写,其实真正耗时的,往往是前面的“找”和“判”。 这也是我为什么会特别想测 ToDesk 远程控制新上线的 ToClaw:如果它只是会写几段话,那其实不算新鲜;但如果它能围绕“热点分析”这个真实任务,把检索、筛选、归纳、生成这几个动作串起来,那它就不只是一个聊天入口,而更像是一个真正能进入工作流的 AI 助手。 而从这次实测来看,ToClaw 在这个场景里,确实给了我一点不一样的感觉。 一、开放式测试 为了看清 ToClaw 到底是在“生成”

人工智能:深度学习模型的优化策略与实战调参

人工智能:深度学习模型的优化策略与实战调参

人工智能:深度学习模型的优化策略与实战调参 💡 学习目标:掌握深度学习模型的核心优化方法,理解调参的底层逻辑,能够独立完成模型从欠拟合到高性能的调优过程。 💡 学习重点:正则化技术的应用、优化器的选择与参数调整、批量大小与学习率的匹配策略。 48.1 模型优化的核心目标与常见问题 在深度学习项目中,我们训练的模型往往会出现欠拟合或过拟合两种问题。优化的核心目标就是让模型在训练集和测试集上都能达到理想的性能,实现泛化能力的最大化。 ⚠️ 注意:模型优化不是一次性操作,而是一个“诊断-调整-验证”的循环过程,需要结合数据特性和任务需求逐步迭代。 48.1.1 欠拟合的识别与特征 欠拟合是指模型无法捕捉数据中的潜在规律,表现为训练集和测试集的准确率都偏低。 出现欠拟合的常见原因有以下3点: 1. 模型结构过于简单,无法拟合复杂的数据分布。 2. 训练数据量不足,或者数据特征维度太低。 3. 训练轮次不够,模型还未充分学习到数据的特征。 48.1.2 过拟合的识别与特征 过拟合是指模型在训练集上表现极好,但在测试集上性能大幅下降。 出现过拟合的常见原因有以下3点: