Files
MAGAIL4AutoDrive/CHANGELOG.md

137 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 更新日志
## 2025-01-20 问题修复与优化
### ✅ 已解决的问题
#### 1. 车辆生成位置偏差问题
**问题描述:** 部分车辆生成于草坪、停车场等非车道区域
**解决方案:**
- 实现 `_is_position_on_lane()` 方法:检测位置是否在有效车道上
- 实现 `_filter_valid_spawn_positions()` 方法:自动过滤非车道区域车辆
- 支持容差参数默认3米处理边界情况
-`reset()` 时自动执行过滤,并输出统计信息
**配置参数:**
```python
"filter_offroad_vehicles": True, # 启用/禁用过滤
"lane_tolerance": 3.0, # 容差范围(米)
"max_controlled_vehicles": 10, # 最大车辆数限制
```
#### 2. 红绿灯信息采集问题
**问题描述:**
- 部分红绿灯状态为 None
- 车道分段时部分车辆无法获取红绿灯状态
**解决方案:**
- 实现 `_get_traffic_light_state()` 方法,采用双重检测策略
- 方法1优先从导航模块获取当前车道直接查询高效
- 方法2兜底遍历所有车道匹配位置处理特殊情况
- 完善异常处理None 状态返回 0无红绿灯
- 返回值0=无/未知, 1=绿灯, 2=黄灯, 3=红灯
#### 3. 性能优化问题
**问题描述:** FPS只有15帧CPU利用率不到20%
**解决方案:**
- 创建 `run_multiagent_env_fast.py`激光雷达优化版30-60 FPS
- 创建 `run_multiagent_env_parallel.py`多进程并行版300-600 steps/s
- 提供详细的性能优化文档
### 📝 修改的文件
1. **Env/scenario_env.py**
- 新增 `_is_position_on_lane()` 方法
- 新增 `_filter_valid_spawn_positions()` 方法
- 新增 `_get_traffic_light_state()` 方法
- 更新 `default_config()` 添加配置参数
- 更新 `reset()` 调用过滤逻辑
- 更新 `_get_all_obs()` 使用新的红绿灯检测方法
2. **Env/run_multiagent_env.py**
- 添加车道过滤配置参数
3. **Env/run_multiagent_env_fast.py**
- 添加车道过滤配置
- 性能优化配置
4. **Env/run_multiagent_env_parallel.py**
- 添加车道过滤配置
- 多进程并行实现
5. **README.md**
- 更新问题说明,添加解决方案
- 添加配置示例和测试方法
- 添加问题解决总结
6. **新增文件**
- `Env/test_lane_filter.py`:功能测试脚本
### 🧪 测试方法
```bash
# 测试车道过滤和红绿灯检测功能
python Env/test_lane_filter.py
# 运行标准版本(带过滤和可视化)
python Env/run_multiagent_env.py
# 运行高性能版本(适合训练)
python Env/run_multiagent_env_fast.py
# 运行多进程并行版本(最高吞吐量)
python Env/run_multiagent_env_parallel.py
```
### 💡 使用建议
1. **调试阶段**:使用 `run_multiagent_env.py`,启用渲染和车道过滤
2. **训练阶段**:使用 `run_multiagent_env_fast.py`,关闭渲染,启用所有优化
3. **大规模训练**:使用 `run_multiagent_env_parallel.py`充分利用多核CPU
### ⚙️ 配置说明
所有配置参数都可以在创建环境时通过 `config` 字典传递:
```python
env = MultiAgentScenarioEnv(
config={
# 基础配置
"data_directory": "...",
"is_multi_agent": True,
"horizon": 300,
# 车道过滤(新增)
"filter_offroad_vehicles": True, # 启用车道过滤
"lane_tolerance": 3.0, # 容差3米
"max_controlled_vehicles": 10, # 最多10辆车
# 性能优化
"use_render": False,
"decision_repeat": 5,
...
},
agent2policy=your_policy
)
```
### 🔍 技术细节
**车道检测逻辑:**
1. 使用 `lane.lane.point_on_lane()` 精确检测
2. 使用 `lane.local_coordinates()` 计算横向距离
3. 支持容差参数处理边界情况
**红绿灯检测逻辑:**
1. 优先从 `vehicle.navigation.current_lane` 获取
2. 失败时遍历所有车道查找
3. 所有异常均有保护,确保稳定性
**性能优化原理:**
- 减少激光束数量降低计算量
- 多进程绕过Python GIL限制
- 充分利用多核CPU