安全要求#
ROBOTO ORIGIN 是高动态双足机器人,实机启动前必须把安全要求放在第一位。
启动前确认事项#
- 已阅读并理解官方安全操作指南、免责声明与安全告知。
- 首次标零、复位、推理测试时,机器人必须使用可靠的承重吊挂或安全绳。
- 电池电压不要低于 50V;低于该值请先充电,不要继续调试。
- 踝部连杆、主要紧固件、限位件和走线没有松动、干涉或磨损。
- 手柄已配对,处于 XInput 模式,X 键可以用于电机使能/失能。
- 现场有人随时准备急停;软件失控时优先物理急停切断主电源。
选择硬件和主控路线#
新用户请优先选择 V2.0 硬件资料。V2.0 是当前推荐版本,相比 V1.0 增加了结构强化、集成单板、腰部限位、销钉标定和背板开关等改进。V1.0 主要用于老用户维护,不建议新复刻项目从 V1.0 开始。
| 主控 | 系统 | 备注 |
|---|---|---|
| RDK X5 | Ubuntu 22.04,kernel 6.1.83 | 可使用官方提供的预装实时内核镜像,适合快速启动。 |
| Orange Pi 5 Plus | Ubuntu 22.04,kernel 5.10 | 需要安装仓库 assets 中提供的实时内核 deb 包。 |
如果只是想最快跑通实机,建议优先走 RDK X5 路线。
准备 RDK X5 或 Orange Pi#
RDK X5#
- 准备 RDK X5、SD 卡、两根 Type-C 线、RDK Studio 和 RoboParty 提供的 RDK X5 系统镜像。
- 按 RDK X5 烧录流程进入刷机模式,在 RDK Studio 中选择正确存储设备并烧录镜像。
- 烧录完成后重启主控,通过 RDK Studio 创建设备连接。
默认用户名和密码通常为:
sunrise调试 ROS2 DDS 和大流量日志时,建议使用以太网。官方文档中常用地址为:
RDK X5: 192.168.127.10
PC: 192.168.127.1如果 SSH 提示 host key 冲突,可在 PC 上清理旧记录:
ssh-keygen -R 192.168.127.10Orange Pi 5 Plus#
Orange Pi 5 Plus 需要 Ubuntu 22.04 和 5.10 实时内核。拉取部署仓库后,在仓库根目录执行:
cd assets
sudo apt install ./*.deb
cd ..安装后重启主控,再继续配置实时权限。
调试时同样推荐使用以太网连接。将 Orange Pi 5 Plus 与调试 PC 接入同一个有线网络,或给二者配置同网段固定 IP;在 Orange Pi 上通过 ip a 查看网口地址,再从 PC 连接:
ssh orangepi@<Orange Pi IP>拉取部署代码#
在主控上安装 Git 后,拉取实机部署仓库,并初始化子模块。
git clone --recursive https://github.com/Roboparty/roboparty_deploy.git
cd roboparty_deploy
git submodule update --init --recursive拉取完成后建议先阅读仓库 README。本文只保留快速上手主流程,具体脚本名称和依赖版本以 roboparty_deploy 仓库 README 为准。安装 ROS2 Humble 后,再安装部署依赖:
sudo apt update
sudo apt install -y ccache libfmt-dev libspdlog-dev libeigen3-dev screen
sudo apt install -y ros-humble-joy
sudo apt install -y python3-yaml python3-numpy配置实时权限:
sudo nano /etc/security/limits.conf在文件末尾加入两行。请把用户名替换成当前主控用户,RDK X5 默认是 sunrise,Orange Pi 常见是 orangepi。
sunrise - rtprio 98
sunrise - memlock unlimited重启后验证:
ulimit -r输出为 98 表示实时优先级配置成功。
配置 CAN、IMU 和手柄#
连接硬件之前,请先完成电机 ID、IMU 波特率和 IMU 频率设置。电机 ID 定义请参考“产品安装手册”和“达妙电机保姆级调试流程文档”,并按达妙上位机或对应硬件厂商上位机文档完成写入;整机走线请参考“走线说明”。
- IMU 默认波特率:921600。
- IMU 默认频率:500Hz。
- 如果改成其他频率,建议保持大于 200Hz。
- 如果改了 IMU 波特率,请同步修改 src/inference/config/robot.yaml。
默认 CAN 映射如下,编号按 USB 转 CAN 插入主控的顺序:
| CAN 接口 | 对应部位 |
|---|---|
| can0 | 左腿 |
| can1 | 右腿 + 腰 |
| can2 | 左臂 |
| can3 | 右臂 |
建议:
- USB 转 CAN 插在 USB 3.0 接口或 USB 3.0 扩展坞上。
- IMU 和手柄插在 USB 2.0 接口。
- 优先使用 udev 规则固定设备映射,避免每次插拔顺序影响 CAN 编号;但只有实际连线与“走线说明”一致时,才能直接使用仓库提供的规则。
如果只是手动调试 CAN,可用:
sudo ip link set can0 up type can bitrate 1000000
sudo ip link set can0 txqueuelen 1000实际使用时请为 can0、can1、can2、can3 都完成配置。
推荐使用仓库内的 udev 规则。RDK X5 使用 99-auto-up-devs-sunrise.rules,Orange Pi 使用 99-auto-up-devs-orangepi.rules。如果实际 USB 口、扩展坞或连线方式与“走线说明”不一致,请先用 udevadm monitor 确认设备对应的 KERNELS,再修改规则文件,不要直接套用默认规则。示例:
# 查看设备插拔事件,用于确认 KERNELS
sudo udevadm monitor
# RDK X5 使用 assets/99-auto-up-devs-sunrise.rules
# Orange Pi 使用 assets/99-auto-up-devs-orangepi.rules
sudo cp assets/99-auto-up-devs-sunrise.rules /etc/udev/rules.d/
sudo udevadm control --reload
sudo udevadm trigger重启后检查 CAN 是否自动拉起:
ip a首次标零#
首次装机、维修、更换电机或零点丢失后,需要重新标零。标零时机器人必须吊挂,姿态要尽量接近官方文档要求的零位。
cd roboparty_deploy
colcon build --symlink-install
source /opt/ros/humble/setup.bash
source install/setup.bash
python3 scripts/set_zero.py- 将当前电机手动摆到零位后,按 Enter 写入零点。
- 当前电机零点已正确时,按空格跳过。
- 标定过程中不要让机器人脱离吊挂。
也可以在软件已启动且电机已初始化时,通过 ROS2 服务写入当前零点:
source /opt/ros/humble/setup.bash
source install/setup.bash
./tools/start_robot.sh
ros2 service call /init_motors std_srvs/srv/Trigger
ros2 service call /set_zeros std_srvs/srv/Trigger首次装机更推荐使用 scripts/set_zero.py,因为它更适合逐个电机人工确认。
启动机器人#
启动前最后检查#
- 机器人仍在吊挂或有安全绳保护。
- 电池电压正常。
- 急停可触达。
- CAN、IMU、手柄都已连接。
- src/inference/config/robot.yaml 中的 motor_zero_offset 与实际标定方式一致。
关于腰部 yaw 的零点偏移:
- 如果是将腰部 yaw 转至限位块处标定,保留默认偏移值。
- 如果是使用打印件固定腰部 yaw 标定,应按部署文档要求把对应偏移改为 0.0。
启动软件#
./tools/start_robot.sh脚本会自动编译工作空间,并启动后台 screen 会话:
screen -r inference_session
screen -r joy_session常用手柄按键#
| 按键 | 功能 |
|---|---|
| X | 电机使能 / 失能 |
| A | 复位关节 |
| B | 开始 / 暂停推理 |
| Y | 切换手柄控制 / cmd_vel 控制 |
| LB | 切换策略模式 |
| RB | 切换运动序列 |
| 右摇杆 | 前后左右移动 |
| LT / RT | 左右转向 |
推荐首次启动顺序:
- 保持吊挂,启动 ./tools/start_robot.sh。
- 查看 screen -r inference_session,确认推理节点无明显错误。
- 按 X 使能电机,确认电机灯和状态正常。
- 按 A 复位关节,确认机器人姿态正常。
- 缓慢降低吊挂,让脚接触地面但仍保留保护。
- 按 B 开始推理,操作者随时准备按 X 或物理急停。
停止后台组件#
screen -S inference_session -X quit
screen -S joy_session -X quit关机前建议#
- 重新接好吊挂或安全绳。
- 按 X 失能电机。
- 确认机器人稳定后再切断主电源。
Python SDK 和 ROS2 服务#
如果你要写脚本控制硬件,先完成编译并 source 环境:
colcon build --symlink-install
source /opt/ros/humble/setup.bash
source install/setup.bash部署仓库提供三个 Python 模块:
| 模块 | 用途 |
|---|---|
| imu_py | 读取 IMU 四元数、角速度、线加速度、温度等。 |
| motors_py | 初始化电机、切换控制模式、发送 MIT/位置/速度控制指令。 |
| robot_py | 统一读取配置文件,控制整机电机和 IMU。 |
常用 ROS2 服务:
ros2 service call /init_motors std_srvs/srv/Trigger
ros2 service call /deinit_motors std_srvs/srv/Trigger
ros2 service call /start_inference std_srvs/srv/Trigger
ros2 service call /stop_inference std_srvs/srv/Trigger
ros2 service call /clear_errors std_srvs/srv/Trigger
ros2 service call /reset_joints std_srvs/srv/Trigger
ros2 service call /refresh_joints std_srvs/srv/Trigger
ros2 service call /read_joints std_srvs/srv/Trigger
ros2 service call /read_imu std_srvs/srv/Trigger应用模块参考#
ROBOTO ORIGIN 除了基础部署和实机启动,还提供了一些可参考的应用与扩展模块。这里主要说明“有这个模块、它大概能做什么、应该去哪看”,具体安装、配置、运行命令和参数请以对应仓库或模块 README 为准。
| 应用方向 | 模块/仓库 | 参考方式 |
|---|---|---|
| 导航与定位 | roboparty_navigation | 用于 RPO 实验中的导航、定位与相关 ROS2 应用模块。需要做移动导航、定位适配时,先读该仓库 README。 |
| XR 遥操作 | roboparty_xr_teleop | 用于 RPO 实验中的 XR 遥操作应用。需要做远程操作、人机交互或 XR 控制链路时,参考该仓库 README。 |
| 策略训练与导出 | roboparty_train | 用于 Isaac Lab / RSL-RL 训练、评估、ONNX 导出和 Sim2Sim 验证。需要训练或替换策略时,从该仓库 README 开始。 |
| 模型与仿真描述 | rpo_description | 提供 URDF/MJCF 等机器人描述文件。需要做仿真、可视化、动力学检查或接入其他仿真工具时参考。 |
| 外观件与工业设计 | rpo_appearance | 提供外观件、外壳设计资料和原型机外观说明。该模块主要用于静态展示和设计参考,不建议直接打印。 |
| 固件与板卡镜像 | roboparty_firmware | 包含 USB2CAN 固件、Orange Pi / RDK 镜像构建系统。需要烧录、维护底层固件或定制系统镜像时参考。 |
| 部署脚本与 SDK 示例 | roboparty_deploy/scripts | 提供标零、硬件控制、Python SDK 等脚本示例。需要基于部署框架写自己的控制脚本时参考。 |
如果只是第一次启动机器人,不需要马上读完这些模块。建议先按本文完成环境、标零和启动;确认机器人能稳定运行后,再根据自己的目标选择对应 README 深入。
阅读列表#
| TODO | 下一步 |
|---|---|
| 复刻或检查硬件版本 | 读 rpo_hardware 的 V2.0 机械和 PCB 目录。 |
| 烧录或维护 USB2CAN | 读 roboparty_firmware/roboto_usb2can。 |
| 构建 RDK X5 / Orange Pi 镜像 | 读 roboparty_firmware 中的 x5-rdk-gen 和 orangepi-build。 |
| 训练自己的策略 | 读 roboparty_train,先安装 Isaac Sim / Isaac Lab。 |
| 查外观件或工业设计资料 | 读 rpo_appearance 和官方知识库里的“工业设计”页面。 |
| 做仿真和模型检查 | 读 rpo_description 的 URDF/MJCF 资料。 |
| 做导航或 XR 遥操作 | 读 roboparty_navigation 和 roboparty_xr_teleop。 |
| 贡献代码或文档 | 在对应子仓库提交 issue/PR;总仓库只处理聚合层问题。 |
常见故障快速定位#
ulimit -r 不是 98#
检查 /etc/security/limits.conf 中用户名是否写错。RDK X5 默认用户通常是 sunrise,Orange Pi 常见用户是 orangepi。改完需要重启。
找不到 CAN 接口#
先检查 USB 转 CAN 是否被系统识别:
dmesg | grep gs_usb
ip link show type can如果使用 udev 规则,检查规则文件是否复制到 /etc/udev/rules.d/,再重载规则并重插设备。
CAN 总线错误或电机无响应#
优先检查:
- CAN_H / CAN_L 是否接反。
- 总线两端 120Ω 终端电阻是否正确。
- 波特率是否为 1Mbps。
- CAN 映射是否和实际插线一致。
- 电机 ID 是否和配置文件一致。
推理启动后机器人姿态异常#
立刻按 X 失能,必要时物理急停。随后检查:
- 零点是否正确。
- motor_zero_offset 是否与标定方式一致。
- screen -r inference_session 是否有错误日志。
- 电池电压和电机错误码是否正常。
- 关节、连杆、走线是否存在机械干涉。
SSH 连接提示 host key 冲突#
如果主控重装过系统,PC 可能保存了旧 host key。本文推荐优先使用以太网调试,RDK X5 以太网连接请清理网口地址;如果确实使用板卡 Wi-Fi 热点连接,再清理热点地址:
# RDK X5 以太网连接
ssh-keygen -R 192.168.127.10
# RDK X5 Wi-Fi 热点连接
ssh-keygen -R 192.168.12.1Github仓库入口列表#
| 目标 | 推荐入口 | 用途 |
|---|---|---|
| 查看统一项目介绍 | RoboParty/ROBOTO ORIGIN | 总仓库,聚合核心子仓库快照和资源指引。 |
| 阅读官方知识库 | ROBOTO ORIGIN 文档 | 安全、装配、走线、标定、部署、SDK、常见问题等文档。 |
| 运行实机部署代码 | Roboparty/roboparty_deploy | ROS2 部署框架、硬件驱动、推理、手柄控制、Python SDK。 |
| 查硬件图纸和 BOM | Roboparty/rpo_hardware | 机械结构、PCB、生产制造资料。 |
| 查固件和镜像 | Roboparty/roboparty_firmware | USB2CAN 固件、Orange Pi/RDK 镜像构建系统。 |
| 查训练流程 | Roboparty/roboparty_train | Isaac Lab、RSL-RL、AMP、BeyondMimic、Parkour、Sim2Sim。 |
| 查机器人描述文件 | Roboparty/rpo_description | URDF/MJCF、模型与仿真描述。 |
| 查外观件与工业设计 | Roboparty/rpo_appearance | RPO 外观件、外壳结构、视觉参考与原型机外观说明。 |
| 查导航与定位应用 | Roboparty/roboparty_navigation | RPO 实验相关导航、定位与应用模块。 |
| 查 XR 遥操作应用 | Roboparty/roboparty_xr_teleop | RPO 实验相关 XR 遥操作应用。 |
ROBOTO ORIGIN 是总仓库和快照聚合仓库,方便一次拉取全部资源。模块级 issue、代码修改和 PR 建议提交到对应子仓库,不要都堆到总仓库。
当前资料中可能仍会出现历史路径标识。产品统一称为 RPO;运行部署仓库是 roboparty_deploy,硬件资料是 rpo_hardware,训练资料是 roboparty_train,机器人描述是 rpo_description。