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 + 端口

http://192.168.x.x:6898

mDNS 域名

http://waic-pico.local:6898

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 数据,发布 pico_xr_data

3

动捕遥操

机械臂 / 头 / 腰控制

4

傲意手(串口或 CAN)

灵巧手 trigger 映射,按现场二选一

5

蓝芯底盘

底盘摇杆控速(按需)

6

RealSense 视频发送

相机画面 TCP 发到 Pico(可选)

方式 B:命令行(多终端)

每个终端均先执行:

source /opt/ros/humble/setup.bash
cd ~/pico遥操_实测_普罗 && source install/setup.bash

顺序

命令

1

cd /opt/apps/roboticsservice && bash runService.sh

2

ros2 run pico_xr_bridge pico_xr_bridge_node

3

ros2 run mocap_subscriber mocap_subscriber_node

4

ros2 run aoyi_control aoyi_control_node

5

ros2 run lanxin_teleop lanxin_teleop_node

6

cd OrinVideoSenderStandalone && ./run_realsense.sh

建议:

  • 先确认 Pico PC Service 与 Pico 已连接,pico_xr_bridge 终端有持续 JSON 输出后,再启动 动捕遥操

  • 动捕节点启动时会初始化 SocketCAN,无 CAN 硬件时可能报错,需按现场接线确认。

  • 视频发送需在 Web 页或 config.env 中填写 Pico / PC Service 侧 IP,默认端口 12345


2. 模式切换

Pico 遥操没有外骨骼的 1F / 3F 档位,由 右手柄按键 控制模式:

操作

按键

效果

开启 / 关闭遥操

右手 A 键primaryButton

切换「手 / 头 / 腰」整体控制开关;开启时会自动做头腰零位、双臂 moveJ 对齐

移动量模式

右手 B 键secondaryButton

仅在遥操关闭时有效;开启后双臂按 Pico 相对位移做增量 moveL(阈值 + 步进)

退出节点

右手 摇杆按下axisClick

请求关闭 mocap_subscriber_node

调节电机速度

左手 A 键primaryButton

仅当右手 A/B 均未按住时生效;每次 +500,超过 9000 后回到 500

备注

状态说明:

  • 遥操开启body_enabled = true):双臂、头、腰跟随 Pico 姿态;右手摇杆可进入腰折叠微调。

  • 遥操关闭 + 移动量模式开启:仅双臂增量运动,头腰不跟随。

  • 两者均关闭:机械臂不下发跟随指令;底盘、傲意手等独立节点仍可按各自逻辑工作。


3. 各部分控制方式

3.1 双臂

遥操条件: 右手 A 键开启遥操,且 Pico 持续上报有效的 Head / 左手柄 / 右手柄 位姿(pose 七元组)。

控制原理:

  1. 取头显 + 左右手柄位姿,经 getPiccoPos 换算为左右臂目标位姿;

  2. IK 求解关节角,经 servoJ 下发 CAN;

  3. 刚开启遥操的第一帧会执行 moveJtoJoint 对齐,之后连续伺服。

移动量模式(遥操关闭时):

  • 右手 B 键开启;

  • 首帧采集 Pico 与机器人 TCP 基准;

  • 之后 Pico 偏差超过阈值(位置 8 cm / 角度 40°)时,机器人按固定步进(3 cm / 20°)增量移动。

头部位姿偏移: Web 控制台「动捕遥操」卡片可选 tran_base_head

选项

参数值

说明

默认

(-0.1, 0, 0)

对应 -100 mm, 0, 0

备选

(-0.1, 0, -0.1)

对应 -100 mm, 0, -100 mm


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 × speed_factor

左右(axisX)

角速度 wz

±0.2 rad/s × speed_factor

底盘控制与「遥操开关」独立:只要节点在运行且摇杆有输入,即发送 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)

退出 mocap_subscriber_node

摇杆左右 / 前后

遥操开启时:腰折叠 X / Z 微调

扳机(trigger)

傲意右手四指开合(需启动傲意手节点)

4.2 左手柄

按键

功能

A 键(primary)

电机速度档位切换(+500,循环)

摇杆前后 / 左右

蓝芯底盘 vx / wz(需启动底盘节点)

扳机(trigger)

傲意左手四指开合(需启动傲意手节点)

4.3 头显

输入

功能

Head.pose

遥操开启时:头部三关节增量跟随

Motion.joints(腰关节 SN)

遥操开启时:腰部 yaw / pitch 跟随


5. 目前默认启用的控制项

按当前实测配置,以下功能在对应节点启动后可用:

功能

节点

默认状态

双臂跟随

mocap_subscriber

需右手 A 键开启遥操

头部跟随

mocap_subscriber

同上

腰部跟随 + 折叠微调

mocap_subscriber

同上

双臂移动量模式

mocap_subscriber

需右手 B 键开启

傲意灵巧手

aoyi_control / aoyi_control_can

扳机实时映射

蓝芯底盘

lanxin_teleop

左手摇杆实时控速

视频回传

OrinVideoSenderStandalone

可选


6. 常改的配置与文件

文件 / 参数

作用

pico_web/config.yaml

Web 端口(6898)、工作空间路径、mDNS 名、各服务标签

src/aoyi_control/config.txt

傲意手串口设备与左右手 ID

OrinVideoSenderStandalone/config.env

视频接收端 IP / 端口

mocap_subscriber 参数 tran_base_head_*

头显→臂基座平移偏移

mocap_subscriber 参数 motor_speed_pos/neg

电机速度上下限(默认 ±500)

lanxin_teleop 参数 chassis_ip/port/speed_factor

蓝芯底盘连接与速度系数

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_xr_data 无数据

检查 Pico PC Service 是否运行、Pico 与 Orin 网络是否互通

遥操开启但臂不动

确认 Head / 左右手柄 pose 有效:ros2 topic echo /pico_xr_data --no-arr

CAN / 串口启动失败

检查接线、权限(sudo chmod 666 /dev/ttyUSB*)、SocketCAN 是否 up

Web 页打不开

确认 ./start_pico_web.sh 在跑;地址带 :6898;手机/电脑与 Orin 同 WiFi

waic-pico.local 无法解析

优先用 IP;检查 avahi-daemon;运行 sudo bash pico_web/install_autostart.sh

底盘无响应

确认蓝芯 IP、SDK 控速已开启;调试网口是否可达 192.168.100.201

常用调试命令:

ros2 topic echo /pico_xr_data --no-arr
ros2 topic hz /pico_xr_data
curl -I http://127.0.0.1:6898

8. 一句话速查

你想做什么

怎么做

启动 Web 控制台

cd ~/pico遥操_实测_普罗/pico_web && ./start_pico_web.sh

浏览器进入

http://<WiFi-IP>:6898http://waic-pico.local:6898

开启手/头/腰遥操

Pico 右手 A 键 按一次

关闭遥操

右手 A 键 再按一次

控底盘

启动蓝芯节点,左手摇杆 推杆

控灵巧手

启动傲意手节点,扳机 按压

退出动捕节点

右手 摇杆按下

开机自启 Web

sudo bash pico_web/install_autostart.sh


文档依据 pico遥操_实测_普罗 实测代码与 项目说明.md / pico_web/README.md 整理;若代码更新请以仓库内源码为准。