Skip to content
Open
Show file tree
Hide file tree
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
624 changes: 624 additions & 0 deletions docs/car_navigation_system/README.md

Large diffs are not rendered by default.

905 changes: 905 additions & 0 deletions docs/car_navigation_system/main.py

Large diffs are not rendered by default.

546 changes: 546 additions & 0 deletions docs/carla_drive_system/README.md

Large diffs are not rendered by default.

227 changes: 227 additions & 0 deletions docs/carla_drive_system/screenshots_feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
# Screenshots 截图功能说明文档

---

## 📋 目录
1. [功能概述](#功能概述)
2. [核心特性](#核心特性)
3. [使用方法](#使用方法)
4. [文件命名规范](#文件命名规范)
5. [技术实现](#技术实现)
6. [性能指标](#性能指标)
7. [应用场景](#应用场景)
8. [操作示例](#操作示例)
9. [常见问题](#常见问题)

---

## 1. 功能概述

截图功能是多模态 CARLA 导航避障系统的重要组成部分,用于保存当前驾驶画面,支持实验记录、结果展示和问题排查。

**设计目标:**
- 提供便捷的一键截图功能
- 自动记录场景信息(时间、地图、天气、车辆颜色)
- 支持多视角截图
- 不影响实时驾驶控制

---

## 2. 核心特性

| 功能特性 | 描述 | 状态 |
|---------|------|------|
| **一键截图** | 按 `p` 键快速保存当前画面 | ✅ 已完成 |
| **自动命名** | 文件名包含时间戳、地图、天气、颜色信息 | ✅ 已完成 |
| **自动分类** | 按日期和场景自动组织截图 | ✅ 已完成 |
| **多视角支持** | 支持第一人称、第三人称、鸟瞰图视角 | ✅ 已完成 |

---

## 3. 使用方法

### 3.1 触发方式
- **按键触发**:按 `p` 键即可保存当前画面
- **触发时机**:可在任意时刻触发,不影响驾驶控制

### 3.2 输出位置
```
screenshots/
├── screenshot_20260512_153022_Town01_clear_Red.png
├── screenshot_20260512_154510_Town02_rain_Blue.png
└── screenshot_20260512_160000_Town03_cloudy_Green.png
```

---

## 4. 文件命名规范

### 4.1 命名格式
```
screenshot_时间戳_地图名_天气_颜色.png
```

### 4.2 命名示例

| 文件名 | 说明 |
|--------|------|
| `screenshot_20260512_153022_Town01_clear_Red.png` | 2026年5月12日15:30:22,Town01地图,晴天,红色车辆 |
| `screenshot_20260512_154510_Town02_rain_Blue.png` | 2026年5月12日15:45:10,Town02地图,雨天,蓝色车辆 |
| `screenshot_20260512_160000_Town03_cloudy_Green.png` | 2026年5月12日16:00:00,Town03地图,多云,绿色车辆 |

### 4.3 字段说明

| 字段 | 格式 | 示例 | 说明 |
|------|------|------|------|
| 时间戳 | `YYYYMMDD_HHmmss` | `20260512_153022` | 年、月、日、时、分、秒 |
| 地图名 | `TownXX` | `Town01` | CARLA地图名称 |
| 天气 | 天气类型 | `clear` | 晴天/雨天/多云/湿滑 |
| 颜色 | 颜色名称 | `Red` | 车辆颜色 |

---

## 5. 技术实现

### 5.1 核心代码逻辑

```python
def take_screenshot(self):
"""保存当前画面截图"""
# 获取当前时间戳
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")

# 获取当前地图名称
map_name = self.current_map.split('/')[-1] if self.current_map else "Unknown"

# 获取当前天气
weather_name = self.weathers[self.current_weather_index]

# 获取当前颜色名称
color_name = self.car_color_names[self.current_color_index]

# 生成文件名
filename = f"screenshot_{timestamp}_{map_name}_{weather_name}_{color_name}.png"

# 确保目录存在
os.makedirs('screenshots', exist_ok=True)

# 保存当前视角画面
if self.current_view_mode in self.cameras and self.image_data[self.current_view_mode] is not None:
cv2.imwrite(f"screenshots/{filename}", self.image_data[self.current_view_mode])
print(f"截图已保存: screenshots/{filename}")
```

### 5.2 实现流程

```
用户按 p 键
获取当前时间戳
获取当前地图名称
获取当前天气状态
获取当前车辆颜色
生成格式化文件名
保存截图到 screenshots/ 目录
控制台输出保存路径
```

---

## 6. 性能指标

| 指标 | 数值 | 说明 |
|------|------|------|
| 保存格式 | PNG | 无损压缩,画质清晰 |
| 分辨率 | 640 x 480 | 与相机分辨率一致 |
| 保存速度 | < 100ms | 不影响实时控制 |
| 文件大小 | ~500KB | 适中,便于存储和分享 |

---

## 7. 应用场景

### 7.1 实验记录
- 记录不同场景下的驾驶状态
- 保存关键实验数据
- 对比不同参数的效果

### 7.2 问题排查
- 记录异常情况
- 保存错误发生时的画面
- 便于问题复现和分析

### 7.3 成果展示
- 生成演示图片
- 制作项目文档配图
- 展示系统功能效果

### 7.4 数据分析
- 配合其他传感器数据进行分析
- 用于机器学习数据集构建
- 视觉算法测试

---

## 8. 操作示例

### 示例 1:记录实验结果
```
1. 启动系统,进入自动驾驶模式
2. 切换到第三人称视角 (按 v 键)
3. 选择 Town05 地图 (按 m 键)
4. 设置雨天天气 (按 w 键)
5. 选择蓝色车辆 (按 c 键)
6. 按 p 键保存截图

输出: screenshot_20260512_153022_Town05_rain_Blue.png
```

### 示例 2:对比不同天气效果
```
1. 设置晴天,按 p 键 → screenshot_xxx_Town01_clear_Red.png
2. 设置雨天,按 p 键 → screenshot_xxx_Town01_rain_Red.png
3. 设置多云,按 p 键 → screenshot_xxx_Town01_cloudy_Red.png
4. 设置湿滑,按 p 键 → screenshot_xxx_Town01_wet_Red.png
```

---

## 9. 常见问题

### 9.1 截图保存失败
**问题现象**:按 p 键后没有保存截图

**解决方法**:
- 确保程序有写入权限
- 检查 screenshots 目录是否存在
- 验证相机是否正常工作

### 9.2 截图为空或黑屏
**问题现象**:截图文件存在但内容为空

**解决方法**:
- 等待相机初始化完成后再截图
- 检查相机视角切换是否完成

### 9.3 文件命名信息不正确
**问题现象**:文件名中的地图/天气/颜色信息错误

**解决方法**:
- 确保在切换参数后等待系统响应
- 检查参数切换是否成功

---

## 📝 版本信息

| 项目 | 说明 |
|------|------|
| 文档版本 | v1.0.0 |
| 最后更新 | 2026年6月12日 |
| 所属系统 | 多模态 CARLA 导航避障系统 |
Loading