IB-Robot架构深度解析:如何打通LeRobot与ROS 2生态壁垒
【免费下载链接】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社区推出的智能具身机器人开发框架,它成功打通了Hugging Face LeRobot机器学习生态与ROS 2机器人中间件之间的技术壁垒。这个框架为开发者提供了从数据采集、策略训练到分布式部署的完整端到端工作流,让AI模型能够无缝运行在真实机器人上。
为什么需要IB-Robot?🤔
传统机器人开发面临两大挑战:
机器学习与机器人控制的"世界观"差异
- LeRobot生态使用Episode(回合)作为数据单位,而ROS 2使用Topic(话题)
- AI模型工作在离散时间步,机器人控制需要连续时间流
- 端到端神经网络模型与分层规划控制架构难以协同
从科研实验室到工业级部署的鸿沟
- 传感器数据缺乏统一标准
- 多个AI模型难以高效协同
- 缺乏自动化的数据记录与回流机制
IB-Robot通过创新的架构设计解决了这些难题,让机器人真正具备了"智能"。
架构全景:三层设计理念
IB-Robot采用分层架构设计,每一层都有明确的职责边界:
应用层:智能决策与任务编排
这一层是机器人的"大脑",负责理解复杂意图和执行高层逻辑。核心组件包括:
- 具身智能体:集成ASR/VLM,将自然语言转化为机器人可理解的任务序列
- 任务编排器:使用行为树管理子任务流程
- MoveIt 2:负责路径规划、碰撞检测及逆运动学求解
规划与分发层:动作仲裁与状态反馈
作为机器人的"小脑",这一层负责指令的平滑执行和状态监控:
- 统一动作执行器:支持双模切换,负责指令平滑、保护及状态上报
- 遥操作控制:提供Leader-Follower控制逻辑及外设接入能力
- SLAM导航:提供基础的定位与导航能力
推理与研发层:AI模型运行与数据闭环
这是IB-Robot最核心的创新层,实现了机器学习与机器人控制的真正融合:
- 协议转换枢纽:连接ROS 2环境与LeRobot模型,负责数据双向转换
- 多模型推理服务:支持VLA/SmolVLA/YOLO等模型的容器化部署
- 数据集工具箱:负责Episode录制、MCAP数据导出及LeRobot格式转换
核心技术:tensormsg协议转换枢纽
tensormsg是IB-Robot架构中最关键的技术创新,它解决了机器学习与机器人控制之间的数据格式差异问题。
工作原理
- ROS 2消息 → 张量转换:将ROS 2的连续话题流转化为机器学习所需的张量快照
- 契约驱动:通过合约文件严格定义输入输出映射,确保模型部署的类型安全
- 双向转换:支持从张量到ROS消息的反向转换,实现闭环控制
核心优势
- 零数据丢失:保持原始数据的完整性和精度
- 实时性保证:高频插值平滑,满足机器人控制的实时要求
- 类型安全:通过契约机制避免运行时类型错误
双模控制:ACT vs MoveIt
IB-Robot深度集成ROS 2 Control,并在此基础上实现了两种控制模式:
ACT模式:高频流式位置控制
- 适用场景:端到端模仿学习
- 特点:直接输出关节位置指令,适合需要高频控制的场景
- 实现位置:
src/action_dispatch/中的ACT调度器
MoveIt模式:轨迹规划控制
- 适用场景:基于几何或视觉语言的目标导向任务
- 特点:生成平滑轨迹,考虑碰撞检测和运动约束
- 实现位置:
src/robot_moveit/中的规划器集成
配置驱动:robot_config统一管理
IB-Robot采用"一处定义,全局生效"的配置驱动理念。所有本体规格、控制模式、关节定义均由robot_config包统一管理。
配置示例
# src/robot_config/config/robots/so101_single_arm.yaml robot_name: "so101_single_arm" joints: - name: "joint1" type: "revolute" limits: [-3.14, 3.14] controllers: - name: "joint_trajectory_controller" type: "joint_trajectory" sensors: - name: "camera_top" type: "camera" topic: "/camera/top/image_raw"数据闭环:从采集到训练的全流程
IB-Robot建立了完整的数据生命周期管理:
1. 专家示范采集
- 多源遥操作:支持VR手柄、Xbox控制器、手机IMU等多种输入设备
- 实时录制:通过
dataset_tools包进行Episode录制 - 格式统一:自动转换为LeRobot标准数据集格式
2. 模型训练与优化
- 离线训练:在LeRobot生态中使用采集的数据训练策略模型
- 在线学习:支持部署后的模型微调和优化
- 分布式训练:支持多机协同训练加速
3. 部署与验证
- 仿真验证:在Gazebo仿真环境中验证模型效果
- 实机部署:一键切换到真实机器人运行
- 性能监控:实时监控推理延迟和控制精度
分布式推理部署架构
IB-Robot支持灵活的分布式部署模式,满足不同场景的需求:
单机模式
- 适用场景:开发调试、小型机器人
- 架构特点:所有组件运行在同一台机器上
- 启动命令:
ros2 launch robot_config robot.launch.py
边云协同模式
- 适用场景:复杂任务、资源受限的端侧设备
- 架构特点:预处理在边缘端,推理在云端
- 启动示例:
# 边缘端(机器人) ros2 launch robot_config robot.launch.py execution_mode:=distributed # 云端(推理服务器) ros2 launch inference_service cloud_inference.launch.py device:=cuda
板端推理模式
- 适用场景:BQ3588HM等嵌入式开发板
- 架构特点:本地NPU推理,低延迟响应
- 技术栈:OpenHarmony + RKNN NPU加速
实战示例:让机器人抓取物体
让我们通过一个完整的示例展示IB-Robot的工作流程:
步骤1:环境初始化
# 加载环境 source .shrc_local export ROS_DOMAIN_ID=42 # 启动仿真环境 ros2 launch robot_config robot.launch.py \ robot_config:=so101_single_arm \ use_sim:=true步骤2:数据采集
# 启动录制服务 ros2 launch robot_config robot.launch.py \ robot_config:=so101_single_arm \ control_mode:=teleop \ record:=true \ record_mode:=episodic # 开始录制专家示范 ros2 run dataset_tools record_cli步骤3:模型训练
使用采集的数据在LeRobot中进行策略训练:
from lerobot import train_policy train_policy(config="act_config.yaml", data_dir="collected_data")步骤4:部署推理
# 部署训练好的模型 ros2 launch robot_config robot.launch.py \ robot_config:=so101_single_arm \ control_mode:=model_inference \ policy_path:=/path/to/trained_model.pt平台兼容性:三大运行环境
IB-Robot支持多种运行平台,满足不同场景需求:
| 平台 | 角色定位 | 典型场景 |
|---|---|---|
| Ubuntu 22.04 | 主机/开发机 | Gazebo仿真、数据采集、单机推理 |
| openEuler Embedded | 端侧开发板 | NPU推理、实机控制、录制客户端 |
| OpenHarmony 5.1 | 端侧开发板 | BQ3588HM板端推理、HDC/SSH调试 |
未来展望:具身智能的新篇章
IB-Robot的架构设计为具身智能的发展奠定了坚实基础:
短期规划
- 多模态感知增强:集成更多传感器类型
- 自动化配置验证:完善
validate_config工具 - 在线标定工具:简化传感器外参标定流程
长期愿景
- 通用机器人智能:实现跨平台、跨任务的通用能力
- 自监督学习:减少对专家示范的依赖
- 社会交互能力:让机器人更好地理解人类意图
结语:开启机器人智能新时代
IB-Robot不仅仅是一个技术框架,更是连接机器学习与机器人控制的桥梁。通过创新的架构设计和实用的工程实现,它让研究人员能够专注于算法创新,而不必担心底层的工程细节。
无论你是机器人领域的研究者,还是希望将AI模型部署到真实机器人的开发者,IB-Robot都为你提供了一套完整、可靠的解决方案。现在就开始探索具身智能的无限可能吧!
项目地址:https://gitcode.com/openeuler/IB_Robot使用指南:官方文档快速开始:./scripts/setup.sh && ./scripts/build.sh
【免费下载链接】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),仅供参考