# 强化学习-项目实验-自动驾驶小车 **Repository Path**: CeasarSmj/RL_2dauto_drivingproject ## Basic Information - **Project Name**: 强化学习-项目实验-自动驾驶小车 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-25 - **Last Updated**: 2024-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自动驾驶仿真环境 ## 项目简介 本项目是一个基于OpenAI Gym的自动驾驶算法研究仿真平台,实现了Q学习和深度Q网络(DQN)两种强化学习方法。系统支持自定义地图生成和灵活的环境配置。 ## 目录结构 ``` ├── models/ # 模型存储目录 ├── videos/ # 测试视频输出目录 ├── originMaps/ # 原始地图文件 └── maps/ # 处理后的地图数据(地图矩阵和检查点) ``` ### 核心文件 - `environment.py`: 自动驾驶环境核心实现 - `agent_qlearning.py`: Q学习智能体实现 - `agent_dqn.py`: DQN智能体实现 - `train_qlearning.py`: Q学习训练脚本 - `train_dqn.py`: DQN训练脚本 - `test.py`: 模型测试与视频生成脚本 ## 环境配置 ### 依赖安装 ```bash pip install numpy opencv-python torch gym ``` ## 使用指南 ### 1. 模型初始化 ```bash python agent_qlearning.py # 生成Q学习初始模型 python agent_dqn.py # 生成DQN初始模型 ``` ### 2. 模型训练 ```bash python train_qlearning.py # 训练Q学习模型 python train_dqn.py # 训练DQN模型 ``` ### 3. 模型测试 ```bash python test.py # 运行测试并生成视频 ``` ## 技术架构 ### 地图系统 #### 地图生成方式 1. **手动绘制** - 白色:可行驶道路 - 黑色:障碍物 - 绿点:起点 - 蓝点:检查点 - 红点:终点 使用流程: ```python env = DriverEnv() env.ReadMapFromImg() # 读取地图图片 env.saveMapAndNodes() # 保存处理后的地图数据 ``` 2. **随机生成** - 通过`mapGenerator`方法生成 - 可配置参数:道路长度、转角限制、节点数量与间距等 ### 车辆模型 - **形状**:2D矩形(1:2长宽比) - **状态量**:[位置, 角度, 线速度] - **观测量**:[速度, 与下一检查点角度差, 180°雷达扫描数据] - **动作空间**:25维向量,每维包含[线加速度, 转向角] ### 奖励机制 1. 到达检查点奖励 2. 速度惩罚(与速度成正比) 3. 碰撞惩罚(与碰撞速度成正比) 4. 时间惩罚(防止静止不动) ### 智能体实现 基于价值更新公式: ``` Q(s,a) = Q(s,a) + α[r + γ max_{a'} Q(s',a') - Q(s,a)] ``` 训练过程采用渐进变化的随机探索概率和激励函数,从而实现对于agent的引导。 #### 1. Q学习智能体 - 使用Q表存储状态-动作值 - 实时更新价值估计 #### 2. DQN智能体 - 使用神经网络近似Q函数 - 实现经验回放 - 采用目标网络稳定训练