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
go1_sft_go2 — G2 双臂吸盘搬铝板 VLA (GO-1 / AgiBot-World)
GO-1 架构的 Vision-Language-Action 策略,用于智元 G2 双臂人形在料箱中用吸盘抓取铝板并抬出。本仓库含一个 SFT checkpoint(checkpoint_22000/)+ G2 真机部署/测试代码(deploy/)。
仓库结构
go1_sft_go2/
├── README.md # 本卡片
├── .gitattributes # LFS: *.safetensors/*.model/*.npy/...
├── .gitignore
├── checkpoint_22000/ # ★ 模型 (step 22000, 推理必需文件)
│ ├── model-0000{1,2}-of-00002.safetensors # 权重 ~5.6GB (LFS)
│ ├── model.safetensors.index.json
│ ├── config.json
│ ├── dataset_stats.json # 归一化必需
│ └── added_tokens / special_tokens_map / tokenizer_config / tokenizer.model / tokenization_internlm2.py
└── deploy/ # G2 真机部署+测试代码 (入口 INDEX.md / COMMANDS_v2.md)
└── go1_env.py # 路径配置: GO1_* 环境变量 + 仓库相对默认值
加载时 from_pretrained 指向 **checkpoint_22000/**。
模型概览
- 架构:
go1(model_type);InternLM2 主干(hidden 2048)+ action expert(hidden 1024,输出 22 维) - 输入:3 路相机(head / hand_l / hand_r)+ 22 维本体 state + 文本指令
- 输出:动作 chunk,shape
(1, 30, 22)—— 未来 30 帧 × 22 维,控制频率 30Hz - 规模:~2.82B 参数,bf16,推理约 11.5GB 显存
22 维 state/action 布局(lerobot 序,固定)
[0:7] 左臂 | [7:14] 右臂 | [14] 左吸盘 | [15] 右吸盘 | [16:21] 下半身 | [21] 头 pitch
来源 profile:GO2_SUCTION_EXTRACT_V1。qpos ↔ lerobot:左臂=qpos[8:15]、右臂=qpos[15:22]、下半身=qpos[0:5]、头 pitch=qpos[7]。
任务 prompt
What action should the robot take to reach into the bin, attach both suction cups to the part and lift it out level?
归一化
推理前 state 用 checkpoint_22000/dataset_stats.json 的 mean/std 标准化;action 输出反标准化(×std + mean)。
配置(路径可移植)
所有宿主机/机器人相关路径都由 deploy/go1_env.py 统一解析:默认值按本仓库目录结构推导,用环境变量即可覆盖,无需改代码。
| 环境变量 | 含义 | 默认值 |
|---|---|---|
GO1_CKPT |
模型 checkpoint 目录 | <repo>/checkpoint_22000 |
GO1_WORKSPACE |
GDK / go2_data_recorder 安装位置 | /home/agi/workspace |
GO1_AGIBOT_WORLD |
AgiBot-World 模型代码 | /data/agi/AgiBot-World |
GO1_POSE_FILE |
初始位姿 .npy |
<repo>/deploy/saved_init_pose.npy |
GO1_OUT_DIR |
grab_*.jpg 等输出目录 |
<repo>/deploy |
- 默认即指向仓库自带的
checkpoint_22000/,clone 后离线脚本(openloop_verify/check_model_load)配好GO1_AGIBOT_WORLD后可直接跑。 - 真机脚本(
infer_*/pose_io/head_pitch_test等)还需机器人侧 GDK 运行时:先source $GO1_WORKSPACE/env.sh再运行。 - 示例:
# 机器人上想用原 checkpoint, 覆盖默认即可: export GO1_CKPT=/data/agi/checkpoint_0617 source /home/agi/workspace/env.sh python deploy/infer_stage_a_v2_0617.py # 不设 GO1_CKPT 时默认从 <repo>/checkpoint_22000 加载
部署(G2 真机)
完整流程/命令见 **deploy/COMMANDS_v2.md**(入口索引 deploy/INDEX.md)。要点:
- 推理用 venv
go1_torch;state 按 lerobot 序拼;臂下发用move_arm_joint_servo(group=2);100Hz 平滑。 - 起手必需:①头预下俯 ~0.50(让头镜头看到料箱,否则视觉 OOD 卡 home)②开腰(躯干前倾带动伸手,勿用
--no-waist)。 - 当前能做"弯腰探入 → 双臂伸到铝板正上方";吸盘 actuation(EVS08)部署侧未接、模型自主闭环也未触发吸附,故"吸附+抬出"未在真机验证。
数据来源
AgiBot-World 风格示教,59 episodes。dataset_stats.json 的归一化量由各 episode 的逐条统计(episodes_stats.jsonl)聚合生成(训练产物 episodes/trainer_state 未随本仓库分发)。
使用与许可
内部研发用私有模型。真机控制脚本会驱动双臂人形,运行前务必人守急停、按 deploy/COMMANDS_v2.md 的权限规则操作。