Hi3403开发板 + openEuler Embedded 运行IB-Robot + 控制 Lerobot 机械臂跳舞

三、配置 ARM 架构软件源

编辑 ROS 软件源配置文件:

sudo vi /etc/yum.repos.d/ROS.repo

在文件中输入以下内容:

复制代码
[openEulerROS-humble]
name=openEulerROS-humble
baseurl=https://eulermaker.compass-ci.openeuler.openatom.cn/api/ems1/repositories/ROS-SIG-Multi-Version_ros-humble_openEuler-24.03-LTS-TEST4/openEuler%3A24.03-LTS/aarch64/
enabled=1
gpgcheck=0

四、安装 ROS2 Humble 完整软件包

安装过程耗时较长,请确保设备网络稳定、存储空间充足(至少预留 30GB)。

更新系统软件源:

dnf update

执行 ROS2 Humble 完整安装

(跳过冲突包、避免整包过大,跳过含debug和Resource关键词的包)

dnf install "ros-humble-*" --skip-broken

--exclude=ros-humble-generate-parameter-library-example

--exclude="debug "

--exclude="Resource"

五、配置 ROS2 环境变量

编辑用户环境配置文件:

vi ~/.bashrc

在文件末尾追加以下内容,加载 ROS2 环境:

source /opt/ros/humble/setup.bash

保存退出后,执行以下命令使环境变量立即生效:

source ~/.bashrc

六、验证安装

执行以下命令检查 ROS2 环境是否正常加载:

ros2 --version

若输出版本号(如 humble),则说明安装成功。

环境初始化 (First-time Setup)

重要:本步骤仅需在初次克隆项目后运行一次。

0. 系统要求

操作系统: openEuler Embedded 24.03

ROS 版本: ROS 2 Humble

Python: 系统原生 Python 3.11。严禁在 Conda 激活的环境中执行,否则会导致动态库冲突。

1. 执行一键初始化

./scripts/setup.sh

该脚本会自动完成以下重型操作:

子模块同步: 执行 git submodule update --init --recursive,下载核心源码。

系统依赖安装: 通过系统包管理器安装 C++ 编译工具、nlohmann-json 等硬件驱动依赖。

虚拟环境 (venv) 构建: 在根目录创建 venv 文件夹。这能确保 ML 相关依赖(如 PyTorch)与系统 ROS 2 环境隔离,防止破坏系统工具。

ML 栈安装: 自动在 venv 中安装 torch、lerobot 以及适配 ROS 2 Humble 的特定版本 numpy (< 2.0)。

环境脚本注入: 自动生成或更新 .shrc_local,用于一键加载开发环境。

开发工作流

1. 加载环境

每次开启新终端,必须先加载项目环境变量。这会激活 venv 并注入必要的 PYTHONPATH。

source .shrc_local

2. 分配 Domain ID

为了避免与局域网内其他 ROS 2 用户冲突,建议设置唯一的 Domain ID:

export ROS_DOMAIN_ID=<0-232之间的唯一数字>

3. 编译项目

代码修改后,运行统一构建脚本:

./scripts/build.sh

注:该脚本会自动处理 lerobot 的可编辑安装,并清理潜在的构建污染。

  • 编译完成后为防止找不到建议再次执行:

source .shrc_local

第一步:先确认 FFmpeg 头文件到底装在哪里了

运行这条命令,看看 pixfmt.h 具体在哪个目录:

运行

rpm -ql ffmpeg-devel | grep pixfmt.h

可能的输出示例:

/usr/include/ffmpeg/libavutil/pixfmt.h(常见情况)

/usr/include/libavutil/pixfmt.h

第二步:根据头文件位置,给编译添加路径参数

假设第一步查到的路径是 /usr/include/ffmpeg(如果是其他路径,下面命令里对应修改),我们需要强制让编译器找到这个目录。

方法 :通过环境变量指定(推荐,最简单)

在编译前,先设置这两个环境变量:

运行

export CPLUS_INCLUDE_PATH=/usr/include/ffmpeg:$CPLUS_INCLUDE_PATH

export C_INCLUDE_PATH=/usr/include/ffmpeg:$C_INCLUDE_PATH

然后再清理并重新编译:

运行

cd /root/IB_Robot

机械臂校准

  • 使用以下命令启动 venv 环境

source .shrc_local

  • 启动机械臂校准脚本逻辑,包含中位标定和极限位置录入

ros2 run so101_hardware calibrate_arm --arm follower --port /dev/ttyACM0

机器人端配置 (RosClaw & Bridge)

启动机器人本体: 首先启动机器人本体程序(支持仿真或实机):

  • use_sim:=true 为仿真模式,false 为真实硬件模式

    ros2 launch robot_config robot.launch.py robot_config:=so101_single_arm control_mode:=model_inference use_sim:=false with_inference:=false

启动社交桥梁: 本项目已将 RosClaw 作为子模块引入 src/rosclaw。执行以下脚本一键启动:

  • 自动编译子模块并启动 rosbridge_websocket, rosapi 和 discovery 节点

./scripts/start_rosclaw.sh

  • 注意:在 IB_Robot 根目录下执行,将插件安装到 OpenClaw

openclaw plugins install ./src/rosclaw/extensions/openclaw-plugin

相关推荐
VL——MOESR16 小时前
【具身智能】Cosmos Policy论文阅读随笔
论文阅读·人工智能·机器学习·具身智能·cosmospolicy
蝙蝠侠的小蝙蝠17 小时前
【ROS2 工具】Launch
ros2·launch·多节点启动
某林21220 小时前
机器人重启失联:DDS 发现机制与传输层静默故障
人工智能·python·机器人·硬件架构·ros2
deepseek2321 小时前
京东 JoyAI 物理基座模型 PhysBrain 1.5 发布拆解:8B 参数如何通过人类学习范式拿下开源第一,媲美 GPT-6 Astra
机器人·具身智能·ai agent·京东·物理智能
deepseek232 天前
芝诺 Zeno-1 去中心化协作具身基础模型拆解:3B 参数把多机器人协作写进单一策略,CPI 闭环训练与行动条件世界模型如何预警接触失败
具身智能·vla·世界模型·机器人基础模型·多机器人协作
米糕闯编程2 天前
鱼香ros2(二)运行第一个机器人
机器人·ros2
_张一凡3 天前
【论文解析】一篇读懂异步在线 RL:从动作块三分区到梯度截断,SmoothRL 让值梯度只流向真正执行的动作
具身智能
蝙蝠侠的小蝙蝠3 天前
【ROS2 通信机制】话题、服务、动作
ros2·服务·动作·话题·通信接口
智能体与具身智能3 天前
TVA具身智能的概念、架构与应用(19)
人工智能·python·具身智能
_张一凡4 天前
【论文解读】一篇读懂 VLA 模态纠缠:从证据打分到双铰链一致性损失,零推理开销让策略只信该信的传感器
具身智能·vla