文档更新日志

记录此规范的更新时间和内容,方便他人了解文档内容变更详情

版本号

更新日期

更新人

更新说明

V0.0.1

2026年2月27日

@倪铭泽

创建文档,填写信息

V0.0.2

2026年3月27

@倪铭泽

适配最新遥操作软件

一、简介

介绍遥操作系统功能、适用场景

通过遥操作系统实现人型机器人实时演示及动作采集录制。系统能够精准控制机器人动作,并同步传输视频与数据,完整记录操作过程,为后续训练提供高质量样本支持。该方案操作直观、稳定可靠,有效提升机器人性能和应用效果,为智能化开发和产品优化提供坚实基础。

二、软硬件组成

一、硬件设备与配置要求

详细介绍遥操作系统所涵盖的各类硬件设备,以及每类设备所需满足的配置标准,确保系统稳定运行。

二、机器人软件版本信息

  • 嵌入式系统版本:v2.4.4_20251023_release

  • 中间件版本:1.2.0

2.1 物料清单与连接方式

暂时无法在飞书文档外展示此内容

路由器WAN口可连接外部网络,LAN口可有线也可WIFI连接①调试电脑②PICO4头显③机器人

路由器WIFI名称:ZJROBOT 密码:naviai@2024

2.2 机器人使用说明

  • 硬件状态:机器人开机正常上使能(双臂和腰回到零位,刚性状态)

  • 网络连接:①调试电脑②PICO4头显③机器人处于同一局域网(即有线/WIFI连路由器ZJROBOT,机器人自动连接)

  • 进入PICO:后续所有指令均运行在机器人NUC,通过用户计算机终端连接

任意主机网线远程连接命令

登录密码

PICO

ssh nav01@192.168.1.100

空格

ORIN

ssh naviai@192.168.1.101

naviai@2024

机器人禁止边充电边使用 操作人应在机器人1.5m范围外操作

2.3 头显说明

左手柄

右手柄

侧方键

手臂遥操作控制

手臂遥操作控制

前端键

灵巧手手势切换

灵巧手手势切换

Y键/A键

灵巧手手势切换

遥操作扳机锁定 / 解锁键

X键/B键

数据采集(短按开始和结束,长按1.5秒取消采集)

灵巧手手势切换

home键

长按1.5秒回到指定位置

/

摇杆

底盘控制键

/

菜单建(橙色/紫色)

长按校正头显坐标系

长按校正头显坐标系

三、机器人PICO控制器端遥操作软件启动

介绍遥操作系统使用时的启动步骤

ssh nav01@192.168.1.100
./start_teleop.sh 

相关节点日志在/home/nav01/logs路径下

四、PICO4头显开启步骤

1. 佩戴头显,确保操作页面处于正前方视野范围内若有线连接需关闭Wifi,无线连接需连ZJROBOT

#若操作页面不在正前方,可在打开页面的前提下长按3s功能键进行重定位(页面在正前方)

2、Pico头显示内打开资源库,点击XRobotoolkit会自动弹出IP选择框,点击选

3.此时左上角Status为绿色的working。按下手柄A键,右下角Log显示Send:true,此时按下前扳机,灵巧手可以被控制

#Head Controller Switch w/A Button 三个框已自动打√

#A键锁定:按下A,机器人会解锁,Send框自动打√,此时机器人可控制;再按下A,机器人会锁定,Send框自动取消打√,此时机器人不可控制

#手势常常用来判断是否锁定,因为手势切换比手臂动更安全

4. 为保障操作安全,在摘下头显前,需按下手柄A键,确认系统日志显示“False”,即遥操按键已锁定,灵巧手无法被前扳机控制。点击界面最下方的箭头按钮,将应用程序最小化。

#前扳机键既是确认键也是切换手势键 若不缩小容易在用前扳机键切换手势时误触其他选择

5. 头显摘下悬挂于颈部区域。待准备好相关物料后,按下A键解锁遥操扳机,即可开始遥操作业。

6.结束采集后,先确认锁定,再将头显中遥操作程序×掉 / 直接将头显的网线给拔掉

五、补充操作

5.1 保护模式

机器人在运动过程中因关节超限、加速度超限等情况会进入保护模式(机器人手臂可小范围内推动)

当出现该情况时:整机重启 c掉遥操作终端,调用以下代码解锁后重启遥操:

rosservice call /zj_humanoid/upperlimb/unlock

5.2 示教模式

示教模式需c掉遥操作终端,示教结束后别忘记exit

ssh nav01@192.168.1.100
rosservice call /zj_humanoid/upperlimb/teach_mode/enter "arm_type: 3"
#3:左右手可动 11:左右手+腰可动
ssh nav01@192.168.1.100
rosservice call /zj_humanoid/upperlimb/teach_mode/exit "arm_type: 3"
#进入和退出的
#若无法退出或手臂锁死,则限位;将机器人示教至合适的位置再退出

5.3 灵巧手控制

ssh nav01@192.168.1.100
rosservice call /zj_humanoid/hand/joint_switch/left "q: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]"
rosservice call /zj_humanoid/hand/joint_switch/right "q: [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]"
left左手,right右手
前两个参数对应大拇指的虎口和内外,后四个参数对应食指,中指,无名指,小拇指的内外
一般先估个粗略的值,然后再0.1 0.1增加

将其改在对应的位置:#change this gripper #change this Y/B

5.4 修改手势/home位置

/home/nav01/tele-workspace/pico4-delivery/install/share/picoxr/config/config.yaml

# v1.0.5

# 位置控制比例系数(平移缩放),用于决定手柄真实位移映射到机械臂末端对应指令的放大倍率
scale: 1.0
# 是否启用底盘控制(允许通过右摇杆控制机器人底盘移动)
enable_chassis_control: false
# 是否开启左摇杆控制腰部升降(若为false,则通过按住控制器侧键并借助头显上下位移来控制)
use_joystick_for_waist: true 

# 手柄按键映射的末端夹爪(或灵巧手)目标手势位姿库
VR_Controller_Hand_Target_Array:

  # 左侧手势数据,每行作为一个预设手势项,分别代表不同自由度的关节配置状态
  Left:
    - [-0.6, 0.9, 0.0, 0.0, 0.0, 0.0]
    - [-0.2, 0.9, 0.4, 0.4, 0.4, 0.4]
    - [-0.2, 0.9, 0.0, 1, 1, 1]
    - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
    - [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]
    - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]

  # 右手手势数据,其数组对应的元素序列和内容应当与与Left侧对应
  Right:
    - [-0.6, 0.9, 0.0, 0.0, 0.0, 0.0]
    - [-0.2, 0.9, 0.4, 0.4, 0.4, 0.4]
    - [-0.2, 0.9, 0.0, 1, 1, 1]
    - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
    - [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]
    - [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]

# 针对不同型号机器人的适配参数配置
Robot_Configs:
  # wa2型号机器人专属配置
  wa2:
    Joint_Sequence:
      # 目标关节控制角度序列(主要用于一键控制服务、进入安全MPC锁定状态或初始化预设姿态等)
      states: [-0.0, 0.0, -0.0, 0.3,
              0.29357756567605975, -0.2565463096880194, 0.4388862966970919, -0.012283830869819212, -1.7942942616221447, 0.054516240611519606, 0.19590019719467675, -0.3394041750881556,
              -0.28875990713004285, -0.25273226297456858, -0.4874104246891875, 0.012820389775792137, -1.8047115494110133, -0.3882169923872425, 0.14890607506735665, 0.021406140062643516,
              0.0, 0.30]

      # 锁定服务(waist_lock_setting / MPC mode)生效的受控关节索引白名单
      lock_index: []
      # 此状态下一键控制时,是否伴随开启颈部随动
      neck_track: false

  # wa1型号机器人专属配置
  wa1:
    Joint_Sequence:
      states: [0.005, 0, 0.2, #腰的参数,最后一个参数越大越弯
               0.8372898805373552, 0.48739844046394865, 1.0064831724594114, -1.9621076299290736, 0.0855913366558525, -0.08149403683681626, -0.017830984631365197,
               0.710592651312254, -0.5874068000821353, -0.8610905518617074, -1.7238441546598098, -0.0874369073426351, -0.17400264456939274, 4.6275721219314105e-06, 
               0.0, 0.5] #头的参数,最后一个参数越大越低,最大0.61

      lock_index: [] #按home后是否锁腰
      neck_track: false

  # i2型号机器人专属配置
  i2:
    Joint_Sequence:
      states: [0.026053705669255578, 0.2734200988243174, 0.06084391153763136, -0.05992687862235471, 0.3206978673915728, -0.25319980378184265, -0.22264952187841497,
       0.2650071727066461, -0.1573528773860744, 0.12434832107828697, -0.701931771574391, -0.14511698341721058, 0.22358132505465925, -0.07466907989114004, 0, 0]

      lock_index: []
      neck_track: false

  # jccp型号机器人专属配置
  jccp:
    Joint_Sequence:
      states: [0.026053705669255578, 0.2734200988243174, 0.06084391153763136, -0.05992687862235471, 0.3206978673915728, -0.25319980378184265, -0.22264952187841497,
       0.2650071727066461, -0.1573528773860744, 0.12434832107828697, -0.701931771574391, -0.14511698341721058, 0.22358132505465925, -0.07466907989114004, 0, 0]

      lock_index: []
      neck_track: false

# VR手柄按键与夹爪手势切换的循环控制规则(指向上方VR_Controller_Hand_Target_Array的数组索引)
Gesture_Cycling:
  # 左手Y键循环激活的手势索引
  left_y_gestures: [0, 1, 2]
  # 左手扳机键循环激活的手势索引
  left_gripper_gestures: [0, 1]
  # 右手B键循环激活的手势索引
  right_b_gestures: [0, 1, 2]
  # 右手扳机键循环激活的手势索引
  right_gripper_gestures: [0, 1]

  

示教到期望位置后,查看当前机器人各关节状态:

rostopic echo /zj_humanoid/upperlimb/joint_sta

节当前的值,找到对应关节的值,填入配置文件Joint_Sequencestates需一一对应!

  - Pitch_Y_B
  - Pitch_Y_M
  - Waist_Z
  - Waist_Y  # 以上四个为腰部关节 对应配置文件里面的前四个
  - Shoulder_Y_L
  - Shoulder_X_L
  - Shoulder_Z_L
  - Elbow_L
  - Wrist_Z_L
  - Wrist_Y_L
  - Wrist_X_L # 左臂八个关节
  - Chest_Z_R
  - Shoulder_Y_R
  - Shoulder_X_R
  - Shoulder_Z_R
  - Elbow_R
  - Wrist_Z_R
  - Wrist_Y_R
  - Wrist_X_R #右臂八个关节
  - Neck_Z # 脖子两个关节
  - Neck_Y

无需重启遥操作,调用服务使配置生效

rosservice call /reload_gestures "{}"

七、常见问题

机器人开机未上使能或使用过程中拍了急停

1.关闭遥操作启动脚本

2.检查急停是否松开,再执行以下命令:

sudo systemctl restart sdk_autostart.service --no-block
#上使能后
sudo systemctl restart zj_humanoid.service

2、若遥操作过程中出现机器人运动不跟随人手的情况,请检查操作人员的朝向是否与首次佩戴头显时的朝向大致一致。可佩戴头显,长按左手手柄橙色按钮三秒进行重定位,完成后头显内的界面将重新显示在操作人员面前。

1)安全距离,操作人尽量站在机器人半径一米的圆形范围外;运行过程中,禁止非操作人员进入机器人运动区域;操作人员需时刻关注设备运行状态,不得擅自离岗;

2)操作一般两个人:一人负责遥操作数据采集;一人负责控制急停、现场环境恢复以及平台侧数据回传情况核查,若出现碰撞、手臂形态扭曲等遥操无法挽回的情况,及时按下急停

3)非遥操作状态下,需确保遥操扳机(右手扳机“A”键)处于锁定状态后,方可摘下头显,以避免误操作。

判断系统运行状态的方式如下:

① 手势切换:尝试切换机器人手势,若手势能够正常切换,则表明系统仍处于运行状态,未退出。

② 话题验证:通过以下步骤查看头显数据传输状态:

# 方法二:通过主机终端查看数据传输状态
docker exec -it pico-ubuntu-noetic bash
cd root/workspace/pico4-delivery/
source install/setup.bash
rostopic echo /xr_pose

# 若观测到数据处于持续刷新状态,按下A键可锁定数据刷新

4)遥操过程中尽量不要使手臂打直,使手臂以拟人弯曲的形态进行抓取任务。

5)遥操作过程中需关注机器人和头显电量,当电量低于20%时,应退

用遥操作系统时,应有熟悉相应的操作规范,并指定安全员随时准备按下机器人急停按钮。

2.画面校准:遥操作前,应长按标定按键进行画面校准。

3.平稳操作:在使用过程中,应缓慢移动VR手柄,保证手柄处在头显的视觉识别范围内,避免突发或剧烈运动。

4.头显检查:操作前,需检查头显与机器人网络是否正确连接,头显与手柄电量是否高于20%。

5.异常情况处理:若机器人出现不跟手、卡顿等情况,应停止遥操作,禁止挥舞手柄以防机器人发生异常突变。

6.用户应自行确保机器人不会发生与人员或环境的非期望碰撞。