go1_sft_go2 / deploy /COMMANDS_v2.md
xianglarry's picture
Upload folder using huggingface_hub
0c95a27 verified
|
Raw
History Blame Contribute Delete
5.06 kB

测试命令速查 v2(checkpoint_0617,实测验证版)

06-21 实测定稿:头预下俯 + 开腰 后,当前 checkpoint 能完成"弯腰探入→双臂伸到铝板正上方"。 本文件只放验证过的有效命令(旧版默认 --no-waist 闭环不起手,已废弃)。

⚠️ 执行权限规则(硬约束)

  • 可自动跑:只有模型推理脚本(infer_stage_c_v3 / infer_stage_a_v2 / openloop_verify)。
  • 必须先经用户同意:任何 --live 的复位/调姿/恢复脚本(pose_io --restorehead_pitch_teststaged_restoresmallstep)。
  • 出问题(臂卡料箱等)由用户遥操恢复,不自动跑恢复脚本去"捞"。

0. 环境(每个终端先跑)

ssh agi@172.16.64.220                      # 真机脚本在机器人上跑; 离线脚本任意机器均可
cd <path-to>/go1_sft_go2                   # 仓库根, 下面以 deploy/ 为脚本目录
source "${GO1_WORKSPACE:-/home/agi/workspace}/env.sh"   # 机器人侧 GDK 运行时(真机脚本需要)
export TMPDIR=/data/agi/tmp                 # 机器人临时目录(大模型加载需要)
export GO1_CKPT=${GO1_CKPT:-/data/agi/checkpoint_0617}   # 可选; 不设则默认 <repo>/checkpoint_22000
PY=/data/agi/venvs/go1_torch/bin/python     # 带 torch+gdk 的解释器(机器人上的 venv)
D=deploy                                    # 脚本目录

路径均由 deploy/go1_env.py 解析(GO1_* 环境变量 + 仓库相对默认),见 README.md「配置(路径可移植)」。

1. 不动机器人的检查(可自动跑)

# 离线: pred vs 训练真值, |p0-gt0| 应小
$PY $D/openloop_verify_0617.py 2>/dev/null | grep -E "p0|pred|gt"

# 真机只读: 抓相机+关节→推理, |action[0]-state| 应小(~0.08)
$PY $D/infer_stage_a_v2_0617.py 2>/dev/null | grep -E "iter|action\[0\]-state|suction"

2. 准备起始位姿(⚠️动机器人,需先同意)

# 复位到 init(注意: 此脚本不驱动头关节)
$PY $D/pose_io_0617.py --restore --live --speed 0.4

# 头下俯到 0.50 让头镜头看到料箱(关键! pitch=0 看墙→OOD不起手)
$PY $D/head_pitch_test_0617.py --live --pitch 0.50

# 确认料箱在画面中央(只读,抓三相机帧到 $GO1_OUT_DIR, 默认 deploy/)
$PY $D/grab_headcam_0617.py 2>/dev/null | grep -E "head yaw|cam_head"

3. 闭环模型推理(主命令,可自动跑)

# 验证有效配置: 开腰 + 头冻结在下俯 + slew0.3。会弯腰探入→双臂伸向铝板。
LOG=run_$(date +%H%M%S).log
$PY $D/infer_stage_c_v3_0617.py --live --no-head \
  --max-chunks 30 --exec-frames 30 --max-slew 0.3 --max-time-s 120 > $LOG 2>&1
grep -E "^  chunk|done|release" $LOG | tail -34
  • 从当前状态续跑:同一条命令再跑一次即可(脚本每次重抓当前 state)。
  • 关键参数:**不要加 --no-waist(开腰才起手);保留 --no-head**(冻结头在下俯,保持料箱在视野)。

4. 恢复到 init / 把双臂从料箱取出(⚠️动机器人,需先同意)

# 首选: 一键复位, 实测可把双臂从料箱中带出来、回到 init
$PY $D/pose_io_0617.py --restore                       # 先 dry-run 看计划(不动)
$PY $D/pose_io_0617.py --restore --live --speed 0.4    # 实跑复位(带臂出箱)

# 兜底: 万一一键 restore 被自碰撞避让冻住(rc=0但臂不动) → 逐关节顺序复位
$PY $D/staged_restore_0617.py --live --slew 0.25
# 仍卡停(如先扫肩撞箱) → 由用户遥操把臂抬出, 再复位。

关键事实(实测)

  • 不起手的两个阻塞已解:① 头 pitch=0 严重 OOD(看墙),下俯到 0.50 料箱才入画;② --no-waist 冻死了模型最想动的腰(躯干前倾带动伸手)。两个修掉就起手。
  • 头 pitch 真实极限 ≈ 0.52(脚本 clamp 写的 0.65 过大,发 0.55 报 idx13_head_joint3 out of range)。
  • 吸盘:v3 脚本只记录不下发;且模型自主闭环里 suc 输出一直 ~0、从不触发吸附 → 到抓取位就停、进不到抬出。要真搬:接 EVS08 + 把 cmd[14/15] 接真实吸盘阀(阈值>0.5) + 铝板摆位贴合训练。
  • 取臂出箱/复位:首选 pose_io --restore --live,实测可把双臂从料箱带回 init;个别极深姿态可能被自碰撞避让冻住(rc=0但臂不动),退 staged_restore(逐关节) 或遥操。

当前正确脚本

脚本 用途 动机器人
openloop_verify_0617.py 离线 pred vs gt
infer_stage_a_v2_0617.py 真机只读推理
grab_headcam_0617.py 抓三相机帧
infer_stage_c_v3_0617.py 闭环主脚本(正确IO+100Hz平滑)
pose_io_0617.py 复位 --restore(不动头)
head_pitch_test_0617.py 头下俯到指定 pitch
staged_restore_0617.py 逐关节复位(解自碰撞冻臂)
smallstep_test_0617.py 单关节控制权/跟踪自检