跳转至

🕹️ PND Adam Teleoperation

专为 Adam 系列机器人设计的实时动作映射框架,通过高精度动作捕捉设备实现自然流畅的遥操作体验

采用Noitom动捕系统Meta Quest 3S作为数据输入源

📋 支持型号

型号 Noitom动捕 VR头显
Adam SP 待开发
Adam Pro 待开发
Adam U

效果展示

🏗️ 系统架构

系统采用分布式架构设计:

  • 动作输入层:Noitom 动捕系统(Windows平台)或 Meta Quest 3S VR设备
  • 控制核心层:pnd_teleoperation 与 pnd-control 运行于Adam机器人内置NUC
  • 数据链路:基于ROS 2 Humble构建的实时通信框架

teleop arch

⚙️ 环境配置

Adam内置NUC已预装完整运行环境。如需在其他设备部署,请按以下要求配置:

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

💃 动作捕捉配置

动作捕捉

启动Axis Studio软件,完成传感器连接与姿态校准。启用BVH数据广播功能,通过UDP协议将动作数据流发送至目标机器人IP地址。

具体操作流程请参考教学视频

BVH广播配置要点

  • 本机地址:运行Axis软件的计算机IP
  • 目标地址:Adam机器人计算机IP
  • 网络要求:双方设备需处于同一局域网内

Axis广播配置

注意

  • 标定完成后开始遥操作时,请保持双脚位置固定
  • 如需移动位置,请先断开遥操作连接,移动后重新标定

操作前提

  • VR设备与Adam机器人处于同一局域网
  • pnd_teleoperation 系统正常运行
  • 下方Python依赖环境已正确安装
cd ~/Documents/pnd_teleoperation
pip install uv --user
uv sync

操作步骤

  1. 在Meta Quest 3S浏览器中访问 https://192.168.XX.XX:8443 (替换为实际机器人IP)
  2. 点击"Start Controller Tracking"启动追踪
  3. Foxglove界面将显示VR手柄与头显的实时位置

标定姿势要求VR标定姿势

标定流程

  1. 保持标定姿势,长按VR右手柄Meta按钮3秒重置位置
  2. 保持姿势,按下右手柄A键完成标定
  3. Foxglove中的Adam机器人模型开始跟随VR动作
  4. 按下右手柄B键即可断开遥操作连接

🚀 启动遥操作

通过SSH连接机器人(IP地址位于手柄背面,默认密码:pndxyz)

ssh pnd-humanoid@192.168.XX.XX
cd ~/Documents/
git clone https://github.com/pndbotics/pnd_teleoperation.git
cd pnd_teleoperation
./build.sh

sudo su
./run.sh [adam_type] [mocap_driver] [algorithm] # adam_type: adam_sp/adam_u/adam_pro; mocap_driver: noitom/vr; algorithm: pinocchio/mink;

打开一个新的终端:

ssh pnd-humanoid@192.168.XX.XX
cd ~/Documents/pnd_teleoperation
sudo su
./preview.sh

🖥️ Foxglove 可视化

  1. 在PC端安装并启动 Foxglove Studio
  2. 注册登录后点击"Open Connection"
  3. 通过WebSocket连接机器人:ws://localhost:8765(将localhost替换为机器人实际IP)
  4. 进入三维可视化面板,导入下方配置代码并点击"Apply"
  5. 配置成功后即可实时观察机器人动作映射效果

三维面板配置

{
  "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.362406704376102,
    "phi": 78.01200929751727,
    "thetaOffset": -81.68452995867766,
    "targetOffset": [
      -4.304686610834797,
      0.46408895757669916,
      -2.8097074529725844e-16
    ],
    "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,
      "axisScale": 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": {}
}

🤖 实机操作

安全警告

  • 实机操作存在一定风险,请确保机器人周围3米范围内无障碍物
  • 仅在pnd_teleoperation正常运行且预览效果符合预期时,方可接入实机控制
  • 接入数据前确认预览中的关节位置与实际机器人姿态基本一致
  • 遥操作期间禁止切换其他运行模式(如行走、跑步等演示程序)
  • 遇到异常情况立即执行以下紧急操作:
    1. LT+B:进入停止模式
    2. LT+RT:退出控制程序
    3. LB+RB:执行器断电

xbox

各型号实机操作

实机遥操作目前基于adam_demo开发,手柄操作与adam_demo一致。原则上adam_demo功能在teleop_bin上完全兼容(未测试)。

  • 启动teleop_bin sh run.sh
  • 回零(按下 A
  • 站立(按下 X
  • 在站立状态下按下 Right 接入teleoperation数据
  • 在站立状态下按下 Left 断开teleoperation数据

打开新的终端

ssh pnd-humanoid@192.168.XX.XX
cd ~/Documents
wget https://pndwiki.oss-cn-beijing.aliyuncs.com/sdk_adlskjfas412838_sakjfhrjdsaljf_skfj3jskdjfd32-38439/teleop_bin_20250424.tar.gz
tar -zxf teleop_bin_20250424.tar.gz
cd teleop_bin
source /opt/ros/humble/setup.bash
sh run.sh

1.启动 pnd_service_dds

ssh pnd-humanoid@192.168.41.xx
cd ~/Documents/adam_u_deploy/pnd_service_dds
sudo ./run.sh
控制启动成功

✅ 当终端出现 [DDS] Starting publish loop (400 Hz)... 时,表示服务已成功启动。

2.启动 pnd_adam_dds

打开新的终端

ssh pnd-humanoid@192.168.41.xx
cd ~/Documents/adam_u_deploy/pnd_adam_dds
sudo ./run.sh

控制启动成功

✅ 当终端出现 FSM start! 时,表示服务已成功启动。机器人启动后默认进入 Stop 模式。

  • 回零(按下 A)
  • 准备(按下 X)
  • 在准备状态下按下 Right 接入teleoperation数据
  • 在准备状态下按下 Left 断开teleoperation数据

❓ FAQ

当Foxglove页面出现SSL证书警告时,请点击"加载不安全脚本"以正常使用功能。

ssl异常


最后更新:2025-11-27