Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
354 changes: 162 additions & 192 deletions src/car_navigation_system/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,215 +3,185 @@
## 项目简介
本项目基于 CARLA 模拟器与神经网络技术,实现了具备多传感器融合能力的智能车辆导航避障系统。系统集成前视摄像头、第三视角摄像头与障碍物检测模块,通过多模态数据感知环境,结合神经网络与传统控制算法,实现车辆自主行驶与障碍物规避功能。

## 核心功能
- **多视角摄像头**:支持第一人称、第三人称、鸟瞰图三种视角切换
- **路点跟踪控制**:基于 CARLA 地图路点的经典自动驾驶控制算法
- **实时状态显示**:叠加车速、油门、转向值、帧数等关键信息
- **地图切换**:支持 Town01-Town07 多地图切换
- **天气系统**:支持晴天、雨天、多云、湿滑四种天气预设
- **车辆颜色切换**:支持红、蓝、绿、黄、品红等 10 种颜色
- **夜晚模式**:一键切换昼夜模式,自动开启/关闭近光灯
- **车辆款式切换**:支持特斯拉 Model3、雪佛兰 Impala、福特 Mustang 等 5 种车辆模型
- **轨迹导航显示**:实时生成道路拓扑地图,显示车辆行驶轨迹(最多 500 个轨迹点)
- **截图功能**:按 P 键保存当前画面,自动命名包含时间戳、地图、天气、颜色信息
- **紧急停止**:按 S 键实现紧急制动
- **倒车模式**:支持手动倒车控制(速度 < 1km/h 时可切换)

## 项目结构
## 🎯 核心功能

| 功能模块 | 描述 | 状态 |
|---------|------|------|
| **多模态感知** | 集成 RGB 摄像头(前视 + 第三人称 + 鸟瞰图) | ✅ 已完成 |
| **智能控制** | 基于路点跟踪的控制算法,支持自动驾驶 | ✅ 已完成 |
| **车辆品牌切换** | 支持10种品牌车型,一键切换 | ✅ 已完成 |
| **环境切换** | 多地图、多天气模式切换 | ✅ 已完成 |
| **可视化** | 实时显示摄像头画面和状态信息 | ✅ 已完成 |
| **截图功能** | 自动命名保存当前画面 | ✅ 已完成 |

## 📁 项目结构
```
car_navigation_system/
├── README.md # 项目说明文档
├── main.py # 主程序文件(简化修复版)
└── screenshots/ # 截图保存目录(运行时自动创建)
├── main.py # 主程序文件(包含完整功能实现)
├── screenshots/ # 截图保存目录
├── sync_main.bat # Git同步脚本
└── check_blueprints.py # 车辆蓝图检测工具
```

## 环境配置
- **操作系统**:Windows 10/11 或 Ubuntu 20.04/22.04
- **Python 版本**:3.7+ (推荐 3.10)
- **核心框架**:PyTorch
- **模拟器**:CARLA 3.11 或兼容版本
## 🛠️ 环境配置

## 依赖安装
1. **安装 CARLA 模拟器**
- 从 [CARLA 官网](https://carla.org/) 下载并安装 CARLA 3.11
- 或使用项目提供的 CARLA 安装包
| 依赖项 | 要求 |
|-------|------|
| 操作系统 | Windows 10/11 或 Ubuntu 20.04/22.04 |
| Python 版本 | 3.7+ (推荐 3.10) |
| CARLA 版本 | 3.11 或兼容版本 |
| 核心框架 | PyTorch, OpenCV, NumPy |

2. **安装 Python 依赖**
```bash
pip install carla numpy opencv-python matplotlib torch
```
## 📦 依赖安装

## 快速启动
```bash
pip install carla numpy opencv-python matplotlib torch
```

## 🚀 快速启动

### 步骤 1:启动 CARLA 模拟器
- **Windows**:
```bash
CarlaUE4.exe -windowed -ResX=800 -ResY=600
```
- **Ubuntu**:
```bash
./CarlaUE4.sh -windowed -ResX=800 -ResY=600
```

### 步骤 2:运行导航避障系统
1. **进入项目目录**
```bash
cd d:\nn\src\car_navigation_system
```

2. **运行主程序**
```bash
python main.py
```

### 步骤 3:操作说明
```bash
# Windows
CarlaUE4.exe -windowed -ResX=800 -ResY=600

# Ubuntu
./CarlaUE4.sh -windowed -ResX=800 -ResY=600
```

### 步骤 2:运行系统
```bash
cd f:\nn\src\car_navigation_system
python main.py
```

## 🎮 操作说明

| 按键 | 功能描述 |
|------|----------|
| q | 退出系统 |
| r | 重置车辆位置(随机选择出生点) |
| s | 紧急停止(手刹制动) |
| x | 切换倒车/前进模式(速度 < 1km/h 时生效) |
| v | 切换视角(第三人称→第一人称→鸟瞰图循环) |
| m | 切换地图(Town01-Town07 循环) |
| w | 切换天气(晴天→雨天→多云→湿滑循环) |
| c | 切换车辆颜色(10 种颜色循环) |
| p | 保存当前画面截图(自动保存到 screenshots/ 目录) |
| l | 切换夜晚模式(自动打开/关闭近光灯) |
| u | 切换车辆款式(5 种车型循环) |
| d | 切换导航轨迹显示(开启/关闭) |

## 系统架构

### 1. 环境初始化模块
- 连接 CARLA 服务器(默认 localhost:2000)
- 加载地图(默认 Town01),使用异步模式确保连接稳定
- 支持地图动态切换(Town01-Town07)

### 2. 智能体生成模块
- **主车辆**:默认特斯拉 Model3,关闭自动驾驶,由自定义控制器控制
- **NPC车辆**:随机生成少量NPC车辆,开启CARLA原生自动驾驶
- 支持5种车辆模型切换(特斯拉Model3、雪佛兰Impala、福特Mustang、奔驰Coupe、日产Patrol)

### 3. 传感器系统
- **多视角摄像头**:支持第一人称(驾驶座视角)、第三人称(车后上方)、鸟瞰图(车辆正上方30米)三种视角
- **图像数据回调**:实时转换 CARLA 图像数据为 OpenCV 格式
- **视角动态切换**:运行时可切换不同视角

### 4. 控制系统(SimpleController)
- **路点跟踪控制**:基于 CARLA 地图路点的经典自动驾驶控制算法
- **速度控制**:目标速度 50 km/h,自动调整油门和刹车
- **转向控制**:根据目标路点计算最优转向角度(最大转向角 ±0.5)
- **倒车模式**:支持手动切换倒车控制

### 5. 可视化与监控
- 实时显示当前视角画面
- 叠加显示:车速、油门、转向值、帧数、当前视角、地图名称、天气、车辆颜色、车辆款式、轨迹状态
- 每100帧在控制台输出一次运行状态

### 6. 天气与环境系统
- **天气预设**:支持晴天(ClearNoon)、雨天(HardRainNoon)、多云(CloudyNoon)、湿滑(WetNoon)
- **夜晚模式**:一键切换昼夜,自动调整天气参数(云层80%、雾密度30%、太阳高度角-30°),自动控制近光灯开关

### 7. 车辆管理系统
- **颜色切换**:支持10种颜色(红、蓝、绿、黄、品红、青、紫、橙、灰、白)
- **款式切换**:切换车辆模型时保持颜色和位置
- **自动重建**:切换后自动重建相机和控制器

### 8. 轨迹导航系统
- **拓扑地图生成**:从地图数据实时生成道路拓扑图像
- **轨迹记录**:最多记录500个轨迹点
- **小地图显示**:在画面右上角显示200x200小地图,黄色线条显示轨迹,红色点标记当前位置

### 9. 截图系统
- 按 P 键保存当前画面
- 自动命名格式:`screenshot_时间戳_地图名_天气_颜色.png`
- 自动创建 screenshots/ 目录

### 10. 容错与恢复
- 相机设置失败时继续运行(仅影响可视化)
- 车辆生成失败时自动清理现有车辆并重新尝试
- 地图切换失败时自动回退到 Town01
- 异常情况时优雅退出并清理资源

## 技术特点
- **模块化设计**:`SimpleDrivingSystem` 主类包含连接、车辆生成、相机设置、控制等独立模块
- **鲁棒性强**:车辆生成失败自动清理重试,地图切换失败自动回退,相机失败不影响核心功能
- **实时性能**:优化的控制循环(每帧约50ms),仅处理当前视角的相机数据
- **灵活配置**:支持动态切换地图、天气、车辆颜色和款式
- **用户友好**:丰富的状态显示,清晰的控制台提示,简洁的键盘操作
- **可扩展性**:预留了控制器接口,便于后续扩展神经网络控制算法

## 截图功能
按 `p` 键保存当前画面截图,自动命名格式:
| `q` | 退出系统 |
| `r` | 重置车辆位置 |
| `s` | 紧急停止 |
| `x` | 切换倒车/前进模式 |
| `v` | 切换视角(第一人称/第三人称/鸟瞰图) |
| `m` | 切换地图 |
| `w` | 切换天气 |
| `c` | 切换车辆颜色 |
| `b` | 切换车辆品牌 |
| `p` | 保存当前画面截图 |

## 🌟 车辆品牌切换功能

按 `b` 键循环切换车辆品牌,支持以下10种车型:

| 编号 | 品牌型号 | 蓝图名称 |
|------|----------|----------|
| 1 | Tesla Model3 | `vehicle.tesla.model3` |
| 2 | Ford Mustang | `vehicle.ford.mustang` |
| 3 | Audi TT | `vehicle.audi.tt` |
| 4 | Mercedes Coupe | `vehicle.mercedes.coupe` |
| 5 | Jeep Wrangler Rubicon | `vehicle.jeep.wrangler_rubicon` |
| 6 | Nissan Patrol | `vehicle.nissan.patrol` |
| 7 | Audi e-tron | `vehicle.audi.etron` |
| 8 | Lincoln MKZ 2020 | `vehicle.lincoln.mkz_2020` |
| 9 | Chevrolet Impala | `vehicle.chevrolet.impala` |
| 10 | BMW Grand Tourer | `vehicle.bmw.grandtourer` |

**功能特点:**
- ✅ 切换时保留当前车辆颜色设置
- ✅ 自动重新设置相机和控制器
- ✅ 控制台显示品牌选择菜单
- ✅ 所有蓝图均已验证可用

## 📷 截图功能

按 `p` 键保存当前画面,自动命名格式:
```
screenshot_时间戳_地图名_天气_颜色.png
```
示例:`screenshot_20260508_204930_Town01_Clear_Red.png`
示例:`screenshot_20260512_153022_Town01_clear_Red.png`

## 🌍 支持的地图
- Town01 ~ Town07(共7个地图)

## 常见问题
## 🌤️ 支持的天气
- 晴天 (Clear)
- 雨天 (Rain)
- 多云 (Cloudy)
- 湿滑 (Wet)

### 1. 连接 CARLA 服务器失败
- 确保 CARLA 模拟器正在运行
## 🔧 技术架构

```
┌─────────────────────────────────────────────────────┐
│ 控制系统 │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 路点跟踪 │ │ 速度控制 │ │
│ │ 转向计算 │ │ 油门/刹车 │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ └────────┬───────┘ │
│ ▼ │
├─────────────────────────────────────────────────────┤
│ 传感器层 │
│ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │
│ │ 第一人称相机│ │第三人称相机 │ │ 鸟瞰图相机│ │
│ └─────────────┘ └─────────────┘ └───────────┘ │
├─────────────────────────────────────────────────────┤
│ CARLA 模拟器 │
└─────────────────────────────────────────────────────┘
```

## 📊 性能指标

| 指标 | 数值 |
|------|------|
| 控制频率 | 30 Hz |
| 相机分辨率 | 640 x 480 |
| 最大车速 | 50 km/h |
| NPC车辆数 | 2辆 |

## ❓ 常见问题

### 连接失败
- 确保 CARLA 服务器正在运行
- 检查端口是否为 2000
- 验证地图是否可用

### 2. 车辆生成失败
### 车辆生成失败
- 系统会自动清理并重新尝试
- 可能是出生点被占用
- 系统会自动清理现有车辆并重新尝试

### 3. 相机设置失败
- 可能是资源不足
- 系统会在相机失败时继续运行,仅影响可视化

## 贡献指南

### 提交代码
1. Fork 本项目
2. 创建 feature 分支
3. 提交修改
4. 发起 Pull Request

### 代码规范
- 遵循 PEP 8 代码风格
- 添加适当的注释
- 确保代码可维护性

### 功能扩展
- 可以添加更多传感器类型
- 实现神经网络控制器
- 增加更多地图支持
- 添加更复杂的避障算法

## 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。

## 联系方式
- **邮箱**:2985835251@qq.com
- **项目地址**:[GitHub 仓库链接]

## 更新日志

### v1.2.0
- 添加夜晚模式(按L键切换),自动开启/关闭近光灯
- 添加车辆款式切换功能(按U键切换),支持5种车辆模型
- 添加轨迹导航显示功能(按D键切换)
- 实现道路拓扑地图生成
- 在画面右上角显示小地图和行驶轨迹
- 优化车辆切换时的稳定性和错误处理

### v1.1.0
- 添加多视角切换功能(第一人称/第三人称/鸟瞰图)
- 添加地图切换功能
- 添加天气切换功能
- 添加车辆颜色切换功能
- 实现截图功能(按p键保存)
- 优化倒车控制功能

### v1.0.0
- 初始化项目
- 实现基本的自动驾驶功能
- 添加第三视角摄像头
- 实现路点跟踪控制算法
- 添加NPC车辆生成
- 实现车辆重置功能
- 添加紧急停止功能

### 车辆切换崩溃
- 所有车辆蓝图均已验证可用
- 确保 CARLA 版本兼容

## 📜 许可证
MIT License

## 📧 联系方式
- 邮箱:2985835251@qq.com
- 项目地址:[GitHub Repository]

## 📅 更新日志

### v1.2.0 (2026-06)
- ✨ 添加车辆品牌切换功能(支持10种车型)
- ✨ 实现品牌切换菜单界面
- ✨ 切换时保留颜色设置
- ✅ 所有车辆蓝图验证通过

### v1.1.0 (2026-05)
- ✨ 添加多视角切换(第一人称/第三人称/鸟瞰图)
- ✨ 添加地图切换功能
- ✨ 添加天气切换功能
- ✨ 添加车辆颜色切换功能
- ✨ 实现截图功能(按p键保存)
- 🔧 优化倒车控制

### v1.0.0 (2026-05)
- ✨ 初始化项目
- ✨ 实现基本自动驾驶功能
- ✨ 添加第三视角摄像头
- ✨ 实现路点跟踪控制算法
- ✨ 添加NPC车辆生成
- ✨ 实现车辆重置和紧急停止功能