VR(Pico)
说明: 本文档面向 普罗(Prometheus)实测机器人 + Pico VR 头显/手柄 遥操作方案,结构与 Ti5Robot 文档站「外骨骼 · 使用说明」保持一致,便于现场查阅与培训。
0. 系统概览
Pico 端通过 XRoboToolkit PC Service 上报头显、手柄、身体关节等数据;算力端(Jetson Orin)运行 ROS2 节点,将数据转换为机械臂、头、腰、底盘、灵巧手等控制指令。
Pico (XRoboToolkit)
│ PXREA SDK 回调(JSON)
▼
pico_xr_bridge_node → 话题 pico_xr_data(整帧 JSON)
│
├─ mocap_subscriber_node → 双臂 / 头 / 腰(SocketCAN)
├─ aoyi_control_node → 傲意灵巧手(串口,trigger 映射)
├─ aoyi_control_can_node → 傲意灵巧手(CAN 版,按需)
└─ lanxin_teleop_node → 蓝芯底盘(SDK 控速)
Web 控制台(推荐):浏览器一键启停上述服务,无需开多个终端。
访问方式 |
地址示例 |
|---|---|
IP + 端口 |
|
mDNS 域名 |
|
mDNS 规范使用连字符
waic-pico,不是下划线waic_pico。启动./start_pico_web.sh时会自动发布域名。
1. 启动顺序
1.1 首次部署(只需做一次)
编译 ROS 工作空间:
cd ~/pico遥操_实测_普罗
source /opt/ros/humble/setup.bash
colcon build --symlink-install
source install/setup.bash
(可选)编译 RealSense 视频发送:
cd ~/pico遥操_实测_普罗/OrinVideoSenderStandalone
make realsense
(可选)配置傲意手串口: 编辑 src/aoyi_control/config.txt,填写 /dev/ttyUSB* 与左右手 ID。
1.2 每次联机推荐顺序
方式 A:Web 控制台(推荐)
cd ~/pico遥操_实测_普罗/pico_web
./start_pico_web.sh
浏览器打开终端打印的地址(IP 或 waic-pico.local),在页面上按顺序点击「启动」:
顺序 |
服务卡片 |
说明 |
|---|---|---|
1 |
Pico PC Service |
Pico 与 Orin 通信,必须最先启动 |
2 |
Pico XR 桥接 |
接收 Pico 数据,发布 |
3 |
动捕遥操 |
机械臂 / 头 / 腰控制 |
4 |
傲意手(串口或 CAN) |
灵巧手 trigger 映射,按现场二选一 |
5 |
蓝芯底盘 |
底盘摇杆控速(按需) |
6 |
RealSense 视频发送 |
相机画面 TCP 发到 Pico(可选) |
方式 B:命令行(多终端)
每个终端均先执行:
source /opt/ros/humble/setup.bash
cd ~/pico遥操_实测_普罗 && source install/setup.bash
顺序 |
命令 |
|---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
建议:
先确认 Pico PC Service 与 Pico 已连接,
pico_xr_bridge终端有持续 JSON 输出后,再启动 动捕遥操。动捕节点启动时会初始化 SocketCAN,无 CAN 硬件时可能报错,需按现场接线确认。
视频发送需在 Web 页或
config.env中填写 Pico / PC Service 侧 IP,默认端口 12345。
2. 模式切换
Pico 遥操没有外骨骼的 1F / 3F 档位,由 右手柄按键 控制模式:
操作 |
按键 |
效果 |
|---|---|---|
开启 / 关闭遥操 |
右手 A 键( |
切换「手 / 头 / 腰」整体控制开关;开启时会自动做头腰零位、双臂 |
移动量模式 |
右手 B 键( |
仅在遥操关闭时有效;开启后双臂按 Pico 相对位移做增量 |
退出节点 |
右手 摇杆按下( |
请求关闭 |
调节电机速度 |
左手 A 键( |
仅当右手 A/B 均未按住时生效;每次 +500,超过 9000 后回到 500 |
备注
状态说明:
遥操开启(
body_enabled = true):双臂、头、腰跟随 Pico 姿态;右手摇杆可进入腰折叠微调。遥操关闭 + 移动量模式开启:仅双臂增量运动,头腰不跟随。
两者均关闭:机械臂不下发跟随指令;底盘、傲意手等独立节点仍可按各自逻辑工作。
3. 各部分控制方式
3.1 双臂
遥操条件: 右手 A 键开启遥操,且 Pico 持续上报有效的 Head / 左手柄 / 右手柄 位姿(pose 七元组)。
控制原理:
取头显 + 左右手柄位姿,经
getPiccoPos换算为左右臂目标位姿;IK 求解关节角,经
servoJ下发 CAN;刚开启遥操的第一帧会执行
moveJtoJoint对齐,之后连续伺服。
移动量模式(遥操关闭时):
右手 B 键开启;
首帧采集 Pico 与机器人 TCP 基准;
之后 Pico 偏差超过阈值(位置 8 cm / 角度 40°)时,机器人按固定步进(3 cm / 20°)增量移动。
头部位姿偏移: Web 控制台「动捕遥操」卡片可选 tran_base_head:
选项 |
参数值 |
说明 |
|---|---|---|
默认 |
|
对应 |
备选 |
|
对应 |
3.2 头部
遥操条件: 右手 A 键开启遥操。
控制方式: 读取 Pico Head.pose 四元数,相对开启遥操时的基准角做增量,经 CAN 下发头部三关节(yaw / pitch / roll)。
日常使用中无需单独按键,随遥操开关自动生效。
3.3 腰部
遥操条件: 右手 A 键开启遥操。
常规跟随: 读取 Pico Motion.joints 中配置的腰部关节 SN 对应位姿,相对基准角控制腰电机 1(yaw)与电机 2(pitch)。
腰折叠微调(右手摇杆):
摇杆方向 |
效果 |
|---|---|
右摇杆 左右(|axisX| > 0.75) |
折叠机构 X 方向 ±0.001 m / 帧 |
右摇杆 前后(|axisY| > 0.75) |
折叠机构 Z 方向 ±0.001 m / 帧 |
摇杆推过阈值即持续生效,松开回中后结束本次折叠操作并刷新腰电机 2 基准。
3.4 蓝芯底盘
前置条件: 启动 蓝芯底盘(lanxin_teleop) 节点;底盘 IP 默认 192.168.100.201:9000(可在启动参数中修改)。
控制方式: 订阅 pico_xr_data,读取 左手柄 摇杆(参数 use_left_stick:=true 为默认):
摇杆 |
映射 |
速度范围 |
|---|---|---|
前后(axisY) |
线速度 vx |
±0.2 m/s × |
左右(axisX) |
角速度 wz |
±0.2 rad/s × |
底盘控制与「遥操开关」独立:只要节点在运行且摇杆有输入,即发送
SendTwist。默认speed_factor = 0.8。
命令行参数示例:
ros2 run lanxin_teleop lanxin_teleop_node --ros-args \
-p chassis_ip:=192.168.100.201 \
-p chassis_port:=9000 \
-p speed_factor:=0.8 \
-p use_left_stick:=true
3.5 傲意灵巧手
前置条件: 启动 傲意手(串口) 或 傲意手(CAN) 节点之一;串口版需正确配置 config.txt。
控制方式: 订阅 pico_xr_data,读取 Controller.left/right.trigger(0 ~ 1):
输入 |
映射 |
|---|---|
左扳机 |
左手四指开合(0 → 张开,1 → 握紧) |
右扳机 |
右手四指开合 |
trigger 线性映射到 [0, 62000] 下发 6 路角度指令,第 6 路固定为最大开度,速度 255。
扳机为实时连续映射,无需切换模式。
3.6 RealSense 视频回传
前置条件: 编译 OrinVideoSenderStandalone;Pico 侧 XRoboToolkit 已配置接收视频。
配置:
Web 页填写 Pico / PC Service IP,端口默认 12345;
或编辑
OrinVideoSenderStandalone/config.env中的SERVER_IP/SERVER_PORT。
运行:
cd ~/pico遥操_实测_普罗/OrinVideoSenderStandalone
./run_realsense.sh
Web 控制台可选择 RealSense D435 序列号后一键启动。
4. 当前按键表(Pico 手柄)
4.1 右手柄
按键 |
功能 |
|---|---|
A 键(primary) |
开启 / 关闭遥操(手 + 头 + 腰) |
B 键(secondary) |
遥操关闭时:开启 / 关闭移动量模式 |
摇杆按下(axisClick) |
退出 |
摇杆左右 / 前后 |
遥操开启时:腰折叠 X / Z 微调 |
扳机(trigger) |
傲意右手四指开合(需启动傲意手节点) |
4.2 左手柄
按键 |
功能 |
|---|---|
A 键(primary) |
电机速度档位切换(+500,循环) |
摇杆前后 / 左右 |
蓝芯底盘 vx / wz(需启动底盘节点) |
扳机(trigger) |
傲意左手四指开合(需启动傲意手节点) |
4.3 头显
输入 |
功能 |
|---|---|
Head.pose |
遥操开启时:头部三关节增量跟随 |
Motion.joints(腰关节 SN) |
遥操开启时:腰部 yaw / pitch 跟随 |
5. 目前默认启用的控制项
按当前实测配置,以下功能在对应节点启动后可用:
功能 |
节点 |
默认状态 |
|---|---|---|
双臂跟随 |
|
需右手 A 键开启遥操 |
头部跟随 |
|
同上 |
腰部跟随 + 折叠微调 |
|
同上 |
双臂移动量模式 |
|
需右手 B 键开启 |
傲意灵巧手 |
|
扳机实时映射 |
蓝芯底盘 |
|
左手摇杆实时控速 |
视频回传 |
|
可选 |
6. 常改的配置与文件
文件 / 参数 |
作用 |
|---|---|
|
Web 端口(6898)、工作空间路径、mDNS 名、各服务标签 |
|
傲意手串口设备与左右手 ID |
|
视频接收端 IP / 端口 |
|
头显→臂基座平移偏移 |
|
电机速度上下限(默认 ±500) |
|
蓝芯底盘连接与速度系数 |
ROS 参数示例:
ros2 run mocap_subscriber mocap_subscriber_node --ros-args \
-p tran_base_head_x:=-0.1 -p tran_base_head_y:=0.0 -p tran_base_head_z:=-0.1
ros2 run lanxin_teleop lanxin_teleop_node --ros-args \
-p chassis_ip:=192.168.100.201 -p speed_factor:=0.8
修改 YAML / config.txt / config.env 后重启对应节点即可,通常无需重新编译。
7. 调试与排错
现象 |
处理 |
|---|---|
|
检查 Pico PC Service 是否运行、Pico 与 Orin 网络是否互通 |
遥操开启但臂不动 |
确认 Head / 左右手柄 |
CAN / 串口启动失败 |
检查接线、权限( |
Web 页打不开 |
确认 |
|
优先用 IP;检查 |
底盘无响应 |
确认蓝芯 IP、SDK 控速已开启;调试网口是否可达 |
常用调试命令:
ros2 topic echo /pico_xr_data --no-arr
ros2 topic hz /pico_xr_data
curl -I http://127.0.0.1:6898
8. 一句话速查
你想做什么 |
怎么做 |
|---|---|
启动 Web 控制台 |
|
浏览器进入 |
|
开启手/头/腰遥操 |
Pico 右手 A 键 按一次 |
关闭遥操 |
右手 A 键 再按一次 |
控底盘 |
启动蓝芯节点,左手摇杆 推杆 |
控灵巧手 |
启动傲意手节点,扳机 按压 |
退出动捕节点 |
右手 摇杆按下 |
开机自启 Web |
|
文档依据 pico遥操_实测_普罗 实测代码与 项目说明.md / pico_web/README.md 整理;若代码更新请以仓库内源码为准。