叉车强化学习 · 文献综述 树根杯赛题相关 · 2026-07-10
面向"树根杯 · 具身智能平衡重叉车挑战赛"的对标论文与开源仓库全景 —— 从零基础理解叉车 RL,到可落地的架构清单。
- 三分钟先导 —— 如果你是第一次听说"叉车 RL",从这里开始
- 关键词速查 —— 20 个必备术语,一句话读懂
- 叉车 pick-place 全景 —— 6 步任务分解 + 4 个难点
- MJX + brax PPO 是什么 —— 我们的技术栈白话讲解
- 综述结论 —— 从 9 篇论文提炼的 6 条洞见
- 直接对标 5 篇 —— 全球最相关的叉车 RL 论文
- 类似 RL 任务 4 篇 —— 林业采伐机 / 液压起重机
- 本地已 clone 2 项 —— 开源仓库详解
- 迁移优先级 P1-P10 —— 可落地的清单
- 推荐学习路径 —— 按你的角色选择起点
本页汇总从 50 轮多角度文献检索(中/英/日文关键词 + 场景动作拆解 + 特定论文追踪 + 类似任务迁移)得到的所有与"叉车 pick-place"直接或间接相关的强化学习论文与开源实现。目标是回答两个问题:全球范围内有没有可直接借用的叉车 RL 权重? 和 如果没有,我们训 MJX + brax PPO 应该抄哪些架构 idea?
先说结论:公开可下载的"叉车 pick-place RL 预训练权重"目前 不存在 —— 5 篇直接对标论文全部未开源模型。但 4 篇林业采伐机 / 液压起重机论文提供了非常成熟的 reward + curriculum 架构模板,其中 3 个 idea 可以直接搬进 src/rl/forklift_env.py(倒数奖励、分阶段独立 reward、Beta 分布 action)。本页最后一节按优先级给出可落地清单。
阅读方式:如果你从没接触过强化学习,请从 三分钟先导 顺序读到综述结论;如果你想直接跳到论文详情,请用上面的 TOC。每篇论文卡片都配了 🟡 一句话总结 / 🟢 初学者视角 / 🔵 Key takeaway / 🟠 对赛题的迁移 四色标签,按需读。
🎯 三分钟先导 · 什么是"叉车 RL"?
1) 我们在做的比赛是什么?
树根杯 · 具身智能平衡重叉车挑战赛 要求参赛者做一台 能自己开、自己叉、自己搬、自己放 的仿真叉车。你交出一个"仿真器 + 算法"的整套系统,算法拿到目标货物的位姿信息,要驱动叉车把最上面那件货抬起来送到指定位置,放置误差要小于 10 cm、角度误差小于 5°。决赛会给算法故意加噪声(位置 ±20 cm、角度 ±10°),不允许你依赖高精度输入。
2) 为什么用"强化学习"?
强化学习 (Reinforcement Learning, RL) 让算法通过反复试错学习动作策略。就像教小孩骑自行车:你不告诉他每个动作怎么做,你只告诉他"摔了就是坏、骑得远就是好",他自己在几百次摔倒里学会怎么保持平衡。对于叉车这种"底盘转向 + 叉齿升降"耦合的复杂系统,人工写规则(比如"距离 < 1m 就减速")容易出漏洞(v10 版本我们就吃过这亏),而 RL 训练出的策略能自然处理各种边缘情况。
3) 为什么这套页面重要?
训 RL 是有成本的 —— 我们在 3090 上单次训练 4-5 小时,失败一次就损失半天。先看清全球有没有人踩过同样的坑,能让我们少绕大量弯路。50 轮检索的结论是:同类任务在过去 4 年被反复研究(林业采伐机、液压起重机),他们的 reward 设计经验对我们价值极高。这就是本页存在的意义。
📖 关键词速查 · 20 个必备术语
下面每行都是"一句话读懂"。看不懂论文时可以随时回来查。
RL 基础
- RL / 强化学习
- 让算法通过 试错 + 反馈 学习动作策略。核心三要素:观测(observation)、动作(action)、奖励(reward)。
- Policy / 策略
- 算法学到的"看到什么就做什么"的映射函数,通常是一个神经网络。输入=观测,输出=动作。
- Reward / 奖励
- 每一步给算法的一个分数,告诉它这步做得好不好。RL 的全部目标就是"最大化长期奖励总和"。Reward 设计是 RL 工程 90% 的工作。
- PPO
- Proximal Policy Optimization。目前工业界最常用的 RL 算法,稳定、易调、样本效率还行。本页几乎所有论文都用 PPO。
- Observation Space
- 算法能"看到什么" —— 比如叉车的位置、朝向、叉齿高度、货物相对位姿。可以是数值(low-dim)也可以是图像(vision-based)。
- Action Space
- 算法能"做什么" —— 比如叉车的
(前进速度, 转向角速度, 叉齿升速度)三个连续控制信号。 - Episode
- 一次完整试验,从初始状态到成功/失败/超时。RL 通过跑百万级 episode 迭代 policy。
- Curriculum
- "课程学习" —— 先教简单任务,收敛后再加难度。就像先教小孩走再教跑。本页 90% 论文都用。
- Reward Shaping
- 把稀疏的"成功=1 / 失败=0"分解成密集的过程奖励(距离缩小 +0.1 / 速度平稳 +0.05...),让算法在早期就有学习信号。
- Sim2Real
- 在仿真里训练,部署到真机的能力。核心难点是仿真与真实的物理差异(摩擦、延迟、光照)。
- Domain Randomization (DR)
- 训练时故意扰动仿真参数(摩擦系数 ±20%、光照亮度 100-100k lm...),迫使 policy 对物理不确定性鲁棒,是 sim2real 的主流方案。
- BC / 行为克隆
- Behavioral Cloning。用人类演示或规则控制的轨迹当"标准答案",用监督学习让 policy 先模仿一遍,再用 RL 微调。加速 RL 收敛。
仿真与工程
- MuJoCo
- DeepMind 维护的物理仿真引擎,擅长接触/摩擦仿真。轻量、准确、社区活跃 —— 我们赛题主选。
- MJX
- MuJoCo XLA 后端 —— 把 MuJoCo 编译到 GPU 上跑,支持一次跑 1024 个环境。让 RL 训练从 CPU 单进程的一天变成 GPU 并行的 1-2 小时。
- brax
- Google 的 JAX 版 RL 框架,和 MJX 天然对齐。提供 PPO / SAC / ES 等算法的 vmap 化实现。
- Isaac Sim / Isaac Gym
- NVIDIA 的物理仿真,资产丰富但重型。本页大量论文用这个,但我们本机 driver 595 有兼容性坑,选 MJX 规避。
- Gazebo
- ROS 生态最常用的仿真器,和真机代码接口一致但性能一般(不支持向量化)。
- MJCF / URDF
- MuJoCo 和 ROS 各自的"机器人模型描述文件" —— 定义几何、关节、执行器、传感器。互相之间可以手工转换。
- Ackermann 底盘
- 汽车/叉车的转向机构 —— 前轮转、后轮跟随,不同于差速驱动(左右轮不同速)。数学上是 non-holonomic(不能横向平移),路径规划复杂度更高。
- vmap
- JAX/GPU 里的"批处理" —— 一次并行跑 N 个仿真环境,吞吐提升 N 倍。MJX + brax 的性能优势核心来源。
🗺️ 叉车 pick-place 全景 · 任务拆解 + 难点
6 步 pick-place 全流程
从叉车启动到货物放置成功,通常拆成 6 个阶段。本页所有论文都是在解决其中的 1-6 步。
为什么这个任务难?
- 长 horizon:从"起步"到"放好"要 300+ 时间步,每一步的错误都会累积到终点。教科书 RL 任务(比如 CartPole)只有 50 步,叉车是它的 6 倍。
- 接触密集:叉齿要精确插入 pallet 底部 8.5cm 的缝隙,MJX 的 box-box 接触仿真在这里容易穿模。这是我们 CLAUDE.md 里记录的 P0 坑点。
- 耦合控制:底盘前进 / 转向 / 叉齿升降 三个动作同时进行,一个错就翻车。比如 v10 版本抬叉时车身会往前漂 74cm,直接把 pallet 顶掉。
- 零容忍碰撞:决赛要求除地面外任何碰撞都直接失败,货物翻倒也失败。这意味着 reward 不能只鼓励"到达",还要显式约束"稳定"和"安全"。
⚙️ MJX + brax PPO 是什么 · 我们的技术栈
训练循环白话解释
想象一台 GPU 同时开着 1024 个平行世界,每个世界里都有一台叉车在自己试错。每 20 毫秒(50 Hz),1024 个 policy 同时输出动作,MJX 用 GPU 并行推进物理时间,所有环境的 (观测, 动作, 奖励) 汇总起来,brax 用 PPO 更新一次 policy 权重。1024 个世界的经验一起用,收敛速度是单进程的 1024 倍。
一次训练大约 5M 时间步 ≈ 1-2 小时 GPU 时间(3090)。训完得到一个 params.pkl,里面就是学会怎么开叉车的神经网络权重。
Reward Shaping 的直觉
RL 最大的痛点是"稀疏奖励" —— 如果只有"成功=1 / 失败=0",算法早期什么都学不到,因为随机动作永远无法完成 300 步任务。Reward shaping 就是把"成功"拆分成一路上的密集反馈:
- 接近 pallet → +0.1 (每步)
- 朝向对齐 → +0.05 (每步)
- 叉齿高度接近目标 → +0.2 (每步)
- 货物成功抬起 → +1.0 (一次性)
- 货物翻倒 → -1.0 (一次性 + 终止)
怎么设计这些系数,是 RL 工程的核心难题 —— 也是本页所有论文最有价值的经验来源。
💡 综述结论 · 9 篇论文提炼的 6 条洞见
- 成功率梯度:仿真最优
HMER 94.2%≫ 真实户外ADAPT ~75% ≈ Lang2Lift 60.5% > Toyota real 60%≫ 感知 baselineSemi-Auto 0.788 mAP。仿真里能到 94%,真机就只有 60% 左右 —— 这个 gap 主要是遮挡、光照、动态障碍带来的,不是控制精度不够。 - 分割 > 检测:Lang2Lift 消融证明去掉 SAM-2 分割后成功率从
52.7%崩到8.5%,精准插叉需要 像素级掩膜 而不是矩形框。检测(bbox)只告诉你"pallet 在这个矩形里",分割(mask)告诉你"pallet 的每一像素在哪";插叉需要后者的精度。 - 倒数奖励收敛精度关键:
R = λ/(d+ε) + R_success让 HMER 放置误差从 rule-based 的 4.1cm 收到1.5cm。常见的exp(-d)距离奖励在 d 已经很小时曲线太平,算法感觉"再努力也没多少分",就停在 4cm 附近;换成倒数1/d,d 越小奖励涨得越猛,算法就有动力精修到 1cm。 - 多专家分工 > end-to-end:HMER 三专家
94.2%> HRL88.1%> Seq-Hybrid68.5%。让一个网络同时学"开车 + 插叉 + 放置"就像让一个人同时学开车、做菜、写代码,目标互相干扰;拆成三个独立的小专家各管一段,总体成绩反而更好。 - 非 RL 也能拿到接近人类的成绩:ADAPT 用 iSAM2 SLAM + Hybrid A* + 压力接触反馈,户外真机接近 20 年经验的人类操作员。
RL 不是唯一路径 —— 经典的"感知 + 规划 + 控制"三段式对户外弱引导也很稳。如果 RL 训崩了,回退到 FSM + MPPI 混合规划仍然能拿分。
- 能量优化是决赛差异化得分点:Umeå 在
R = R_success / (1 + λ·E_consumed)下能耗降 20-40%、周期只增 5-10%。决赛评分包含"作业效率",在 reward 里显式加一个能耗惩罚,policy 会学到"轻柔的力量",顺便就把效率分拿了。
📌 直接对标 · Direct Forklift RL (5 篇)
| 论文 | 年月 | 仿真栈 | 算法 | 成功率 | 开源 |
|---|---|---|---|---|---|
| HMER (天大) | 2026-01 | Gazebo × 32 | Multi-Expert + BC→PPO | 94.2% sim | 否 |
| Toyota Visual Forklift | 2024-12 | Isaac Sim | PPO + ResNet + DR | 60% real | 否 |
| ADAPT | 2025-03 | 真实户外 | iSAM2 + Hybrid A*(非 RL) | ≈ 人类 | 否 |
| Lang2Lift | 2025-08 | 真实户外 | VLM + SAM-2 + FoundationPose | 60.5% real | 否 |
| Semi-Auto Vision | 2025-11 | 感知 only | YOLOv11 + Optuna | 0.788 mAP | 否 |
HMER · Heterogeneous Multi-Expert RL for Long-Horizon Multi-Goal Tasks in Autonomous Forklifts
三个专家的分工:
(v, ω)(v, ω, fork_v, gripper)R_place = λ / (d_target + ε) + R_success结果:总成功率 94.2%,cycle time 42.5s,放置误差 1.5cm。Baseline 对比:Seq-Hybrid 68.5%(串行切换)/ HRL 88.1%(层次 RL)/ Rule-Based 84.2%(手写规则)。消融证明:纯 BC 平坦训练只有 12.4% → HMER 上升到 94.2%,增量 82pp 几乎全部来自"专家解耦"。
- 多专家分工避免单网络的目标冲突,是本领域已知最高的仿真成功率
- 倒数奖励
1/(d+ε)对精准放置阶段直接可用,梯度非常锐利 - BC → PPO 混合训练能加速收敛,10k 演示门槛并不高
- 可直接映射到我们的 C1/C2/C3 curriculum,结构上无缝对齐
- 局限:仅 Gazebo 仿真,无 real-world 验证;语义规划器需人工设计状态判据
Toyota · Visual-Based Forklift Learning System — Zero-Shot Sim2Real
结果:1/14 缩放真机 60% 成功率(仅 pallet 接近任务,不含插叉抬升),决策精度 +90%。零样本迁移可行但和 HMER 的仿真 94.2% 有明显差距。
- 立体视觉 (512-D ResNet) 比单目稳定,规避深度歧义
- Clothoid 参考轨迹作 reward shaping 优于纯 L2 距离
- DR (RGB ±20%) 覆盖仓库光照全范围,但域窄仍不够
- 1/14 缩放机器人有 scale-up 未知风险,全尺寸未验证
- 局限:PPO 超参未公开;任务只到接近,无搬运放置
ADAPT · Autonomous Dynamic All-terrain Pallet Transporter
- iSAM2 SLAM:一边开一边建地图,车轮里程 + RTK-GNSS + 检测到的 pallet 位置一起融合,自动纠错。类比:你一边走一边画地图,同时看到熟悉的建筑就纠正自己的位置估计。
- Hybrid A*:考虑阿克曼底盘"不能横移"的物理约束的路径搜索算法,规划出的路径可以物理跟得动。
- 压力接触:液压叉齿的油压传感器,通过压力变化知道货物是否插入到位。类比:你不用眼睛,靠手感就能判断插头有没有插好。
结果:定位漂移 ~1% 相对路程;加 pallet 观测后 fork-pallet 相对误差从 0.182m → 0.064m(-65%);整体接近 20 年经验人类操作员水平。
- iSAM2 + pallet 地标融合定位是弱引导下最稳的思路
- Hybrid A* + Reeds-Shepp 显式处理 Ackermann 几何,比 PPO end-to-end predictable
- 压力-接触传感反馈是纯视觉控制的必要补充
- 户外挑战需 2.5D 高度图 + 遍历性分析
- 局限:强依赖 RTK-GNSS(不通用);无开源;无学习能力(无法从新场景改进)
Lang2Lift · Language-Guided Autonomous Forklift for Outdoor Pallet Handling
- NLP 从"取那个角落的钢梁 pallet"抽出 物体类型 = pallet / 视觉特征 = 钢梁 / 空间关系 = 角落 四个要素
- Florence-2(开放词汇 VLM)在图像里找到符合"角落的钢梁 pallet"的矩形框
- SAM-2 把这个矩形框细化成像素级 mask
- FoundationPose 用 RGB-D + mask 算出 pallet 的 6D 位姿
- 底层控制拿着 6D 位姿去插叉
结果:387 张真实户外 prompt-image 对,总体 mIoU 0.587,成功率 60.47%。低光反而最佳(0.805),遮挡最差(0.481)。关键消融:去掉 SAM-2 后成功率 52.71% → 8.53%(崩了 84%)。
- SAM-2 分割是不可删除环节,精确 mask > 检测 bbox
- Florence-2 开放词汇优于短语接地(GroundingDINO)
- FoundationPose 6D 位姿 ±5cm/±4cm 直接用于插叉对位
- 低光 mIoU 反超晴天,纹理对比强反而降低歧义
- 遮挡 (38.27%) 是主要瓶颈,语言需预先给定不支持在线
Semi-Auto · Learning-Based Vision Systems for Semi-Autonomous Forklift
λ_cls=0.187, λ_box=0.117, λ_iou=0.269, lr₀=0.0159结果:YOLOv11 mAP@0.5 0.788,mAP@0.5:0.95 0.510。无 real robot 闭环验证。
- YOLOv11 DFL 亚像素定位是成熟的插叉点检测 baseline
- Optuna 系统超参搜索(λ 权重、学习率)可直接复用
- Pallet-孔位映射规避 6D pose 复杂性,单目也能干
- mAP@0.5:0.95 仅 0.51,严格阈值下精度不够
- 局限:无闭环控制;无 real robot;仓库泛化未测
🌲 类似长 horizon 任务 · Analogous RL (4 篇)
为什么这些论文相关?林业采伐机 / 液压起重机的架构和叉车高度可迁移 —— 都是"多 DoF 底盘 + 大惯量末端 + 长 horizon pick-place"任务簇。虽然场景不同,但 reward 设计、curriculum 结构、action 参数化的经验完全可以搬。
| 论文 | 年月 | 仿真栈 | 算法 | 成功率 | 特色 |
|---|---|---|---|---|---|
| LUT Log Loading | 2025-10 | Isaac Gym × 1024 | PPO + 两阶段 reward | 94% | 分阶段独立 reward |
| TU Wien Wood-Log | 2025-02 | MuJoCo × 42 | mPPO + Beta 分布 | 96% | Beta action + 状态机 reward |
| ETH Hydraulic Handler | 2024-10 | 混合 sim → 12t 真机 | PPO + 7 项 curriculum | ≈ 人类 | One-shot 终止 + 液压 NN 建模 |
| Umeå Forestry Crane | 2021-03 | Unity + AGX × 8 | PPO + 高度递降 | 97% | 显式能量优化 reward |
LUT · Towards RL Based Log Loading Automation
- Stage 1(120-160 步收敛):只用
r1 (接近) + r2 (抬高),让算法先学会最基础的动作 - Stage 2(300-1000 步精调):加入
r3 = -w · v_log_z³抓稳落放
r1 (位置接近) + r2 (提升 + 抵达床上方),~120-160 steps 收敛r3 = -w · v_log_z³(立方衰减落置稳定),~300-1000 steps 精调-v³ 而不是 -v²?立方项在 v 小时几乎不惩罚(算法能自由动),v 大时惩罚陡增(算法被强烈约束)。这样低速动作不受干扰,高速摇晃被强力惩罚。结果:5 次独立训练平均 90-95%,最佳 94% (966/1024)。通过地形倾斜 / 粗糙地面泛化测试。
- 分阶段 reward 全分离是核心,r3 不与 r1/r2 共享 shaping 系数
- 立方衰减速度惩罚
-v_z³精细化落置稳定,线性版本不够锐 - Isaac Gym 1024 并行验证 curriculum 收敛的可扩展性
- 随机 joint reset + terrain randomization 防过拟合
- 局限:MJCF 参考仓 hakoniwa 非官方,权重未公开
TU Wien · Autonomous Wood-Log Grasping with a Forestry Crane
- Beta 分布 action:传统做法是 policy 输出
[-1, 1]内的数,然后 clip 到边界 —— 但 clip 会截断梯度,训练晚期不稳定。Beta 分布本身取值就在[0, 1],不需要 clip,梯度全程完整。类比:普通做法像"你尽情说,超出边界的话我给你切掉";Beta 像"你天生就只能在边界内说话",没有切割损失。 - 状态机 reward:每个 stage 的奖励只在前一 stage 已经达成时才开启。防止算法"贪心"提前进入下一 stage —— 比如"抓稳"奖励只有在"接近距离 < 阈值"时才生效,否则算法可能在远处就假装闭合夹爪骗奖励。
r_grapple = r_dist · (q₈/q̄₈) + (1 - q₈/q̄₈)(1 - r_dist)r_grapple 公式看起来复杂,其实很简单:q₈ 是夹爪闭合程度,r_dist 是距离奖励。整个公式的意思是"当距离近时(r_dist 大),就奖励闭合(q₈ 大);当距离远时(r_dist 小),就奖励张开(q₈ 小)"。—— 教算法"只在合适的时候才做合适的事"。结果:单一直径 96%,混合直径 (8.5-50cm) 也 96%。
- Beta 分布 action 自然满足物理约束,比 tanh+clip 稳 30%
- 状态机 reward 分段递进,避免贪心提前进入下阶段
- 显式速度阻尼 r_balance 用于末尾防抖动
- Uniform diameter 分布思路可迁移到 mass randomization
- MJX vmap 友好度极高,与我们栈完美对齐
tfp.distributions.Beta,brax 支持;三个 action(v, ω, fork_v)都在 [-1, 1] 里,Beta 天然合适。ETH · RL Control for Autonomous Hydraulic Material Handling Machines
- 液压马达难以解析,用 MLP 学"油压 + 速度"的响应(数据驱动)
- 臂膀比较线性,用一阶延迟系统(解析)
- 自由摆放末端用 Lagrangian + Rayleigh 阻尼(解析)
exp(-‖ε‖²) Cartesian 距离-‖φ_dot‖ 工具角速度阻尼-|ω_slew| · (|ω_boom| + |ω_stick|) 防旋转-臂膀耦合-‖u‖² · I[‖ε‖ < 0.5 ∧ |ω_slew| < 0.02] 进入邻域后禁动作结果 vs 20 年经验专业操作员:slew 平均速度持平(11.17 vs 11.12°/s);工具摆放阻尼显著优于人类(6.47 vs 20.23°/s,更稳);超调略差(8.88° vs 0.57°),稳态误差略大。真机泛化空/满桶 comparable。
- 混合 sim (数据 + 解析) 大幅缩小 sim2real gap,是唯一真机验证的重工业 RL
- 7 项 reward 用 curriculum 缓入,不是 epoch 0 全上,避免早期冲突
- One-shot 终止奖励对应 FSM SETTLE 阶段的 neural 化
- 显式 decouple 项防高速耦合振荡,可直接迁移到叉车 (转向 × 前进耦合)
- DR 包含控制器 P 增益 ±20%,不是只随机化物理量
Umeå · RL Control of a Forestry Crane Manipulator
R_total = R_success / (1 + α · E_consumed)
白话:总奖励 = 成功奖励除以(1 + 能耗),能耗越大总奖励越小。这样算法优化的不只是"成不成",还有"耗不耗电"。类比:告诉小孩"打扫房间给 100 元,但用的时间越长扣得越多",他会自然找到高效的动作序列。另一个亮点是 Height-based curriculum —— 训练时 log 位置从"高高在上"(几乎已经在夹爪里)开始,逐步下降 0.1m,一直到地面。这种"从易到难"的单变量渐进方案,比多阶段 reward 好调得多。
R_total = R_grasp / (1 + α · E_consumed)E = Σ τᵢ(t) · ωᵢ(t) · dt 仅 boom/stick/slew结果:成功率 97%,能耗 vs 无能耗 reward 降 20-40%,周期时间只增 5-10%。
- 显式能量项让 policy 学"轻柔而坚定"的动作,对磨损也友好
- Height-based curriculum 单变量递降,比多 stage 好调
- 30% success over 20 episodes 是自适应触发,不固定 epoch
- 禁用早期碰撞检查减少虚假终止,能加速前期学习
- Action rate limit + LPF 是 sim2real 平滑动作的必要保险
🔧 本地已 clone · Local Resources (2 项)
ROS2-Forklift-Simulation GitHub · 35★
reference/ROS2-Forklift-Simulation/src/forklift_gym_env/forklift_env_Rewards_utils.py 里 L2/Nav/Collision/Binary 四个 reward 可以逐行搬进 src/rl/reward_factory.py(签名从 ROS topic 改成 MJX mjx.Data);Ackermann 底盘的参数验证结果直接借鉴。IsaacSim-Autonomous-Forklift GitHub · 36★ · MIT
forklift_b.urdf 高保真模型,+ 3 种仓库场景 + 合成数据生成管道。算法闭源但资产可全用。reference/IsaacSim-Autonomous-Forklift/src/forklift_simulator/urdf/forklift_b.urdfforklift_b.urdf 是全球最高保真的 open forklift 模型,转 MJCF 时对照 CLAUDE.md 记录的 MJX 兼容性坑点(cylinder→capsule、solver iterations=10、solimp=[0.99, 0.999, 0.0001]);合成数据管道能对应决赛感知模块。🚀 迁移优先级清单 · Action Items for v3.0
按 ROI × 落地难度 排序 —— P1/P2 是 D4 生死门(07-05)前就要评估的核心 idea。每条我都给出了 为什么这样做 / 如果不做会怎样 / 具体在哪里改 三个信息。
立方衰减 cargo 摇晃惩罚 P0 决赛防翻
怎么做:C3 place phase reward 里加一项:
r_stability = -w_tilt · (cargo_angular_vel³ + cargo_angular_acc²)
为什么这样做:决赛"cargo 翻倒 = 直接失败"是硬约束,不能靠事后判断。立方项在低速时几乎不惩罚(不干扰正常动作),高速时惩罚陡增(强力约束摇晃)。
如果不做:v11a 已经证明过 —— 强调 w_head 导致 rollout 0 cargo tilt 179°,直接翻。
落地:src/rl/forklift_env.py C3 reward 加两行,当天生效。参考 LUT + ETH 联合方案。
分阶段独立 reward,phase 间不共享 shaping P0 v11a 教训
怎么做:C1/C2/C3 各自独立 reward 函数,一个 phase 的参数改动不影响另一个。
为什么这样做:v11a 的直接教训 —— 单参数 w_head 2→5 全局崩(cargo tilt 179°),就是因为多个 phase 共用一个 cost_fn。
如果不做:任何调参都是全局副作用,永远调不完。手调路线的死路。
落地:src/rl/forklift_env.py InsertLift 内部按 fork tip x 坐标分段,分段独立 shaping。参考 LUT 的两阶段方案。
Place 阶段倒数奖励 P1 精度关键
怎么做:C3 place reward 用:
R_place = λ / (d_target + ε) + R_success
其中 ε=0.05m 防除零,λ=1.0 起步。
为什么这样做:决赛要求放置误差 < 10cm,常规 exp(-d) 曲线在 d 已经很小时几乎平掉,算法感觉"再努力也没多少分"就停在 4-5cm;倒数型 1/d 在 d 越小奖励涨得越猛,拉住算法继续精修到 1-2cm。
如果不做:放置精度停在 4-5cm,达不到 10cm 边缘就危险,直接决赛掉分。
落地:5 行 code,C2 收敛后启用。参考 HMER。
Beta 分布 action 参数化 P1 训练稳定性
怎么做:改 brax 的 make_networks,policy head 输出 Beta 参数 (α, β),action 天然取值 [-1, 1]。
为什么这样做:MJX vmap 里 tanh + clip 在训练晚期梯度截断问题明显 —— action 越靠近边界,梯度越小,policy 越难精调。Beta 分布本身就在边界内,不需要 clip,梯度全程完整。
如果不做:训练后期 policy 无法精细调整 action,收敛到次优解。
落地:约 20 行 code(brax 支持 tfp.distributions.Beta),1 天内完成。参考 TU Wien。
One-shot 终止奖励 P2 防抖动
怎么做:C3 phase reward 加:
r_one_shot = -w · ‖action‖² · I[dist < 0.1 ∧ speed < 0.05]
翻译:当距离目标 < 10cm 且速度 < 5cm/s 时,任何动作都被惩罚。
为什么这样做:v10 FSM 用 velocity brake 实现"到位就停",neural policy 也需要类似机制,否则会在目标点附近反复摇摆。
如果不做:policy 到达后仍持续小幅动作,决赛"放置误差"和"稳定性"两项都掉分。
落地:3 行 code。参考 ETH。
Reward 项 curriculum 缓入 P2 训练稳定
怎么做:不是 epoch 0 全部 reward 都上,而是逐步加入。C1 只用 r_progress;C2 加入 r_align + r_lift_dense;C3 再加 r_place + r_stability + r_one_shot。
为什么这样做:多个 reward 项在早期会互相干扰(比如 lift 奖励要求叉齿抬,carrying 奖励要求叉齿下,算法一头雾水)。缓入让 policy 每次只专注一个新目标。
如果不做:训练前期 policy 卡在 local optima,长时间不进步。
落地:配合分阶段 reward 一起改。参考 ETH 的 7 项 curriculum。
BC → PPO 混合预训练 P2 加速收敛
怎么做:用 v10 FSM 生成 10k 演示轨迹(每条 300 步),BC 50 轮预训练 policy,再 PPO fine-tune。
为什么这样做:纯 PPO 从零开始需要 5M+ 步,BC 预训练能把 policy 直接推到 60-70% success 的水平,PPO 再精调到 90%+。也能规避 c2_v5 的 r_lift_dense 梯度稀疏问题。
如果不做:训练时间翻倍,3090 上从 2h 变 4h,迭代速度掉一半。
落地:2-3 天(生成轨迹 + BC 脚本 + brax restore_params)。参考 HMER。
显式能量优化 reward P3 决赛加分
怎么做:C3 完成后加:
R_total = R_success / (1 + 0.1 · E_normalized)
其中 E = Σ|torque · ω|·dt 覆盖底盘 + 升降。
为什么这样做:决赛综合评分包含"作业效率",能量项让 policy 自动学"轻柔的力量" —— 一石二鸟同时优化能耗和成功率。
如果不做:效率分基本靠随机 —— policy 可能选择"猛冲式"动作,能耗高但也没被惩罚。
落地:1 天,C3 收敛后启用。参考 Umeå。
ROS2-Forklift 的 4 种 reward 工厂搬到 MJX P4 baseline 对比
怎么做:把 L2/Nav/Collision/Binary 四种 reward 移植到 src/rl/reward_factory.py,签名从 ROS topic 改成 MJX mjx.Data。
为什么这样做:有对照组 baseline 才能证明我们的自研 reward 更好,论文和答辩都需要这类对比表。
如果不做:训练结果无法量化"我们的 reward 好在哪",答辩缺乏说服力。
落地:1 天。
IsaacSim forklift_b.urdf 转 MJCF P4 备胎
怎么做:手工转 URDF → MJCF,对照 CLAUDE.md 记录的坑点(cylinder→capsule、solver iterations=10、solimp)。
为什么这样做:如果我们自研的 pickup_place.xml 有物理问题(box-box 穿模、接触抖动),NVIDIA 官方 URDF 是最高保真的 fallback。
如果不做:自研 MJCF 若长期有物理稳定性问题,只能反复调试,浪费大量时间。
落地:2-3 天。
🧭 推荐学习路径
按你的角色和目标,给几个不同的读法建议。
🆕 我完全是 RL 新手,只想 30 分钟了解全局
顺序读:三分钟先导 → 关键词速查 → 叉车 pick-place 全景 → 综述结论。跳过所有论文卡片。
如果有兴趣继续,选一篇最想懂的论文,只看它的🟡 一句话总结和🟢 初学者视角两栏。
🎓 我在学 RL,想深入理解 reward 设计
直奔 LUT / TU Wien / ETH / Umeå 四篇 —— reward 公式最详细。特别注意:
- LUT 的两阶段分离(为什么不能一次全上)
- TU Wien 的状态机 reward(为什么用
r_dist·q + (1-r_dist)(1-q)这种交叉项) - ETH 的 One-shot 终止(为什么这是"进入邻域禁动"的关键)
- Umeå 的能量项(为什么用
1/(1+αE)而不是-αE)
🏗️ 我是这个赛题的参赛者,想直接找可用的 idea
只读 综述结论 + 迁移优先级清单。清单里 P0/P1 的四条(立方衰减、分阶段独立 reward、倒数奖励、Beta 分布)加起来约 1 周工作量,能把训练成绩推到当前 baseline 的 2-3 倍。
🔬 我关心 sim2real,想看真机验证的经验
唯一真机重工业验证是 ETH Hydraulic Handler。核心 idea:混合仿真(数据驱动 NN + 解析模型)+ 控制器参数 DR。Toyota 也做了 sim2real 但只到 1/14 缩放叉车,scale-up 未验证。
如果关心视觉感知,读 Lang2Lift(VLM + SAM-2 + FoundationPose 的完整流水线)。
💻 我想直接开始撸代码,有可以 clone 的仓库吗?
是的,读 本地已 clone 2 项。ROS2-Forklift-Simulation 是完整可跑的 Gym 环境(导航任务),IsaacSim-Autonomous-Forklift 提供高保真 URDF 模型。都在本地 reference/ 目录下。
但注意:两个都没有 pretrained 权重,并且没有涉及叉取/搬运/放置的完整链路,只能作为参考。
🔗 参考链接 · References
HMER 天大 arXiv
Multi-Expert Forklift RL 94.2% sim
Toyota Visual Forklift ICRA25
Isaac Sim + zero-shot sim2real 60% real
ADAPT AIT+TU Wien
iSAM2 + Hybrid A* outdoor autonomous
Lang2Lift AIT
Florence-2 + SAM-2 + FoundationPose
Semi-Auto Vision arXiv
YOLOv11 + Optuna + pallet 孔位映射
LUT Log Loading arXiv
Isaac Gym × 1024 + 分阶段 reward 94%
TU Wien Wood-Log ICRA25
MuJoCo + Beta 分布 action 96%
ETH Hydraulic Handler IROS24
12t 真机 + 7 项 curriculum reward
Umeå Forestry Crane IROS21
能量优化 reward,本领域开山之作 97%
ROS2-Forklift-Simulation GitHub
Gazebo 完整 Gym + 4 种 reward
IsaacSim-Autonomous-Forklift GitHub · MIT
NVIDIA forklift_b.urdf + 3 仓库场景
← 返回 VLA Atlas index
本页所属的 VLA 全景索引