[具身智能-712]:亚博智能的真机机器:一体式代码部署、学习、测试、验证的真机环境,既是目标机,也是开发机,一机两用。
ROSMASTER-M1(RDK X5 + M1 麦克纳姆轮底盘)
方案定义:一体式「一机两用」环境
核心结论:RDK X5 机器人本体 = 开发机 + 目标运行机 硬件本体同时承载两大角色:
- 开发机:预装完整 Ubuntu、ROS2 Humble、QT、Jupter、编译工具链、git、源码、调试工具,支持代码编写、编译、调试;
- 目标机:所有 ROS 业务节点本地执行,整套机器人程序可脱离上位电脑独立运行。
Windows/PC 电脑仅充当远程终端显示器(VSCode Remote-SSH / MobaXterm SSH),PC 不部署 ROS2、不运行任何机器人业务节点。
一、整体软件栈架构
载体:RDK X5 ARM64 | Ubuntu 22.04 Jammy
plaintext
操作系统 Ubuntu22.04
├── 基础开发工具:git、cmake、gcc、python工具链、colcon编译系统
├── ROS2 Humble(兼容TogetheROS.Bot)
├── ROS全套调试工具:rqt、ros2 cli、jstest、串口调试工具
└── 机器人工作空间 ~/yahboomcar_ros2_ws
├─ src/ 完整源代码(可直接修改)
└─ install/ 编译产出,机器人运行程序
二、三种工作模式,同一套硬件无缝切换
模式 1:开发学习模式(日常编码调试)
适用:学习 ROS2 架构、修改手柄映射、调整运动参数、调试链路故障
工作流程: PC 通过 VSCode 远程 SSH 连接 RDK → 直接在线修改源码 → 局部编译 colcon build --packages-select xxx → 加载环境变量,前台启动 launch → 使用 ros2 node list / ros2 topic echo /rqt 观测完整通信链路
整条遥控数据流(本地闭环,无跨主机网络)
plaintext
USB游戏手柄(RDK本地) → /dev/input/by-id固定设备
↓
joy_node → 发布话题 /joy
↓
yahboom_joy_M1(解析轴与按键)→ 发布 /cmd_vel
↓
Mcnamu_driver_M1(麦轮运动学逆解)→ 串口/CAN
↓
STM32底盘控制器 → 电机驱动
模式 2:集成测试模式(整机功能验证)
适用:长时间稳定性测试、场地实车移动测试、功能测试验收
特点: 代码冻结,极少重新编译;可降低日志打印等级减少资源占用; 完整保留调试工具,一旦出现小车异常,立刻 SSH 登录抓取话题数据、日志;
验证重点:手柄热插拔、连续运动、加减速、全向平移、避障联动。
模式 3:独立样机验证模式(模拟成品形态)
适用:检验机器人脱离上位机独立工作能力 配置 systemd 系统服务,上电自动启动整套 ROS 遥控程序; 断开电脑、断开 WiFi,仅依靠本地 USB 手柄控制小车;
⚠️关键区分:该模式依旧属于测试样机环境 ≠ 量产环境 镜像内置编译器、源码、大量开发组件,不能直接用于大规模商用出货。
三、「一机两用」方案核心优势
- 运行环境 = 开发环境,消除兼容性坑 不存在交叉编译、x86→ARM 架构差异、ABI 不兼容问题。代码调试通过后,运行形态不会发生变化。
- 学习门槛低,聚焦 ROS 核心思想 无需配置复杂 DDS 跨主机通信,不会出现经典问题:节点互相看不见、网络延迟、DomainID 冲突。 可以全身心理解:节点、话题、发布订阅分布式通信模型。
- 外设接入简单直接 手柄、激光雷达、摄像头直接接入机器人板卡,不需要通过网络转发硬件原始数据流。
- 测试不受线缆束缚 实车场地测试可以完全脱离电脑自由移动,适合户外、大范围场地验证。
- 单人即可完成完整研发闭环:代码修改→编译→真机运行→实车测试。
四、方案固有的短板(明确边界)
-
RDK X5 ARM 平台算力有限,完整编译工作空间速度较慢; ✅对策:使用局部编译,不要每次全量编译
colcon build --packages-select yahboomcar_ctrl -
镜像附带源码、编译器、大量调试包,占用存储空间,开机后台进程更多; ✅对策:项目定型准备量产时,基于验证稳定的代码,重新制作最小运行时镜像,剔除所有开发组件。
-
如果同时运行 SLAM、多目视觉 AI 推理等高负载任务,开发 + 运行程序叠加容易造成 CPU/BPU 满载; ✅对策:重型算法调试阶段,临时切换分布式方案;日常遥控调试维持一体式架构。
五、常见问题标准化解决方案
-
新开终端执行 ros2 指令找不到节点 / 命令 根因:终端未加载环境 根治:将 ROS、工作空间环境变量写入
~/.bashrc,终端自动加载。 -
反复插拔手柄,设备从
js0变成js1导致 joy_node 无法识别 优化 launch 文件,放弃硬编码/dev/input/js0,使用/dev/input/by-id/xxx固定符号链接。 -
开发阶段日志过多,长期运行占用磁盘 增加环境变量区分运行模式:
ROBOT_ENV=dev:全开调试日志;ROBOT_ENV=test:精简日志输出。
六、在项目全生命周期里的定位
- 前期方案预研:PC Ubuntu + Gazebo 仿真,验证运动学、控制逻辑
- 中期学习、真机迭代、功能验证:采用本方案【一体式一机两用】
- 后期样机验收:开启开机自启动,模拟产品独立运行
- 大规模商用量产:剥离开发环境,构建纯运行时最小镜像(删除源码、编译器、调试工具)
七、方案切换决策点
✅继续使用一机两用一体式:ROS 学习、小车遥控调试、小规模场地测试、算法真机验证
❌建议切换分布式架构:RDK 算力满载,需要运行大型 SLAM、大模型视觉推理
❌禁止直接使用该镜像量产:必须裁剪为轻量化运行环境
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)