diff --git a/src/car_navigation_system/README.md b/src/car_navigation_system/README.md index 90689776cb..56d69f26b3 100644 --- a/src/car_navigation_system/README.md +++ b/src/car_navigation_system/README.md @@ -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车辆生成 +- ✨ 实现车辆重置和紧急停止功能