🧪 新教程持續更新中 · 由機械臂到傳感器,跟隨教程從零搭建
跳到主要內容

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 是限速器在「追趕」時的正常輸出,到位後自動停止。