遥操作
专为 Adam 系列机器人设计的实时动作映射框架,通过高精度动作捕捉设备实现自然流畅的遥操作体验
采用Noitom动捕设备或Meta Quest 3 VR设备作为数据输入源
支持型号
| 型号 | Noitom 动捕设备 | Meta Quest 3 VR设备 |
|---|---|---|
| Adam SP | ✅ | 待开发 |
| Adam Pro | ✅ | ✅ |
| Adam U | ✅ | ✅ |
效果展示
系统架构
系统采用分布式架构设计:
- 动作输入层:Noitom (Windows) 或 Meta Quest 3 (WebVR)。
- 控制核心层:运行于机器人内置 NUC 的
pnd_teleoperation与pnd-control。 - 数据链路:基于 ROS 2 Humble 的实时数据总线。

环境配置
准备工作
- 硬件状态:机器人已完成 开机流程。
- 网络连接:用户计算机与机器人处于同一局域网段。
- 连接NUC:本文后续所有指令均在机器人 NUC 上执行。请先在用户计算机上通过终端连接:
1. 基础依赖安装
更新系统软件包清单并安装必要的开发工具与库:
sudo apt-get update && sudo apt-get install -y \
build-essential \
coinor-libipopt-dev \
gfortran \
liblapack-dev \
pkg-config \
swig \
git \
cmake \
python3 \
python3-pip \
git-lfs \
--install-recommends
为了确保运动控制的性能,需要从源码编译带有 IPOPT 支持的 CasADi 3.6.7:
cd /tmp && \
git clone https://github.com/casadi/casadi.git casadi && \
cd casadi && \
git checkout 3.6.7 && \
mkdir build && \
cd build && \
cmake -DWITH_PYTHON=ON -DWITH_IPOPT=ON -DWITH_OPENMP=ON -DWITH_THREAD=ON .. && \
make -j$(nproc) && \
sudo make install && \
sudo ldconfig
获取 pnd_teleoperation源码并配置 Python 虚拟环境:
cd ~/Documents/
git lfs clone https://github.com/pndbotics/pnd_teleoperation.git
cd ~/Documents/pnd_teleoperation
pip install uv --user
uv sync
启动遥操作
Step 1: 环境初始化
连接NUC后,需先进入目录并完成构建:
Step 2: 运行遥操作程序
使用 spteleop 命令行工具,支持 Tab 键自动补全 指令。
请选择设备类型
安装VR系统依赖 Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
运行遥操作程序
点击展开旧版启动脚本(已弃用,将在若干版本后移除):
ssh pnd-humanoid@192.168.XX.XX # 将XX.XX替换为实际IP地址,位于遥控器手柄背面,输入初始密码:pndxyz
cd ~/Documents/pnd_teleoperation
sudo ./run.sh [adam_type] [mocap_driver] [algorithm] # adam_type: adam_sp/adam_u/adam_pro; mocap_driver: noitom/vr; algorithm: pinocchio/mink;
打开新终端:
Foxglove 可视化
- 在PC端安装并启动 Foxglove Studio
- 注册登录后点击"Open Connection"
- 通过WebSocket连接机器人:
ws://localhost:8765(将localhost替换为机器人实际IP) - 进入三维可视化面板,打开设置:
5. 复制下方代码粘贴到到设置页面,点击"Apply"。配置成功后即可实时观察机器人动作映射效果
点击展开配置代码
{
"layers": {
"845139cb-26bc-40b3-8161-8ab60af4baf5": {
"visible": true,
"frameLocked": true,
"label": "Grid",
"instanceId": "845139cb-26bc-40b3-8161-8ab60af4baf5",
"layerId": "foxglove.Grid",
"size": 10,
"divisions": 10,
"lineWidth": 1,
"color": "#248eff",
"position": [
0,
0,
0
],
"rotation": [
0,
0,
0
],
"order": 1
}
},
"cameraState": {
"perspective": true,
"distance": 8.362406704377788,
"phi": 74.10829292531537,
"thetaOffset": 13.624928863620116,
"targetOffset": [
1.3462285617160472,
3.872395794634993,
-4.022926534191149e-17
],
"target": [
0,
0,
0
],
"targetOrientation": [
0,
0,
0,
1
],
"fovy": 45,
"near": 0.5,
"far": 5000
},
"followMode": "follow-pose",
"followTf": "world",
"scene": {
"meshUpAxis": "z_up",
"transforms": {
"showLabel": false,
"enablePreloading": true,
"axisSize": 0
},
"ignoreColladaUpAxis": true
},
"transforms": {},
"topics": {
"/robot_description": {
"visible": true
}
},
"publish": {
"type": "point",
"poseTopic": "/move_base_simple/goal",
"pointTopic": "/clicked_point",
"poseEstimateTopic": "/initialpose",
"poseEstimateXDeviation": 0.5,
"poseEstimateYDeviation": 0.5,
"poseEstimateThetaDeviation": 0.26179939
},
"imageMode": {}
}
动作捕捉设备配置
请选择设备类型
参考 诺亦腾官方教程 下载Axis Studio软件,穿戴动捕服。
使用网线连接用户计算机和动捕设备。将该网线对应的用户计算机网卡IP设置为与动捕设备同一网段: 10.42.0.xxx,子网掩码 255.255.255.0。

打开Axis Studio软件设置:

在“设备”->“网络”中选择与动捕设备同一网段IP:10.42.0.XXX。

点击绿色图标连接传感器:

启用BVH数据广播,通过UDP协议将动作数据流发送至目标机器人IP地址。配置如下:
- 本机地址:选择用户计算机无线网卡IP:192.168.XX.XX
- 目标地址:输入机器人IP:192.168.XX.XX

操作步骤:
- 参考 Meta Quest 3官方教程 佩戴设备。
- 在Meta Quest 3头显设备中设置网络与机器人处于同一局域网,连接浏览器访问 https://192.168.XX.XX/webvr (替换为实际机器人IP)。使用VR手柄操作,按Trigger buttons键确定,点击地址栏呼出虚拟键盘,详见下方按键说明。
- 点击"Start Controller Tracking"启动追踪,开始标定。此时Foxglove界面将显示VR手柄与头显的实时位置。
标定姿势要求:

标定流程:
- 长按VR右手柄
3秒重置位置。 - 保持标定姿势,按下右手柄A键完成标定。
- Foxglove中的Adam机器人模型开始跟随VR动作。
- 按下右手柄B键即可断开遥操作连接。
注意
- 标定完成后开始遥操作时,请保持双脚位置固定
- 如需移动位置,请先断开遥操作连接,移动后重新标定
WebVR 手柄按键说明:

- Trigger buttons
- Y,X,A and B buttons
- Thumbstick
- Grip buttonsc
- Menu buttons
- Meta buttons
WebVR 手柄与实机手部映射:
- 右手柄A按钮:标定
- 右手柄B按钮:断开遥操作
- 右手柄Meta按钮:重置VR位置
- 右手柄A按钮触摸:右手大拇指旋转
- 左手柄X按钮触摸:左手大拇指旋转
- 右手柄Trigger按钮:右手拇指、食指开合
- 左手柄Trigger按钮:左手拇指、食指开合
- 右手柄Grip按钮:右手中指、无名指、小指开合
- 左手柄Grip按钮:左手中指、无名指、小指开合
实机操作
安全警告
- 实机操作存在一定风险,请确保机器人周围3米范围内无障碍物
- 仅在pnd_teleoperation正常运行且预览效果符合预期时,方可接入实机控制
- 接入数据前确认预览中的关节位置与实际机器人姿态基本一致
- 遥操作期间禁止切换其他运行模式(如行走、跑步等演示程序)
- 遇到异常情况立即执行以下紧急操作:
- LT+B:进入阻尼模式
- LB+RB:执行器断电

各型号实机操作
实机遥操作目前基于adam_demo开发,手柄操作与adam_demo一致。
-
启动adam_demo
打开新的终端
-
零位模式(按下 A)
- 站立模式(按下 X)
- 在站立模式下按下 十字键 Right 接入teleoperation数据
- 在站立模式下按下 十字键 Left 断开teleoperation数据
1.启动 pnd_service_dds
✅ 当终端出现
[DDS] Starting publish loop (400 Hz)...时,表示服务已成功启动。
2.启动 pnd_adam_dds
打开新的终端

✅ 当终端出现
FSM start!时,表示服务已成功启动。机器人启动后默认进入 阻尼模式。
- 零位模式(按下 A)
- 动作模式(按下 X)
- 在动作模式中按下 十字键 Right 接入teleoperation数据
- 在动作模式中按下 十字键 Left 断开teleoperation数据
FAQ
当Foxglove页面出现SSL证书警告时,请点击"加载不安全脚本"以正常使用功能。

最后更新:2026-03-23