# 从零开始训练AI火箭着陆：PPO强化学习实战解析

> 一个完整的强化学习项目，使用PPO算法在Unity 3D环境中训练神经网络实现火箭软着陆，包含行为克隆预训练、奖励工程优化和真实物理模拟。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-06-11T01:13:56.000Z
- 最近活动: 2026-06-11T01:19:57.490Z
- 热度: 150.9
- 关键词: PPO, 强化学习, Unity, PyTorch, 行为克隆, 火箭着陆, 物理模拟, 神经网络
- 页面链接: https://www.zingnex.cn/forum/thread/ai-ppo
- Canonical: https://www.zingnex.cn/forum/thread/ai-ppo
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**: MichaelLam71
- **来源平台**: GitHub
- **原始标题**: rocket-landing-ppo
- **原始链接**: https://github.com/MichaelLam71/rocket-landing-ppo
- **发布时间**: 2025年

## 项目概述

这是一个令人印象深刻的强化学习实战项目，作者使用Proximal Policy Optimization（PPO）算法，在Unity 3D环境中训练神经网络控制火箭完成自杀式减速下降（suicide burn）并实现软着陆。项目完整展示了从行为克隆预训练到PPO微调的两阶段训练流程，以及如何处理稀疏奖励、物理模拟和跨语言通信等核心挑战。

## 核心架构设计

项目采用Python+Unity的混合架构：Python端负责所有机器学习逻辑（PyTorch实现），Unity端处理物理模拟和渲染，两者通过TCP套接字（端口5005）进行实时通信。Python作为服务器发送3个浮点数（推力、RCS X轴、RCS Z轴），Unity作为客户端返回17个浮点数（15个观测值+1个奖励+1个结束标志）。

这种架构的优势在于：Python可以充分利用PyTorch生态进行神经网络训练，而Unity提供高质量的3D物理模拟环境。重置信号通过特殊的推力值（-999）触发，实现了训练回合的自动化管理。

## 两阶段训练策略

### 第一阶段：行为克隆（Behavioral Cloning）

作者首先实现了一个PID控制器，使用自杀式减速算法控制火箭着陆。每一次成功的着陆过程都会被记录为（观测，动作）训练对，然后使用监督学习（MSE损失）训练神经网络模仿PID控制器的行为。

这种预训练策略的关键价值在于：它让神经网络获得了一个有竞争力的初始策略，无需从零探索稀疏奖励空间。只有成功着陆的回合才会被保存到训练数据中，确保了训练数据的质量。

### 第二阶段：PPO微调

在行为克隆的基础上，作者加载预训练网络并使用PPO进行强化学习微调。奖励设计采用终端奖励机制：成功着陆获得+100到+300的奖励（根据速度、倾斜度、距离计算额外奖励），坠毁则获得-100惩罚。

作者特别强调了奖励工程的重要性。早期尝试使用密集奖励（奖励接近着陆台的距离）导致了两个失败模式：悬停（agent通过保持存活来获取每步小奖励）和猛撞（在高速模拟中，快速接近着陆台能获得更多单位时间的距离奖励）。终端奖励机制解决了这些问题。

## 观测与动作空间设计

观测空间包含15个归一化数值：位置（x,y,z）、速度（x,y,z）、向上向量（编码倾斜度）、角速度（x,y,z）、到着陆台的向量。所有值都被裁剪到[-5,5]范围，确保神经网络的输入稳定性。

动作空间是3维连续向量：主引擎推力（映射到[0,1]）、RCS X轴力矩（控制俯仰）、RCS Z轴力矩（控制滚转）。这种设计模拟了真实火箭的姿态控制系统。

## 物理模拟细节

项目包含了丰富的物理细节：燃料消耗基于比冲计算（质量流率=推力/(Isp*g0)），随着燃料消耗总质量减少；空气阻力遵循标准阻力公式（F=0.5*rho*Cd*A*v^2），与速度方向相反；惯性张量被手动设置为对称值以消除不对称火箭模型几何带来的交叉轴耦合。

这些细节不仅增加了模拟的真实性，也为神经网络学习提供了更丰富的物理信号。火箭的干质量22000kg，燃料质量2000kg，推力重量比2.0，最大推力470880N。

## PPO算法实现要点

作者实现了标准的PPO算法，包含以下关键组件：

- **双网络架构**：Actor网络输出高斯分布策略，Critic网络估计状态值函数
- **GAE优势估计**：使用广义优势估计（lambda=0.95）计算每个动作的优势
- **裁剪目标函数**：策略更新时概率比被裁剪到[0.95,1.05]防止破坏性大更新
- **熵奖励**：防止策略过早收敛到确定性动作
- **梯度裁剪**：限制异常批次的更新幅度
- **学习率线性衰减**：训练过程中逐渐降低学习率

网络架构采用15输入→256隐藏层→256隐藏层→输出的结构，Actor输出3维动作分布，Critic输出1维状态值。

## 训练曲线与结果

项目包含了完整的训练可视化：行为克隆损失曲线、PPO训练曲线、以及训练日志的JSON格式保存。从作者的经验来看，直接从头训练PPO无法成功，因为稀疏奖励对于随机策略来说太难探索；而行为克隆提供了有效的起点，让PPO能够在此基础上优化着陆质量（更软、更直立）并泛化到更难的条件（更大倾斜、位置偏移、初始速度）。

## 实践启示

这个项目为强化学习实践者提供了多个宝贵经验：

1. **预训练的价值**：对于稀疏奖励任务，先用专家策略进行行为克隆可以显著加速学习
2. **奖励工程的艺术**：密集奖励可能导致意想不到的行为模式，终端奖励在某些场景下更稳定
3. **物理模拟的真实性**：适当的物理细节可以提供更丰富的学习信号
4. **混合架构的优势**：利用各自语言的优势（Python的ML生态+Unity的渲染物理）

对于想要入门强化学习的开发者来说，这是一个极佳的参考项目，代码结构清晰，文档详尽，涵盖了从环境设计到算法实现的完整流程。
