IB-Robot分布式部署指南:Ubuntu+openEuler+OpenHarmony三平台协同
【免费下载链接】IB_RobotSave the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked version of tensormsg, references to lerobot fork, code references to the lerobot_ros2:ros2_ws branch, as well as some code related to development usability.项目地址: https://gitcode.com/openeuler/IB_Robot
前往项目官网免费下载:https://ar.openeuler.org/ar/
IB-Robot是openEuler Embedded开发的AI机器人执行框架,专为具身智能场景设计。本指南将详细介绍如何在Ubuntu、openEuler和OpenHarmony三个平台上实现IB-Robot的分布式部署与协同工作,帮助新手用户快速掌握跨平台部署技巧。
一、分布式部署架构概览 📊
IB-Robot的分布式部署架构基于ROS 2通信机制,通过数据总线实现多平台协同。以下是系统架构图,展示了各服务节点之间的关系:
从架构图中可以看到,系统主要包含训练服务、数据服务、推理服务、动作分发、导航控制等模块,通过ROS/AGIROS/DORA/AimRT数据总线实现跨平台通信。这种设计使得不同平台可以专注于自身擅长的任务,如Ubuntu负责仿真和开发,openEuler和OpenHarmony负责边缘计算和实时控制。
二、环境准备与兼容性要求 📋
2.1 各平台功能定位
IB-Robot在不同平台上有明确的功能定位,确保资源高效利用:
Ubuntu 22.04:作为主机/开发机,支持完整的设置、构建、仿真、录制、MoveIt和推理工作流,适用于 Gazebo 仿真、数据收集、单主机推理和边云调试。
openEuler Embedded 24.03:作为边缘板,支持设置、干净构建和板端运行时验证,适用于NPU推理、真实机器人控制和录制客户端。
OpenHarmony 5.1:作为边缘板,支持板端运行时工作流、HDC调试、最小推理工作区构建助手和LeRobot补丁配置文件支持,适用于BQ3588HM板推理和HDC/SSH调试。
2.2 网络与通信配置
跨平台部署的关键是确保网络通畅和通信正常,主要涉及以下配置:
ROS_DOMAIN_ID设置:所有参与分布式部署的机器必须使用相同的
ROS_DOMAIN_ID(0-232之间的唯一数字)。设置方法如下:export ROS_DOMAIN_ID=<your_domain_id>注意:跨机器运行时,参与的所有机器必须使用相同的
ROS_DOMAIN_ID,否则无法发现ROS 2话题和服务。网络要求:所有平台需处于同一局域网内,确保能够相互通信。可以通过
ping命令测试网络连通性。防火墙设置:如果启用了防火墙,需要确保ROS 2相关端口开放,或暂时关闭防火墙以避免通信问题。
三、分布式部署步骤 🔧
3.1 代码获取与环境搭建
首先,在所有平台上获取IB-Robot代码并搭建基础环境:
克隆代码仓库:
git clone https://gitcode.com/openeuler/IB_Robot cd IB_Robot环境设置:
- Ubuntu:执行
scripts/setup/ubuntu-22.04.sh脚本进行环境配置。 - openEuler:执行
scripts/setup/platforms/openeuler-embedded-24.03.sh脚本。 - OpenHarmony:使用
scripts/openharmony/build_ibrobot_oh_custom.sh脚本进行交叉编译和环境准备。
- Ubuntu:执行
3.2 三平台协同部署方案
3.2.1 Ubuntu仿真+边缘板NPU推理
此方案中,Ubuntu主机处理仿真和边缘侧预处理/后处理,边缘板(openEuler或OpenHarmony)负责云侧纯推理。
Ubuntu主机(仿真+边缘):
ros2 launch robot_config robot.launch.py \ robot_config:=so101_single_arm \ control_mode:=model_inference \ use_sim:=true \ with_inference:=false \ execution_mode:=distributed边缘板(openEuler/OpenHarmony,云侧推理):
# openEuler ros2 launch inference_service cloud_inference.launch.py \ model_source:=local \ device:=npu # OpenHarmony (RK3588/RKNN) ros2 launch inference_service cloud_inference.launch.py \ model_source:=local \ device:=rknn \ rknn_runtime:=lite3.2.2 开发板主运行模式
在此模式下,除RViz外,大部分节点都运行在openEuler开发板上,Ubuntu PC仅运行RViz进行观察:
openEuler开发板:
ros2 launch robot_config robot.launch.py \ robot_config:=lekiwi_navi \ use_sim:=false \ with_rviz:=falseUbuntu PC(仅RViz):
export ROS_DOMAIN_ID=<same_as_board> ros2 launch robot_navigation lekiwi_navigation_rviz.launch.py3.2.3 录制服务分布式部署
将机器人控制与录制操作分离,Ubuntu主机负责录制服务端,边缘板负责运行录制客户端:
Ubuntu录制服务端:
ros2 launch robot_config robot.launch.py \ robot_config:=so101_single_arm \ record:=true \ record_server_only:=true边缘板录制客户端:
# 确保与服务端ROS_DOMAIN_ID相同 export ROS_DOMAIN_ID=<same_as_server> ros2 run dataset_tools record_cli.py --ros-args \ -p episode_dir:=/data/recordings \ -p server_ip:=<ubuntu_server_ip>四、关键配置文件与参数说明 ⚙️
4.1 主要启动文件
IB-Robot的所有运行入口都以robot_config包的统一入口robot.launch.py为主,位于src/robot_config/launch/robot.launch.py。此外,推理服务有独立的启动文件cloud_inference.launch.py,位于src/inference_service/launch/cloud_inference.launch.py。
4.2 关键参数说明
robot_config:指定机器人配置文件,如so101_single_arm、lekiwi_navi等,配置文件位于src/robot_config/config/robots/。control_mode:控制模式,可选值包括teleop(遥操作)、model_inference(模型推理)等。use_sim:是否使用仿真环境,true表示使用仿真,false表示连接真实机器人。execution_mode:执行模式,distributed表示分布式模式,此时本机只做前/后处理并通过topic调用板端推理。device:指定推理设备,如npu(Ascend NPU)、rknn(RK3588 RKNN)、cpu等。
五、常见问题与故障排除 🚧
5.1 通信问题
- 症状:平台间无法通信,话题和服务无法发现。
- 解决方法:
- 检查所有平台的
ROS_DOMAIN_ID是否一致。 - 确保网络连通,可使用
ping命令测试。 - 检查
RMW_IMPLEMENTATION是否一致,建议使用默认值。 - 确保
ROS_LOCALHOST_ONLY设置为0(默认)。
- 检查所有平台的
5.2 推理服务启动失败
- 症状:边缘板上推理服务启动失败或模型加载错误。
- 解决方法:
- 对于OpenHarmony平台,检查
thirdparty_pytorch的test/skh-run.tar.gz是否正确部署到/data/local/skh-run。 - 检查模型文件路径是否正确,模型是否与硬件匹配。
- 查看日志文件获取详细错误信息,日志通常位于
~/.ros/log/目录下。
- 对于OpenHarmony平台,检查
5.3 仿真与真实机器人切换问题
- 症状:切换仿真与真实机器人时出现控制异常。
- 解决方法:
- 确保切换时
use_sim参数正确设置。 - 切换前停止所有相关节点,避免资源冲突。
- 对于真实机器人,检查硬件连接和驱动是否正常。
- 确保切换时
六、总结与扩展 🚀
通过本指南,你已经了解了IB-Robot在Ubuntu、openEuler和OpenHarmony三个平台上的分布式部署方法。这种部署方式充分利用了各平台的优势,实现了高效的协同工作。
IB-Robot的分布式架构还支持更多扩展场景,如多机器人协同、云端大数据训练与边缘端推理结合等。你可以通过修改配置文件和启动参数,根据实际需求定制部署方案。
更多详细信息,请参考以下文档:
- inference_service/README.md:推理服务架构、单主机/分布式部署和NPU/GPU云节点启动说明。
- docs/OpenHarmony_thirdparty_pytorch_validation.md:OpenHarmony板
thirdparty_pytorch/skh-run设置、部署和验证进度。
希望本指南能帮助你顺利实现IB-Robot的跨平台分布式部署,享受AI机器人开发的乐趣!
【免费下载链接】IB_RobotSave the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked version of tensormsg, references to lerobot fork, code references to the lerobot_ros2:ros2_ws branch, as well as some code related to development usability.项目地址: https://gitcode.com/openeuler/IB_Robot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考