1. 环境准备#
RP1_deploy 提供电机、IMU、推理与相机模块。选择软件前,先确认交付板卡、系统镜像、硬件修订、固件、机器人配置和策略文件。按交付版本确认这些标识的配套关系。
部署环境基线#
| 项目 | 仓库说明 | 适用边界 |
|---|---|---|
| ROS 2 | Humble | 部署仓库的文档基线 |
| Orange Pi 5 Plus | Ubuntu 22.04、内核 5.10 | RPO/Roboto部署文档的平台基线 |
| RDK X5 | Ubuntu 22.04、内核 6.1.83 | RPO/Roboto部署文档的平台基线 |
| 构建 | C++17、colcon、CMake | Python 扩展还需要对应架构的 Python 开发环境与 pybind11 |
| 基础库 | ccache、fmt、spdlog、Eigen3、screen | 按目标包 CMake 和交付镜像准备依赖 |
推理模块构建定义使用 ONNX Runtime 1.21.0,并按 x86_64/aarch64 选择归档;还依赖 yaml-cpp 与 ZLIB。相机模块另外使用 OpenCV。扩展 .so 和依赖归档必须匹配目标CPU架构。
三类环境分别准备#
- 部署板:ROS 2 与驱动工作空间。
- 训练工作站:训练环境中的 Isaac Sim、Isaac Lab 与 Python 环境。
- 灵巧手:独立的 RP Hand SDK及其 Python ABI,不与部署板环境自动合并。
实时内核、实时权限、udev 与总线设置按目标镜像的部署说明配置。Orange Pi/RDK的设置仅用于对应平台;其他主控先确认镜像要求。
配置覆盖#
当前版本提供 rp1_24dof 的24动作配置和 rp1 的28动作配置;28默认策略文件待补,30/42配置暂不可用。查看 实机配置核对 后再选择部署入口。
2. 获取与构建#
在已安装ROS 2 Humble、colcon和项目依赖的目标环境中,按以下顺序获取源码、构建并加载工作空间。
获取固定源码#
在独立的开发目录执行,避免覆盖现有机器人工作空间:
git clone https://github.com/Roboparty/RP1_deploy.git
cd RP1_deploy
git checkout --detach a42d0648ede9ed8e7fe5891a3a6a6a3cf872de04
git rev-parse HEAD首次构建#
从工作空间根目录执行:
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bashinstall/setup.bash 是构建产物,不随源代码提供。首次构建失败时,先解决缺失依赖或编译错误,再加载该文件。
每次打开新的终端后重新加载:
source /opt/ros/humble/setup.bash
source install/setup.bashsource 只影响当前终端。启动脚本内部加载的环境不会传回调用它的终端。
Python 扩展检查#
imu_py、motors_py、robot_py 随工作空间构建。完成构建并加载环境后,检查模块是否可定位:
python3 -c 'import importlib.util; print({name: importlib.util.find_spec(name) is not None for name in ("imu_py", "motors_py", "robot_py")})'3. 连接检查#
先核对目标设备、接口与配置,再结合通信状态检查反馈是否持续更新。
记录目标配置#
| 信息 | 核对位置 |
|---|---|
| 板卡、镜像、内核、CPU 架构 | 实际交付信息和目标系统 |
| IMU 型号、ID、接口类型与接口名 | robot.yaml 的 imu 段 |
| 电机驱动、型号、ID与总线分组 | robot.yaml 的 motors 段 |
| 符号、零位、关节顺序和闭链配置 | robot.yaml 的 robot 段 |
| SDK源码、固件与策略版本 | 各自提交、包版本或文件哈希 |
24动作配置使用IMU接口 can_hipnuc,电机总线为 can1、can2、can0、can3,总线电机数量为 [7,7,5,5]。逐项核对现场接口、ID和分组,并使用该机器的标定值。
不发送控制命令的检查#
在目标设备上查看系统与接口:
uname -m
python3 --version
ip -brief link
ip -details -statistics link show can0最后一条中的 can0 替换为实际接口名。检查接口是否存在、类型、状态与统计信息,并继续核对node ID、速率、线束和反馈协议。
串口路线需要核对实际设备路径及当前用户权限。USB口和 udev 规则不同可能导致设备名称变化。串口速率须在HIPNUC驱动支持范围内。
反馈与初始化#
4. 启动与停止#
推理节点使用机器人配置和策略配置共同启动。启动会构造硬件接口。实机运行前完成 策略部署核对 和交付版本的操作要求。
显式选择机器人和策略#
inference.launch.py 默认选择 rpo/default。启动RP1时,显式传入机器人和策略名。
配置核对完成后,24动作默认配置的入口为:
ros2 launch roboparty_inference inference.launch.py robot:=rp1_24dof policy:=defaultrobot:=rp1 选择28动作配置。使用前补齐其默认 policy.onnx 并完成I/O约定核对。
启动脚本的行为#
tools/start_robot.sh 接受 --robot、--policy,内部构建工作空间,并建立 inference_session 与 joy_session 两个 screen 会话。脚本会启动设备接口及手柄节点;先完成 连接检查。
# 仅适用于已经通过实机前提核对的目标工作空间
./tools/start_robot.sh --robot rp1_24dof --policy default查看已经存在的后台会话:
screen -r inference_session
screen -r joy_session停止软件与硬件停止#
仓库提供以下退出后台组件的命令:
screen -S inference_session -X quit
screen -S joy_session -X quit这些命令用于终止软件会话。硬件急停使用交付版本规定的停止手段。stop_inference 服务停止策略推理,deinit_motors 走驱动去初始化;两者语义不同。服务详情见 ROS 2接口。正式急停、断电与恢复程序以适用硬件资料为准。