IB-Robot (Intelligence Boom Robot): 融合 LeRobot 与 ROS 2 生态的智能具身机器人开发框架
IB-Robot 现已全面支持通过 OpenClaw AI Agent 进行远程社交控制!无论是在 Gazebo 仿真环境 还是 真实 SO-101 机械臂 上,你都可以通过 飞书、QQ、Discord 等软件,用最自然的语言与机器人对话并下达指令。
| 仿真演示 (Simulation) | 真实硬件 (Real Robot) |
|---|---|
![]() |
![]() |
用户指导文档:IB-Robot 使用指南
IB-Robot 是一个智能融合机器人开发框架,旨在打通 Hugging Face LeRobot 机器学习生态与 ROS 2 机器人中间件之间的壁垒,为具身智能研发提供从采集、训练到部署的完整工具链。
| 维度 | LeRobot 生态 | ROS 2 生态 | IB-Robot 方案 |
|---|---|---|---|
| 数据流 | Episode 回合 | Topic 话题 | 契约驱动的双向实时转换 |
| 时间观 | 离散时间步 (Steps) | 连续时间流 (RT) | 自动对齐与高频插值平滑 |
| 控制方式 | 端到端神经网络模型 | 分层规划控制架构 | 双模控制 (ACT vs MoveIt) |
| 部署形态 | Python 脚本 | ROS 2 节点 | 分布式端边协同部署 |
当前主干工作流已支持三类运行平台:
| 平台 | 角色定位 | 当前支持状态 | 典型场景 |
|---|---|---|---|
| Ubuntu 22.04 | 主机 / 开发机 | 完整支持 setup、build、仿真、录制、MoveIt、推理联调 | Gazebo 仿真、数据采集、单机推理、边云联调 |
| openEuler Embedded 24.03 | 端侧开发板 | 支持 setup、clean build 与板端运行 | NPU 推理、实机控制、录制客户端 |
| OpenHarmony 5.1 | 端侧开发板 | 支持板端运行工作流、HDC 调试、最小 inference workspace 构建辅助与 LeRobot patch profile | BQ3588HM 板端推理、HDC/SSH 调试 |
IB-Robot 构建了一个从感知、决策到执行的端到端闭环体系,实现了机器学习世界与机器人控制世界的无缝对接:
- 多模态感知与采集:
- 底层感知: 通过 ROS 2 Driver 统一接入多路相机 (USB/RealSense)、雷达及麦克风。
- 多样化采集: 支持 VR 手柄、Xbox 控制器及手机 IMU 等遥操作设备,为模仿学习提供专家示范数据。
- 协议转换枢纽 (tensormsg):
- 作为架构的枢纽,tensormsg 负责
ros_msg与tensor之间的双向转换,通过合约(Contract)机制保证数据流的类型安全与一致性。
- 作为架构的枢纽,tensormsg 负责
- 推理与研发服务 (Inference Service):
- 支持各类 VLA(视觉-语言-动作)大模型(如 SmolVLA, Pi0.5)以及端到端策略模型(如 ACT, Diffusion Policy)。系统支持 自动检测后端 并根据控制模式按需启动。
- 统一动作执行器 (Action Dispatch):
- 充当机器人的"小脑"。在 ACT 模式下负责 Action Chunking 调度与高频插值;在规划模式下对接 MoveIt 2 执行受限轨迹,并提供统一的
RobotStatus汇报。
- 充当机器人的"小脑"。在 ACT 模式下负责 Action Chunking 调度与高频插值;在规划模式下对接 MoveIt 2 执行受限轨迹,并提供统一的
- 配置驱动中心 (robot_config):
- 实现"规格驱动本体行为"。通过单一 YAML 定义关节、控制器模式及传感器外参,支持一键切换仿真与实机环境。
IB_Robot/ # 主工作空间 (本仓库)
├── .gitmodules # Git 子模块配置
├── README.md # 本文件
├── LICENSE # Apache 2.0 许可证
├── config.json # AI Agent 配置文件 (AtomGit API 令牌等)
│
├── .agents/ # AI Agent 配置目录
│ └── skills/ # AI Agent 技能库 (详见 .agents/skills/README.md)
│
├── libs/ # 外部依赖库
│ ├── lerobot/ # [子模块] LeRobot 训练框架
│ └── atomgit_sdk/ # AtomGit API SDK
│
├── src/ # 核心源码包集合
│ ├── robot_config/ # 系统总控、规格定义与启动入口
│ ├── action_dispatch/ # 统一动作执行器 (双模支持)
│ ├── task_dispatch/ # 任务调度与分发服务
│ ├── tensormsg/ # LeRobot ↔ ROS 2 协议转换枢纽
│ ├── ibrobot_msgs/ # 系统统一接口定义 (Message/Action/Service)
│ ├── dataset_tools/ # 数据集采集与转换工具 (Episode Recorder)
│ ├── robot_teleop/ # 遥操作控制 (Leader Arm/Xbox 手柄)
│ ├── robot_description/ # 统一机器人 URDF/SRDF/MJCF 模型描述
│ ├── lekiwi_description/ # Lekiwi 底盘 URDF/Mesh 模型描述
│ ├── robot_moveit/ # MoveIt 2 运动规划集成
│ ├── robot_navigation/ # 导航功能包
│ ├── inference_service/ # 多模型推理与部署服务
│ ├── so101_hardware/ # SO-101 电机驱动接口
│ ├── lekiwi_hardware/ # Lekiwi 底盘硬件驱动接口
│ ├── hardware_mock/ # 硬件模拟 (Mock) 接口
│ ├── omni_wheel_controller/ # 全向轮控制器插件
│ ├── pymoveit2/ # [子模块] MoveIt2 Python 接口
│ ├── rosclaw/ # [子模块] OpenClaw 社交控制集成
│ ├── sim_models/ # 仿真场景模型 (Gazebo/MuJoCo)
│ ├── model_utils/ # 模型工具库
│ ├── attention_viz/ # 注意力可视化工具
│ ├── voice_asr_service/ # 语音识别服务
│ ├── workflows/ # CI/CD 配置
│ │
│ ├── embodied_agent/ # 具身 AI 任务入口与编排 (task_entry / planner / executor)
│ ├── vlm_task_planner/ # VLM 视觉语言任务规划器 (多模态场景理解 + 技能规划)
│ ├── perception_service/ # 连续场景理解服务 (RGB-D / 多视角感知)
│ ├── skill_library/ # 技能执行层 (skill → primitive → MoveIt)
│ └── safety_guard/ # 显式安全校验层 (白名单 + 工作空间边界)
│
├── docs/ # 深度架构文档与开发指南
│ ├── pictures/ # 架构图与演示 GIF
│ └── videos/ # 演示视频 (源文件)
├── scripts/ # 环境配置与验证工具脚本
└── build/ # 编译输出 (自动创建)
重要:本步骤仅需在初次克隆项目后运行一次。
- 操作系统: 当前支持三平台协同:Ubuntu 主机负责仿真、录制服务或云侧推理;端侧开发板支持 openEuler Embedded 与 OpenHarmony
- ROS 版本: ROS 2 Humble
- Python: >= 3.10,默认使用系统自带 Python。严禁在 Conda 激活的环境中执行,否则会导致动态库冲突。
- 加速器: 支持 NVIDIA GPU、Ascend 310B、Ascend 310P,若未检测到则按 CPU-only 路径运行。
运行 ./scripts/setup.sh。该脚本会自动完成以下重型操作:
- 子模块同步: 执行
git submodule update --init --recursive,下载核心源码。 - 平台与硬件检测: 自动识别 Ubuntu / openEuler Embedded / OpenHarmony,以及 NVIDIA GPU / Ascend 310B / 310P / CPU-only 环境。
- ROS 2 安装 (如未安装): 自动检测并安装 ROS 2 Humble 和 colcon 构建工具。
- 系统依赖安装: 通过系统包管理器安装 C++ 编译工具、
nlohmann-json等硬件驱动依赖。 - 虚拟环境 (venv) 构建: 在根目录创建
venv文件夹。这能确保 ML 相关依赖与系统 ROS 2 环境隔离,同时通过--system-site-packages复用系统rclpy。 - ML 栈安装: 自动在
venv中安装lerobot、硬件依赖以及适配 ROS 2 Humble 的 NumPy 1.26.x。 - 环境验证: 自动验证
rosdepc、colcon、rclpy、lerobot与 NumPy 兼容性。
每次开启新终端后,请在 IB_Robot 项目根目录下加载环境:
cd /path/to/IB_Robot
source .shrc_local注意:
.shrc_local会自动完成venv激活、ROS 2 环境加载和工作区install/setup.sh的 source。每次另起新终端都必须重新执行上述命令,否则ros2命令和 Python 包将不可用。
完成首次构建后,再额外加载工作区环境:
source install/setup.sh为了避免与局域网内其他 ROS 2 用户冲突,建议设置唯一的 Domain ID。每次另起新终端都需要重新设置:
export ROS_DOMAIN_ID=<0-232之间的唯一数字>注意:跨机器运行时,参与的所有机器必须使用相同的
ROS_DOMAIN_ID。
代码修改后,运行统一构建脚本:
./scripts/build.sh --clean注:build.sh 现在只负责加载环境并执行构建;Python 环境、lerobot 可编辑安装与 NumPy 兼容性由 setup.sh 统一负责。
所有运行入口都以 robot_config 包的统一入口 robot.launch.py 为主。下文中的"端侧开发板"统一指可运行 openEuler Embedded 或 OpenHarmony 的板端设备。
开始任一场景前,请先完成环境加载并设置唯一的 ROS_DOMAIN_ID。跨机器运行时,参与的所有机器必须使用相同的 ROS_DOMAIN_ID。
source .shrc_local
export ROS_DOMAIN_ID=<0-232之间的唯一数字>更详细的子模块说明可参考下表:
| 文档 | 简短说明 |
|---|---|
src/inference_service/README.md |
推理服务架构、单机/分布式部署与 NPU/GPU Cloud 节点启动方式 |
src/robot_moveit/README.md |
MoveIt Planning 控制、/cmd_pose 用法与 headless 启动方式 |
src/dataset_tools/README.md |
episodic 录制、record_cli 用法与 bag_to_lerobot 数据集转换流程 |
适合验证 Gazebo、相机、控制器和基础 ROS 2 拓扑,不启动模型推理。
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=model_inference \
use_sim:=true \
with_inference:=false显式切到 model_inference 模式,使用本机推理链路控制仿真机械臂。
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=model_inference \
use_sim:=true该场景默认会启动 MoveIt 与 RViz,并暴露 /cmd_pose 接口用于发送目标位姿。
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=moveit_planning \
use_sim:=true如需在板端或无图形界面的环境中运行,可关闭 RViz:
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=moveit_planning \
use_sim:=true \
moveit_display:=false发送位姿命令控制机械臂移动:
ros2 topic pub /cmd_pose geometry_msgs/Pose "{
position: {x: 0.15, y: 0.0, z: 0.25},
orientation: {x: 0.0, y: 0.0, z: 0.707, w: 0.707}
}" --once查看末端位姿反馈:
ros2 topic echo /robot_status/ee_pose与 Ubuntu 上的 MoveIt 用法保持一致,只是 use_sim 不再开启,适合真实机械臂控制。
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=moveit_planning控制接口仍然是同一套话题:
ros2 topic pub /cmd_pose geometry_msgs/Pose "{
position: {x: 0.15, y: 0.0, z: 0.25},
orientation: {x: 0.0, y: 0.0, z: 0.707, w: 0.707}
}" --once以下说明采用当前分布式部署模式:机器人侧只启动 Edge 代理节点,算力侧单独启动 cloud_inference.launch.py。
适合开发和联调,在一台 Ubuntu 机器上同时运行分布式架构中的两侧节点。
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=model_inference \
execution_mode:=distributed \
use_sim:=true \
cloud_local:=trueUbuntu 主机负责仿真与 Edge 侧预处理/后处理;端侧开发板负责云侧纯推理。两台机器必须位于同一局域网,并设置相同的 ROS_DOMAIN_ID。
Ubuntu 主机(仿真 + Edge)
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=model_inference \
execution_mode:=distributed \
use_sim:=true端侧开发板(NPU Cloud 节点)
ros2 launch inference_service cloud_inference.launch.py \
policy_path:=/path/to/model \
device:=npu如需改为 GPU 服务器,只需将 device:=npu 替换为 device:=cuda。
快速验证分布式链路是否打通:
ros2 node list | grep -E 'act_inference|pure_inference'
ros2 topic list | grep -E 'preprocessed|inference/action'
ros2 topic hz /inference/actionOpenHarmony 板端的完整指南(构建、部署、RKNN 推理、内核、SSH 配置等)详见 README.OpenHarmony.md。
episodic 录制始终由两部分组成:
robot.launch.py启动episode_recorder录制服务端ros2 run dataset_tools record_cli启动交互式录制客户端
record_visualizer:=rerun 只会额外拉起 Rerun 可视化 sidecar,不会替代 record_cli。
不启用 Rerun
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=teleop \
record:=true \
record_mode:=episodic \
use_sim:=false启用 Rerun
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=teleop \
record:=true \
record_mode:=episodic \
record_visualizer:=rerun \
use_sim:=false客户端(同机另一个终端)
ros2 run dataset_tools record_cli启动 record_cli 后输入任务描述即可开始录制,按回车可提前结束当前 episode。
该模式适合把机器人控制与录制操作分离。Ubuntu 主机负责录制服务端,端侧开发板只负责运行 record_cli。两端仍需保持相同的 ROS_DOMAIN_ID。
Ubuntu 录制服务器(可选启用 Rerun)
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=teleop \
record:=true \
record_mode:=episodic \
use_sim:=false如需开启可视化,在服务端命令中增加:
ros2 launch robot_config robot.launch.py \
robot_config:=so101_single_arm \
control_mode:=teleop \
record:=true \
record_mode:=episodic \
record_visualizer:=rerun \
use_sim:=false端侧开发板录制客户端
ros2 run dataset_tools record_cli录制完成后,可将整个 episodic dataset 根目录转换为 LeRobot 数据集格式:
ros2 run dataset_tools bag_to_lerobot \
--bags-dir ~/rosbag/episodes/so101_single_arm \
--robot-config src/robot_config/config/robots/so101_single_arm.yaml \
--out /path/to/output_datasetbag 目录组织、dataset.yaml 元信息和更多转换参数,详见 src/dataset_tools/README.md。
| 参数名 | 说明 | 默认值 |
|---|---|---|
robot_config |
机器人配置名称(对应 config/robots/ 下的 YAML) |
so101_single_arm |
config_path |
配置文件绝对路径(可选,覆盖 robot_config) |
空 |
use_sim |
是否启用仿真模式 | false |
control_mode |
覆盖默认控制模式(model_inference / moveit_planning / teleop) |
从 YAML 读取 |
with_inference |
强制启用/禁用推理服务(空则自动检测) | 空 |
execution_mode |
推理执行模式(monolithic / distributed) |
monolithic |
cloud_local |
在分布式模式下是否同时在本机启动 Cloud 节点 | false |
with_moveit |
强制启用/禁用 MoveIt 核心(空则自动检测) | 空 |
moveit_display |
是否启动 MoveIt RViz 可视化界面 | true |
record |
是否启用录制流水线 | false |
record_mode |
录制模式(continuous / episodic) |
continuous |
record_visualizer |
录制可视化器(none / rerun) |
none |
with_embodied |
基础 robot_config launch 中保留的兼容覆盖;完整具身链路请使用 embodied_bringup |
空 |
auto_start_controllers |
是否在启动后自动激活控制器 | true |
IB-Robot 内置了一条完整的具身 AI 执行链路,以自然语言(或 /voice_command 话题)为入口,经 VLM 视觉语言理解和技能规划后,驱动 MoveIt 2 执行真实动作。该链路在 moveit_planning 控制模式下可用。
/voice_command
→ task_entry_node # 任务入口,优先规则直达
→ vlm_task_planner_node # VLM 视觉语言任务规划(场景理解 + 技能选择)
→ task_executor_node # 技能序列编排
→ skill_executor_node # 技能 → primitive 分解
→ safety_guard_node # 安全校验(白名单 + 工作空间边界)
→ moveit_gateway # MoveIt 2 运动规划执行
ros2 launch embodied_bringup embodied_pipeline.launch.py \
robot_config:=so101_single_arm \
control_mode:=moveit_planning \
use_sim:=true \
moveit_display:=false# 场景理解(纯视觉分析,不触发机械臂移动)
ros2 topic pub --once /voice_command std_msgs/msg/String "{data: '当前摄像头中可以看到什么'}"
# 相对移动
ros2 topic pub --once /voice_command std_msgs/msg/String "{data: '夹爪往前一点'}"
# 回安全位
ros2 topic pub --once /voice_command std_msgs/msg/String "{data: '回原位'}"具身链路默认对接本地 OpenAI-compatible 服务(如 vLLM / Ollama):
embodied:
planner:
mode: vlm_api # rule / vlm_api / hybrid
vlm_api:
provider: openai_compatible
base_url: http://localhost:8000/v1
model: Qwen3.5-9B
api_key_env: "" # 本地服务无需 key更多配置说明见:
src/embodied_agent/README.md— 任务入口与编排src/vlm_task_planner/README.md— VLM 规划器src/perception_service/README.md— 场景感知服务src/skill_library/README.md— 技能执行层src/safety_guard/README.md— 安全校验层
IB-Robot 内置 AI 编程代理技能,帮助 Claude Code、Gemini CLI、OpenCode 等 AI Agent 更好地理解项目架构和开发流程。可用技能详见 .agents/skills/README.md。
config.json 用于存储 AI Agent 所需的配置信息,目前主要用于 AtomGit API 集成:
{
"atomgit": {
"token": "$ATOMGIT_TOKEN",
"owner": "openEuler",
"repo": "IB_Robot",
"baseUrl": "https://api.atomgit.com"
}
}获取 AtomGit Personal Access Token:
- 访问 https://atomgit.com 并登录
- 点击右上角头像 → 个人设置
- 找到「访问令牌」选项
- 点击「新建访问令牌」,勾选
repo和pull_request权限 - 立即复制保存 Token(只显示一次)
设置环境变量:
将以下内容添加到你本地的 ~/.zshrc 或 ~/.bashrc 中:
export ATOMGIT_TOKEN="your_token_here"所有符合 Agent Skills 标准的客户端都会自动扫描 .agents/skills/:
详见 agentskills.io。
IB-Robot 深度集成 OpenClaw AI Agent 框架,配合 RosClaw 桥接器,实现通过 飞书、QQ、Discord 或 Slack 以自然语言对话的方式远程控制机器人。
致谢: 感谢 OpenClaw 团队提供的强大 AI 代理框架,以及 RosClaw 提供的 ROS 2 桥接方案。
机器人端需要安装 WebSocket 桥接驱动并启动发现服务。
- 拉取子模块:
确保已拉取最新的 RosClaw 子模块源码:
git submodule update --init --recursive
- 安装系统依赖:
# 必须安装 rosbridge_suite 以提供 WebSocket 通信能力 sudo apt-get update && sudo apt-get install -y ros-humble-rosbridge-suite
- 启动机器人本体:
首先启动机器人本体程序(支持仿真或实机):
# use_sim:=true 为仿真模式,false 为真实硬件模式 ros2 launch robot_config robot.launch.py robot_config:=so101_single_arm control_mode:=model_inference use_sim:=true with_inference:=false - 启动社交桥梁:
本项目已将 RosClaw 作为子模块引入
src/rosclaw。执行以下脚本一键启动:启动后,系统将在# 自动编译子模块并启动 rosbridge_websocket, rosapi 和 discovery 节点 ./scripts/start_rosclaw.sh9090端口开启 WebSocket 服务。
- OpenClaw 是机器人的"大脑"和"前端",负责连接社交软件并调用 LLM 理解指令。
重要:在使用 OpenClaw 控制机器人之前,必须确保 OpenClaw 侧的
ROS_DOMAIN_ID与机器人端一致。否则 OpenClaw 将无法发现 ROS2 话题和服务,表现为"ros2 CLI 不可用"或无法发送控制指令。需要在会话时告知 OpenClaw 对应的ROS_DOMAIN_ID。
- 安装 OpenClaw:
推荐使用官方提供的快速安装脚本(需要 Node.js 22+):
# 安装 OpenClaw CLI npm install -g openclaw # 执行初始化向导,配置你的 LLM (如 GLM-4/5 或 GPT-4) openclaw onboard
- 集成 RosClaw 插件:
# 在 IB_Robot 根目录下执行,将插件安装到 OpenClaw openclaw plugins install ./src/rosclaw/extensions/openclaw-plugin - 配置机器人连接:
# 设置机器人 WebSocket 地址(替换为实际 IP) openclaw config set plugins.entries.rosclaw.config.rosbridge.url "ws://<机器人IP>:9090"
- 注入 IB-Robot 专用技能:
为了让 AI 准确理解单位(弧度)和视觉话题,请部署技能说明书:
mkdir -p ~/.openclaw/workspace/skills/ibrobot-control cp ./docs/ib_robot_social_skill.md ~/.openclaw/workspace/skills/ibrobot-control/SKILL.md
- 启动 Gateway:
openclaw gateway
连接成功后,你可以在网页端 (http://localhost:18789) 或绑定的飞书、QQ 或 Discord 中输入:
- "查看机器人当前的能力清单" —— 获取所有传感器话题。
- "把机械臂恢复到初始位置" —— AI 会根据技能文档自动将角度转换为弧度。
- "帮我看看桌子上有什么?" —— AI 会调用
/camera/top/image_raw抓拍并分析图像。 - "帮我抓取桌上的瓶子" —— AI 将触发 IB-Robot 的
DispatchInferAI 任务。
如果遇到控制器无法启动或端口占用的问题,请运行清理脚本重置 ROS 2 后台进程:
./scripts/cleanup_ros.sh若出现 RTPS_TRANSPORT_SHM Error,请尝试清理缓存:
sudo rm -rf /dev/shm/fastrtps_*
export ROS_LOCALHOST_ONLY=1若启动仿真后没有出现可视化窗口(如 MuJoCo/Gazebo),请检查 DISPLAY 环境变量。在 Wayland 或某些远程桌面环境下,可能需要手动设置:
export DISPLAY=:1新增 2D 物体检测 + 3D 坐标接地能力,感知服务从"场景描述"升级为"物体级感知":
- 新增
object_parser.py:解析 VLM 返回的物体级 grounding 结果(label、bbox、confidence),支持0-1000归一化坐标系到实际像素坐标的自动缩放 - 新增
grounding_3d.py:将 2D bbox 结合 RGB-D 深度图反投影为相机坐标系 3D 位置(中位深度估计 + 越界过滤) - 新增 ROS 消息类型:
SceneObject.msg:单物体检测结果(label、bbox、3D pose、confidence)SceneObservation.msg:完整场景观测(多物体列表 + 场景摘要 + 风险评估)
- 新增
perception_observationtopic:发布结构化SceneObservation消息,供下游 planner / executor 消费 - prompt_builder 升级:在 VLM prompt 中增加
objects字段请求,要求返回 bbox 坐标;删除重复的append_images定义 - 并发安全增强:会话历史加线程锁(
_history_lock),新增max_concurrent_requests信号量限制 - 最小置信度过滤:新增
min_object_confidence参数,自动过滤低置信度物体
实际 VLM 验证通过(使用 glm-4.5v 模型):
| 物体 | 2D bbox | 3D 位置 (m) | 置信度 |
|---|---|---|---|
| 草莓 | [355, 15, 548, 254] | (0.039, -0.036, 0.196) | 0.85 |
| 白色长方体 | [204, 0, 481, 273] | (0.004, -0.029, 0.165) | 0.85 |
| 黑色小方块 | [179, 373, 266, 443] | (-0.030, 0.046, 0.172) | 0.60 |
| 电线 | [0, 313, 179, 479] | (-0.064, 0.040, 0.162) | 0.60 |
⚠️ glm-4.7不支持图像输入,感知节点请使用glm-4.5v作为视觉模型。
移除了 8 个依赖物理抓取流水线但尚未实现的技能及其全部关联代码(模板、配置、解析器、命令路由):
| 移除的技能 | 说明 |
|---|---|
pick_named_target |
未对接实际抓取 pipeline |
place_named_pose |
同上 |
observe_target_area |
无实际感知闭环 |
approach_named_target |
无目标定位能力 |
hover_named_target |
同上 |
lift_named_target |
同上 |
retreat_from_target |
同上 |
release_at_named_pose |
同上 |
涉及变更的模块:
embodied_agent/command_parser.py:删除硬编码的目标名解析和上述技能的文本路由embodied_common/skill_templates.py:删除 8 个技能的模板定义vlm_task_planner/prompt_builder.py:在 system prompt 中声明抓取/放置类技能已禁用vlm_task_planner/response_parser.py:新增DISABLED_SKILLS集合,planner 若选中被禁用技能则报错robot_config/config/robots/so101_single_arm.yaml:删除entry路由配置、named_targets定义、被移除技能的allowed_skills和skill_templatesrobot_config/robot_config/loader.py:精简配置校验逻辑,移除target_pose_key/place_name_from_request等间接引用robot_config/robot_config/launch_builders/embodied.py:移除 entry 参数注入
新增 vlm_task_planner/gripper_path.py 模块:根据任务描述和命名目标,生成夹爪执行路径(坐标接地 + 可达性检查),参考 Code as Policies + SayCan 模式设计。已集成到 vlm_task_planner_node 的 plan context 中。
- 新增
test_object_parser.py、test_grounding_3d_fixture.py、test_perception_node_observation.py、test_realsense_rgbd_fixture.py - 更新
test_response_parser.py、test_prompt_builder.py、test_command_parser.py适配技能清理 - 全部 16 项测试通过,ruff lint 通过,3 个 ROS 包构建成功
维护者: IB-Robot Team
使用指导: https://pages.openeuler.openatom.cn/embedded/docs/build/html/master/features/embodied_ai/index.html
项目地址: https://atomgit.com/openEuler/IB_Robot
反馈: https://atomgit.com/openEuler/IB_Robot/issues


