Robotics
Transformers
Safetensors
English
Chinese
vision-language-action
vla
go-1
agibot-world
imitation-learning
dual-arm
suction
Instructions to use EmbodyX/go1_sft_go2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use EmbodyX/go1_sft_go2 with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("EmbodyX/go1_sft_go2", dtype="auto") - Notebooks
- Google Colab
- Kaggle
| # 测试命令速查 v2(checkpoint_0617,实测验证版) | |
| > 06-21 实测定稿:**头预下俯 + 开腰** 后,当前 checkpoint 能完成"弯腰探入→双臂伸到铝板正上方"。 | |
| > 本文件只放验证过的有效命令(旧版默认 `--no-waist` 闭环不起手,已废弃)。 | |
| ## ⚠️ 执行权限规则(硬约束) | |
| - **可自动跑**:只有模型推理脚本(`infer_stage_c_v3` / `infer_stage_a_v2` / `openloop_verify`)。 | |
| - **必须先经用户同意**:任何 `--live` 的复位/调姿/恢复脚本(`pose_io --restore`、`head_pitch_test`、`staged_restore`、`smallstep`)。 | |
| - **出问题(臂卡料箱等)由用户遥操恢复**,不自动跑恢复脚本去"捞"。 | |
| ## 0. 环境(每个终端先跑) | |
| ```bash | |
| 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_env.py) 解析(`GO1_*` 环境变量 + 仓库相对默认),见 [README.md](README.md)「配置(路径可移植)」。 | |
| ## 1. 不动机器人的检查(可自动跑) | |
| ```bash | |
| # 离线: 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. 准备起始位姿(⚠️动机器人,需先同意) | |
| ```bash | |
| # 复位到 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. 闭环模型推理(主命令,可自动跑) | |
| ```bash | |
| # 验证有效配置: 开腰 + 头冻结在下俯 + 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 / 把双臂从料箱取出(⚠️动机器人,需先同意) | |
| ```bash | |
| # 首选: 一键复位, 实测可把双臂从料箱中带出来、回到 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` | 单关节控制权/跟踪自检 | 是 | | |