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

checkpoint_0617(22 维吸盘搬铝板 GO-1 模型)部署与测试 README

早期部署文档,部分内容已过时:当前规范命令、路径配置(go1_env.py / GO1_*)、最新结论(头下俯+开腰使闭环起手)以 COMMANDS_v2.md + ../README.md 为准。本文档作历史记录保留。

任务 prompt:reach into the bin, attach both suction cups to the part and lift it out level 机器人:智元 G2(agibot-g2),30Hz,3 路彩色相机 + 22 维 qpos/action。 本文档汇总:模型路径、所需文件、22 维布局、环境、初始位姿、到位脚本、三级测试命令、已知问题。


1. 模型路径与所需文件

模型目录:/data/agi/checkpoint_0617/

文件 说明 必需
model-00001-of-00002.safetensors (4.99GB) 权重分片 1
model-00002-of-00002.safetensors (0.65GB) 权重分片 2
model.safetensors.index.json 权重索引(total 5.64GB)
config.json GO1ModelConfig(action_dim=22, state_dim=22, chunk=30)
dataset_stats.json 归一化统计(state/action 各 22 维 min/max/mean/std)
tokenizer.model / tokenizer_config.json / added_tokens.json / special_tokens_map.json / tokenization_internlm2.py 分词器

推理引擎(venv):/data/agi/venvs/go1_torch/bin/python 模型代码库:/data/agi/AgiBot-World(脚本里 sys.path.insert


2. 22 维 state/action 布局

顺序 = go2_data_recorder.config.DEFAULT_JOINT_NAMES_Go2(已验证与 hdf5 joint_names_json 一致)。 注意:吸盘不在 action 内(模型不预测吸盘,吸盘独立 on/off 控制)。

维度 关节 含义
[0:5] idx01-05_body 腿/腰:踝 / 膝 / 髋 / 腰roll / 腰yaw(下蹲式下半身,靠蹲下提供下探行程)
[5:8] idx11-13_head 头 3 轴
[8:15] idx21-27_arm_l 左臂 7
[15:22] idx61-67_arm_r 右臂 7

3. 环境设置(每个新终端先执行)

ssh agi@172.16.64.220
source /home/agi/workspace/env.sh
export TMPDIR=/data/agi/tmp
export PYTHONPATH=/home/agi/workspace:$PYTHONPATH
PY=/data/agi/venvs/go1_torch/bin/python

4. 推理所需「初始位姿」

来源:go2_suction_extract_v1 共 60 个 episode 的第 0 帧 qpos 均值(std≈0.007,高度一致的固定起手姿)。 重要事实:此初始位姿 == 机器人 home/收拢位,演示都是从该姿态起手,躯干前倾探框发生在 episode 过程中。

WAIST idx01-05 = [-0.865, 1.439, -0.632, 0.000, 0.000]   # 踝/膝/髋/roll/yaw
HEAD  idx11-13 = [ 0.012, 0.000, 0.192]
LEFT  idx21-27 = [ 1.729, -1.150, -1.600, -1.799, 1.330, 0.000, 0.000]
RIGHT idx61-67 = [-1.729, -1.150,  1.600, -1.799, -1.330, 0.000, 0.000]

到位脚本 go_to_init_pose_0617.py

机制:复用 g2_t2_go_home.py 的 DDS 规划器通路(control_type=3 绝对关节角 → 发到 /MotionControlService/MotionControl/request → 由 genie_motion_control 规划安全轨迹,处理 COM/碰撞)。 非裸 servo。保活节点重发若干次(修掉原脚本 publish 即退、可能投递不到的问题)。

python3 /data/agi/go_to_init_pose_0617.py --speed 0.3 --hold-s 4 --verify
  • --speed speed_scale(默认 0.3,慢)
  • --hold-s 保活并重发的秒数
  • --verify 结束后读关节角,打印 max|err|

前置条件:遥操必须空闲/已交还控制权,否则规划器忽略请求(teleop 持权是第一优先级)。 判断未生效:--verify 的 err 没下降 / 关节角不变 → 多半是遥操在持权。


5. 三级测试命令(从安全到危险,务必按序)

1 级 — 纯加载冒烟(不接机器人)

$PY /data/agi/check_model_load_0617.py

预期:加载成功,2.82B 参数 / ~11.5GB 显存 / 输出 (1,30,22) / ~665ms。

2 级 — 真机只读(抓相机+关节→推理→只打印,不动机器人)

$PY /data/agi/infer_stage_a_0617.py

预期:3 相机正常、输出 (30,22) 无 NaN。 **关键看 |action[0]-state|**:策略正确时应接近 0(见第 6 节已知问题)。

3 级 dry-run — 闭环全流程 + 安全门控(不动机器人)

$PY /data/agi/infer_stage_c_0617.py --max-chunks 3

打印每 chunk 的 waist/head/armL/armR 预测 + 安全判定;不发任何运动。

3 级 live — 真闭环动机器人(⚠️ 危险,需有人守急停)

# 保守起见先冻结腰;先确认 dry-run 的 d0max<0.3 再加 --live
$PY /data/agi/infer_stage_c_0617.py --live --no-waist --max-chunks 3 --exec-frames 15

下发通路:臂→joint_servo_control(14名),头→move_head_joint_servo(3值),腰→move_waist_joint_servo(5值)。 安全门控:NaN/Inf、首步 delta、步间 delta、训练 range clamp、3 连败停。 分组开关:--no-waist / --no-head。其它参数:--max-chunks/--max-time-s/--exec-frames/--first-step-delta/--step-delta/--priority


6. ⚠️ 已知问题(live 前必须先查清)

演示数据里 action[t] ≈ qpos[t](绝对位置,全程 mean 误差≈0),所以策略正确运行时 action[0] 应 ≈ 当前状态、首步 delta 接近 0。但实测推理 action[0] 离正确起点差 ~2.95rad。 这是推理侧异常信号,不是"任务要前倾"。嫌疑(按可能性排序):

  1. 观测不在分布内:推理时料框/铝板不在相机视野、光照/背景与训练差异大。→ 复现训练场景(料框+铝板就位)再试。
  2. 图像/相机映射:3 路相机顺序或内容与训练不一致。
  3. 归一化口径:核对 ctrl_freq、state 归一化、action 反归一化与训练 deploy 代码一致。

必须:到位后先单独验证一次推理,确认相机里有料框和铝板,且 stage_a 的 |action[0]-state| 回落到接近 0,stage_c live 才安全有意义。


7. 文件清单(均在 /data/agi/

文件 用途
check_model_load_0617.py 1 级 加载冒烟
infer_stage_a_0617.py 2 级 真机只读推理
infer_stage_c_0617.py 3 级 闭环(默认 dry-run,--live 才动)
go_to_init_pose_0617.py 驱动到推理初始位姿(DDS 规划器,安全)
ramp_to_start_0617.py 旧版裸 servo ramp(⚠️ 腰 servo 会被拒,已弃用,保留备查)
checkpoint_0617/ 模型权重 + config + dataset_stats

参考实现(吸盘作业 + 腰/臂控制 + 取控制权):/home/agi/workspace/demos/demo_03_suction_extract/scripts/ 官方到位脚本(内置预设,非模型起始位姿):/home/agi/workspace/bin/motion-control/bin/tools/g2_t2_go_home.py -i 0..4


8. 状态小结(截至 2026-06-21)

  • ✅ 1 级 / 2 级 / 3 级 dry-run 全通过
  • ✅ dataset_stats.json(权威版,22 维)就位
  • ✅ 初始位姿确定 + 到位脚本就绪
  • ⏳ 待办:①遥操交还控制权后跑 go_to_init_pose_0617.py 验证到位 ②排查第 6 节推理异常 ③确认料框/铝板场景在分布内 ④再做 stage_c live