目录

ReTraverse:人形机器人复杂场景智能避障与自主通行系统

人形机器人“语言理解—技能选择—安全执行—失效恢复—事件重规划”闭环系统。

框架图

本项目以 Unitree G1 MuJoCo 仿真环境为验证平台。机器人根据自然语言任务意图和本体感知信息,在跨越、下蹲、侧向跨越与绕行等技能之间进行选择;发生碰撞、跌倒、停滞或安全净空不足时,系统会停止当前尝试、完成受控恢复,并在块边界触发新的技能决策。

项目演示

如果上方视频无法播放,点击此处打开视频

目录

系统组成

模块 主要职责
桥接层 将 VLA 模型输出转化为 CAT 可执行的技能与参数
安全监控与事件驱动重规划层 负责场景合成、执行循环、故障处理和重规划状态机
感知与决策层 提供前视 RGB、深度伪彩色、头顶视角等输入
评测层 批量生成多障碍场景,输出轨迹、失败类型、重规划记录与汇总指标
重训练层 将执行失败的场景加入重训练,持续拓宽策略库

实验结果

  1. 基于Ubuntu的100次随机4组障碍物的对比实验:
实验组 成功数量 成功率 救援成功数量 救援率 平均重规划次数 平均步数 最长通行时间 最大步数 平均耗时 最大耗时 救援平均时间
G1 68/100 68% 0/32 0% 0.00 501.1 20.0s 1000 3.35s 6.8s /
G2 39/100 39% 0/32 0% 1.64 810.0 28.6s 1430 5.16s 9.1s /
G3 85/100 85% 17/32 53.1% 0.76 629.71 28.6s 1612 7.34s 63.2s 15.27s
G4 75/100 75% 7/32 21.9% 1.47 579.9 24.8s 1241 6.77s 49.9s 13.50s

实验结果图:

对比展示
  1. 基于OpenKylin的100次随机4组障碍物的对比实验
实验组 成功数量 成功率 救援成功数量 救援率 平均重规划次数 平均步数 最长通行时间 最大步数 平均耗时 最大耗时 救援平均时间
G1 68/100 68% 0/32 0% 0.00 501.1 20.0s 1000 1.19s 2.4s /
G2 39/100 39% 0/32 0% 1.64 810.0 28.6s 1430 1.96s 3.4s /
G3 80/100 80% 12/32 37.5% 0.79 623.5 31.96s 1598 13.02s 170.3s 37.93s
G4 77/100 77% 9/32 28.1% 1.38 571.1 23.12s 1156 11.23s 194.9s 32.35s

实验结果图:

对比展示
  1. Generalist 四阶段未知场景泛化结果

场景示意图:

对比展示
阶段 测试场景 总次数 成功次数 阶段成功率 结果说明
1 narrow 3 3 100% 成功通过
2 catbend 3 3 100% 成功通过
3 bar 3 3 100% 成功通过
4 chicane 3 0 0% 3次均未到达目标,均在第4阶段失败

实验结果图:

对比展示
  1. 重训练后对未知场景泛化结果
场景类型 测试场景 总次数 成功次数 阶段成功率 结果说明
单一场景 staggered_holdout_long 3 3 100% 成功通过
单一场景 chicane 3 3 100% 成功通过
单一场景 staggered_holdout_tight 3 3 100% 成功通过
连续场景 narrow → catbend → bar → chicane 3 3 100% 成功通过

实验结果图:

对比展示

环境准备

  1. CAT 基础环境

请参考 CAT 中文安装文档。

  1. VLA 模型

本项目使用 GLM-4.1V-9B-Thinking,请从 Hugging Face 下载对应 checkpoint。

启动服务

cd /Retraverse/HPF-CAT
source .env && source .venv/bin/activate

启动 VLLM:

cd /Retraverse/HPF-CAT
bash deploy/vla/glm/serve_glm.sh

出现 ✅ GLM 服务已经运行: http://127.0.0.1:8001/v1 即表示成功。

四组对比实验

重要: 每次实验请修改 --out 文件名,避免覆盖已有结果。

G1 为 generalist_baseline,G2 为 specialist_baseline,G3 为插值回退,G4 为 retreat_p2。

cd /Retraverse/HPF-CAT
source .env
.venv/bin/python experiments/evaluate_four_groups_v2.py \
  --episodes 100 --planner glm \
  --out out/four_groups_rollback_vs_p2_100_run3.json  # 请改成新文件名

重训练新场景

  1. 准备训练环境
cd /Retraverse/OS-Robot2
source /Retraverse/HPF-CAT/.env
source /Retraverse/HPF-CAT/.venv/bin/activate
export GLI_PATH=/Retraverse/OS-Robot2/cat_ppo
  1. 训练 side3 specialist

使用 staggered 家族场景与 RandObs 初始化训练:

python train_ppo.py \
  --task G1CatMultiPF --exp-name tight_v1 --num-timesteps 10000000 --seed 0 \
  --ground 1.0 --lateral 1.0 --term-collision-threshold 0.04 \
  --obs-path data/assets/RandObs/D8G0L1O0S3 \
  --restore-checkpoint-path data/logs/G1_mj_v2_axis/07011502_G1Cat_side3_v0xL1p0xT0p0xside3/checkpoints/000403046400 \
  --pf-paths data/assets/TypiObs/new_staggered_holdout_tight \
             data/assets/TypiObs/staggered_train_left \
             data/assets/TypiObs/staggered_train_right \
             data/assets/TypiObs/staggered_train_wide \
             data/assets/TypiObs/staggered_train_offset \
             $(python3 -c "import json;c=json.load(open('data/logs/G1_mj_v2_axis/09261711_G1CatMultiPF_staggered_v2xG1p0xL1p0xT0p04xD8G0L1O0S3/checkpoints/config.json'));print(' '.join([p for p in c['env_config']['pf_config']['paths'] if 'RandObs' in p]))")
  1. 训练后评测回放

请修改 --video-path,避免覆盖已有视频:

python -m cat_ppo.eval.mj_onnx_play \
  --task G1Cat \
  --onnx-path data/logs/G1_mj_v2_axis/$(ls -dt data/logs/G1_mj_v2_axis/*G1CatMultiPF_tight_v1* | head -1 | xargs basename)/checkpoints/000010485760/policy.onnx \
  --obs-path data/assets/TypiObs/new_staggered_holdout_tight \
  --save-video --video-path /Retraverse/OS-Robot2/video/tight_v1_eval.mp4 --num-steps 500

交互式运行与 VNC

  1. 启动 VNC
vncserver :1 -localhost no -geometry 1280x800 -depth 24
export DISPLAY=:1
xdpyinfo | head -3    # 有输出说明可用
ssh -L 5901:localhost:5901 用户名@服务器IP
  1. 随后在 TigerVNC 中连接 localhost:5901。

G4:retreat_p2:默认包含 generalist 首试;追加 --no-generalist-first 可关闭首试。

cd /Retraverse/HPF-CAT
source .env && source .venv/bin/activate
.venv/bin/python experiments/run_composed_glm_vnc.py --count 4 --vnc --recovery p2

G3:插值回退:

cd /Retraverse/HPF-CAT
source .env && source .venv/bin/activate
.venv/bin/python experiments/run_composed_glm_vnc.py --count 4 --vnc --recovery rollback

生成视频

G4:retreat_p2:

cd /Retraverse/HPF-CAT
source .env && source .venv/bin/activate
.venv/bin/python experiments/run_composed_glm_vnc.py \
  --count 4 --vnc --record-video --recovery p2 \
  --seed 20260924 --reproducible

追加 --no-generalist-first 可直接执行 specialist 序列。

G3:插值回退

cd /Retraverse/HPF-CAT
source .env && source .venv/bin/activate
.venv/bin/python experiments/run_composed_glm_vnc.py \
  --count 4 --vnc --recovery rollback --record-video

致谢

  1. 感谢指导老师和小队队员的辛勤付出;
  2. 感谢以下开源项目与系统对本项目的支持:
关于
3.4 GB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号