修复了一些问题
本项目面向本地实验场景,提供一个用于密林导航任务的无人机仿真环境,以及围绕该环境构建的 PPO 训练、推理和统一评估工具。
项目当前包含以下能力:
simulator/ ├─ simulator/ │ ├─ simulated.py │ └─ simulated_ppo.py ├─ control_example/ │ └─ keyboard.py ├─ algorithms/ │ ├─ baseline/ │ │ ├─ ppo.py │ │ └─ checkpoints/ │ ├─ adaptive/ │ │ ├─ ppo_adaptive_reward.py │ │ └─ checkpoints/ │ └─ rollout_adaptive/ │ ├─ ppo_rollout_adaptive_reward.py │ └─ checkpoints/ ├─ inference/ │ └─ ppo_infer.py ├─ evaluation/ │ └─ compare_algorithms.py ├─ requirements.txt └─ README.md
simulator/simulated.py
基础仿真器,用于演示无人机的基本动力学、位置控制、速度控制和轨迹跟踪,更适合做控制逻辑观察与交互调试。
UDP 127.0.0.1:8765
simulator/simulated_ppo.py
面向强化学习训练的环境服务。环境通过 TCP 暴露 reset、step、state 等接口,训练、推理和评估脚本均通过该服务与环境通信。
reset
step
state
127.0.0.1:8770
--host
--port
--headless
--regenerate-on-reset
--forest-seed
algorithms/baseline/ppo.py
标准 PPO 基线版本,直接使用环境奖励进行训练。
algorithms/baseline/checkpoints/ppo_forest_latest.pt
algorithms/baseline/checkpoints/ppo_forest_best.pt
algorithms/adaptive/ppo_adaptive_reward.py
状态自适应奖励 PPO。该版本会根据当前观测和历史动作动态调整导航、安全和平滑性相关奖励权重。
algorithms/adaptive/checkpoints/ppo_forest_adaptive_latest.pt
algorithms/adaptive/checkpoints/ppo_forest_adaptive_best.pt
algorithms/rollout_adaptive/ppo_rollout_adaptive_reward.py
Rollout 级自适应奖励 PPO。该版本按整个 rollout 统计信息调整奖励权重,而不是逐步调整,适合与状态自适应版本做对照实验。
algorithms/rollout_adaptive/checkpoints/ppo_forest_rollout_adaptive_latest.pt
algorithms/rollout_adaptive/checkpoints/ppo_forest_rollout_adaptive_best.pt
inference/ppo_infer.py
加载指定模型并在 PPO 环境中运行推理。
evaluation/compare_algorithms.py
对多个 PPO 变体进行统一评估,并输出对比指标;可选导出 JSON 结果。
3.10
推荐使用 conda 创建独立环境:
conda
conda create -n drone-sim python=3.10 -y conda activate drone-sim pip install -r requirements.txt
requirements.txt 当前包含:
requirements.txt
numpy>=1.24,<1.25
pygame>=2.5,<2.7
torch==2.7.1+cu128
python simulator/simulated.py
另开一个终端运行键盘控制示例:
python control_example/keyboard.py
键盘控制说明:
W / S
A / D
R / F
Q / E
H
C
G
T
ESC
python simulator/simulated_ppo.py
无界面模式:
python simulator/simulated_ppo.py --headless
训练标准 PPO:
python algorithms/baseline/ppo.py
训练状态自适应奖励 PPO:
python algorithms/adaptive/ppo_adaptive_reward.py
训练 Rollout 级自适应奖励 PPO:
python algorithms/rollout_adaptive/ppo_rollout_adaptive_reward.py
python inference/ppo_infer.py --model-path algorithms/baseline/checkpoints/ppo_forest_best.pt python inference/ppo_infer.py --model-path algorithms/adaptive/checkpoints/ppo_forest_adaptive_best.pt python inference/ppo_infer.py --model-path algorithms/rollout_adaptive/checkpoints/ppo_forest_rollout_adaptive_best.pt
比较基线 PPO 与状态自适应 PPO:
python evaluation/compare_algorithms.py --episodes 20
比较三种算法:
python evaluation/compare_algorithms.py --episodes 20 --include-rollout-adaptive
统一评估脚本默认输出以下指标:
mean_return
std_return
success_rate
collision_rate
timeout_rate
mean_episode_length
median_episode_length
三个训练脚本都会输出每次 update 的核心训练信息,通常包括:
recent_return
rollout_return
episodes
other_rate
best_episode
kl
自适应奖励版本还会额外输出当前奖励权重及适配器相关信息,便于分析训练动态。
conda activate drone-sim python simulator/simulated.py python control_example/keyboard.py
conda activate drone-sim python simulator/simulated_ppo.py python algorithms/baseline/ppo.py
也可以将最后一步替换为:
python algorithms/adaptive/ppo_adaptive_reward.py python algorithms/rollout_adaptive/ppo_rollout_adaptive_reward.py
conda activate drone-sim python simulator/simulated_ppo.py python inference/ppo_infer.py --model-path <checkpoint>
或:
指定端口启动 PPO 环境:
python simulator/simulated_ppo.py --port 8771
在指定端口训练 Rollout 级自适应奖励 PPO:
python algorithms/rollout_adaptive/ppo_rollout_adaptive_reward.py --port 8771 --total-updates 1200 --rollout-steps 1280
导出统一评估结果到 JSON:
python evaluation/compare_algorithms.py --episodes 20 --include-rollout-adaptive --json-out result.json
pygame
如果后续准备把项目开放给更多协作者,建议继续补充以下内容:
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
无人机强化学习仿真项目
本项目面向本地实验场景,提供一个用于密林导航任务的无人机仿真环境,以及围绕该环境构建的 PPO 训练、推理和统一评估工具。
项目当前包含以下能力:
项目结构
模块说明
simulator/simulated.py基础仿真器,用于演示无人机的基本动力学、位置控制、速度控制和轨迹跟踪,更适合做控制逻辑观察与交互调试。
UDP 127.0.0.1:8765simulator/simulated_ppo.py面向强化学习训练的环境服务。环境通过 TCP 暴露
reset、step、state等接口,训练、推理和评估脚本均通过该服务与环境通信。127.0.0.1:8770--host、--port、--headless、--regenerate-on-reset、--forest-seedalgorithms/baseline/ppo.py标准 PPO 基线版本,直接使用环境奖励进行训练。
algorithms/baseline/checkpoints/ppo_forest_latest.ptalgorithms/baseline/checkpoints/ppo_forest_best.ptalgorithms/adaptive/ppo_adaptive_reward.py状态自适应奖励 PPO。该版本会根据当前观测和历史动作动态调整导航、安全和平滑性相关奖励权重。
algorithms/adaptive/checkpoints/ppo_forest_adaptive_latest.ptalgorithms/adaptive/checkpoints/ppo_forest_adaptive_best.ptalgorithms/rollout_adaptive/ppo_rollout_adaptive_reward.pyRollout 级自适应奖励 PPO。该版本按整个 rollout 统计信息调整奖励权重,而不是逐步调整,适合与状态自适应版本做对照实验。
algorithms/rollout_adaptive/checkpoints/ppo_forest_rollout_adaptive_latest.ptalgorithms/rollout_adaptive/checkpoints/ppo_forest_rollout_adaptive_best.ptinference/ppo_infer.py加载指定模型并在 PPO 环境中运行推理。
evaluation/compare_algorithms.py对多个 PPO 变体进行统一评估,并输出对比指标;可选导出 JSON 结果。
环境要求
3.10安装依赖
推荐使用
conda创建独立环境:requirements.txt当前包含:numpy>=1.24,<1.25pygame>=2.5,<2.7torch==2.7.1+cu128快速开始
1. 启动基础仿真器
另开一个终端运行键盘控制示例:
键盘控制说明:
W / S:前进 / 后退A / D:左移 / 右移R / F:上升 / 下降Q / E:偏航左转 / 右转H:悬停C:圆轨迹飞行G:飞到固定点T:重置ESC:退出2. 启动 PPO 环境服务
无界面模式:
3. 训练模型
训练标准 PPO:
训练状态自适应奖励 PPO:
训练 Rollout 级自适应奖励 PPO:
4. 运行推理
5. 统一评估
比较基线 PPO 与状态自适应 PPO:
比较三种算法:
评估指标
统一评估脚本默认输出以下指标:
mean_returnstd_returnsuccess_ratecollision_ratetimeout_ratemean_episode_lengthmedian_episode_length训练日志
三个训练脚本都会输出每次 update 的核心训练信息,通常包括:
recent_returnrollout_returnepisodessuccess_ratecollision_ratetimeout_rateother_ratebest_episodekl自适应奖励版本还会额外输出当前奖励权重及适配器相关信息,便于分析训练动态。
推荐使用流程
控制演示
强化学习训练
也可以将最后一步替换为:
推理或评估
或:
常用命令
指定端口启动 PPO 环境:
在指定端口训练 Rollout 级自适应奖励 PPO:
导出统一评估结果到 JSON:
注意事项
simulator/simulated_ppo.py--port保持一致pygame,服务器或远程环境建议使用--headless后续改进建议
如果后续准备把项目开放给更多协作者,建议继续补充以下内容: