🧪 新教程持续更新中 · 从机械臂到传感器,跟着教程从零搭建
跳到主要内容

04 · 键盘遥操 ​

用键盘"点动"关节来手动控制真机或仿真臂——不需要主动臂时的最快控制方式,也是录制演示数据的手段之一。

前置:仿真部分只要完成 01;真机部分还需完成 03。 命令里的 COM172/juxi_so101 为示例——端口按 03 章自查后替换,id 用你标定时起的名字。

命令 ​

bash
export UV_CACHE_DIR='C:\Users\admin\AppData\Local\Temp\uv-cache'

# 真机从动臂
uv run --frozen --with mujoco python examples/so101_mujoco/teleoperate.py \
    --robot.type=so101_follower --robot.port=COM172 --robot.id=juxi_so101 \
    --robot.use_degrees=false --robot.max_relative_target=5 \
    --teleop.type=so101_keyboard --teleop.rate=150

# 仿真从动臂(MuJoCo 窗口自动打开)
uv run --frozen --with mujoco python examples/so101_mujoco/teleoperate.py \
    --teleop.rate=150

(teleoperate.py 默认就是 --robot.type=so101_mujoco --teleop.type=so101_keyboard。)

按键(按住生效,全局监听——窗口聚焦在哪里都行) ​

按键动作按键动作
w / sshoulder_lift 上 / 下a / zshoulder_pan 左 / 右
e / delbow_flex 伸 / 屈t / gwrist_flex + / −
y / hwrist_roll + / −u / j夹爪 张开 / 闭合

按键是刻意避开录制控制键(n/r/q、方向键、Esc)选的,这样遥操和录制可以同时跑。

关键参数 ​

参数作用建议值
--teleop.rate按住键时目标速度(单位/秒)默认 60 偏慢;实机手感 150 比较合适
--robot.max_relative_target每个控制周期最多让关节移动多少单位(安全限速)真机 5(60Hz 遥操)/ 10(30Hz 录制)
--robot.use_degrees=false用行程比例制(−100 到 100)而非角度制真机必加,否则单位对不上(仿真默认一致)

行为说明 ​

  • 遥操期间不要打字:键盘监听是全局且不吞键的——在电脑上任何窗口敲到映射键 (w a s z e d t g y h u j,包括聊天框里的拼音)都会同时驱动手臂。用主动臂模式没有这个问题。
  • 连接瞬间手臂会移动:真机从动臂先上扭矩(变硬),然后朝"中点姿态"移动(按下键前的目标); 仿真臂直接朝中点位姿收敛。保持手边留空间。
  • 退出:对该终端 Ctrl-C(或按 Esc,键盘监听会断开并干净退出)。退出后真机会失扭矩变软, 手扶一下——这是正常行为。
  • 启动日志里成串的 clamped to be safe WARNING 是限速器在"追赶"时的正常输出,到位后自动停止。