# 故障排查案例库

## 使用说明

本案例库记录J6B泊车系统常见故障的排查步骤和解决方案。

**案例格式**：
```
【故障现象】
【错误日志】
【根本原因】
【解决方法】
【预防措施】
```

---

## 案例库索引

| 编号 | 故障类型 | 难度 | 状态 |
|------|----------|------|------|
| T001 | 感知丢失目标 | ⭐ | 已解决 |
| T002 | 规划失败 | ⭐⭐ | 已解决 |
| T003 | 定位漂移 | ⭐⭐⭐ | 已解决 |
| T004 | 进程崩溃 | ⭐⭐ | 已解决 |
| T005 | 系统卡顿 | ⭐⭐ | 已解决 |
| T006 | CAN通信异常 | ⭐⭐ | 进行中 |
| T007 | 内存不足 | ⭐⭐⭐ | 待验证 |
| T008 | 日志丢失 | ⭐ | 待验证 |
| T009 | 死锁问题 | ⭐⭐⭐⭐ | 待补充 |
| T010 | 传感器数据异常 | ⭐⭐ | 待补充 |

---

## T001: 感知丢失目标

### 故障现象
- 实车测试时，感知模块突然无法检测到障碍物
- 日志中显示 `Found 0 obstacles`
- UI上没有显示任何障碍物

### 错误日志
```
[ERROR] perception_od: Found 0 obstacles
[WARN]  No valid obstacles detected in frame 12345
```

### 根本原因
- 前摄像头被灰尘遮挡
- 图像预处理模块输出异常

### 解决方法
1. 清洁前摄像头
2. 检查 `image_preprocess` 模块日志
3. 验证摄像头数据是否正常

### 预防措施
- 定期清洁摄像头
- 添加摄像头健康检查

### 相关日志
```bash
grep -i "obstacle\|detect" /app/apa/log/od/*.log
tail -f /app/apa/log/image_preprocess/*.log
```

---

## T002: 规划失败

### 故障现象
- 泊车过程中规划模块报错
- 车辆无法生成可行路径
- 日志显示 `Path planning failed`

### 错误日志
```
[ERROR] planning: Path planning failed - no valid path found
[ERROR] planning: Cannot find path from start to goal
```

### 根本原因
- 感知输入异常（无有效障碍物或车位）
- 地图数据不完整

### 解决方法
1. 检查感知模块输出是否正常
2. 验证地图和定位状态
3. 查看planning配置参数

### 预防措施
- 增加感知异常检测
- 完善地图数据验证

### 相关日志
```bash
grep -i "plan\|path" /app/apa/log/planning/*.log
grep -i "obstacle" /app/apa/log/od/*.log
```

---

## T003: 定位漂移

### 故障现象
- 车辆定位出现明显漂移
- UI显示的车辆位置与实际不符
- 泊车轨迹偏离目标

### 错误日志
```
[WARN] loc: Pose drift detected, delta = 5.2m
[WARN] loc: Localization error exceeds threshold
```

### 根本原因
- GNSS信号丢失
- IMU数据异常

### 解决方法
1. 检查GNSS和IMU数据质量
2. 验证标定参数
3. 重启loc模块

### 预防措施
- 增加信号质量监测
- 使用多传感器融合提高鲁棒性

### 相关日志
```bash
grep -i "drift\|localization" /app/apa/log/loc/*.log
```

---

## T004: 进程崩溃

### 故障现象
- 某个进程突然退出
- 系统自动重启进程
- 功能异常

### 错误日志
```
[ERROR] Segmentation fault in process planning (PID 12345)
[INFO]  Process planning restarted automatically
```

### 根本原因
- 内存访问越界
- 空指针访问

### 解决方法
1. 查看 coredump 文件
2. 分析系统日志
3. 定位代码问题并修复

### 预防措施
- 增加代码静态检查
- 添加边界检查

### 相关命令
```bash
ls -la /log/coredump/
cat /log/reset_reason.txt
slog2info | grep -i "crash\|segmentation"
```

---

## T005: 系统卡顿

### 故障现象
- 系统响应变慢
- UI操作延迟
- 日志显示超时

### 诊断过程
```bash
# 1. 找出占用CPU的进程
hogs -i
# 发现 perception_od 占用 60%

# 2. 查看进程详情
top -p <PID>
# 发现线程状态多为 Run

# 3. 分析
# 算法复杂度过高导致CPU占用
```

### 根本原因
- 感知算法复杂度过高
- 检测目标数量过多

### 解决方法
1. 优化算法复杂度
2. 限制检测目标数量
3. 降低算法频率

### 预防措施
- 设置CPU占用告警阈值
- 优化热点算法

---

## T006: CAN通信异常

### 故障现象
- CAN通信频繁超时
- 车辆控制异常
- 日志显示 `CAN timeout`

### 错误日志
```
[ERROR] sensorcenter: CAN timeout on DWCAN7
[WARN]  Lost 5 CAN frames in last second
```

### 根本原因
- CAN线路连接问题
- 其他ECU响应异常

### 解决方法
1. 检查CAN线束连接
2. 查看各CAN通道状态
3. 验证其他ECU状态

### 预防措施
- 增加CAN连接检查
- 添加心跳检测

### CAN端口映射
| 板端CAN | 车端CAN |
|---------|---------|
| DWCAN7 | PCAN |
| DWCAN4 | CCAN |
| DWCAN6 | S1CAN |
| DWCAN1 | S2CAN |

---

## T007: 内存不足

### 故障现象
- 系统运行一段时间后变慢
- 日志显示内存告警
- 进程因内存不足被kill

### 诊断过程
```bash
# 1. 查看内存状态
top
# Memory: 12287M total, 2562M avail

# 2. 查看低内存日志
cat /log/lowmem.dmesg.txt

# 3. 查看进程快照
cat /log/lowmem.ps.txt
```

### 根本原因
- 内存泄漏
- 缓存过大

### 解决方法
1. 定位内存泄漏代码
2. 减少缓存大小
3. 重启相关进程

### 预防措施
- 定期检查内存使用
- 添加内存监控告警

---

## T008: 日志丢失

### 故障现象
- 需要分析的日志不存在
- 日志文件被覆盖

### 根本原因
- 日志轮转机制覆盖了旧日志
- EMMC空间不足导致日志被清理

### 解决方法
1. 及时下载重要日志到本地
2. 增加日志保留周期
3. 扩展存储空间

### 预防措施
- 定期备份日志
- 设置日志保留策略

### 相关命令
```bash
# 查看日志文件大小
du -sh /app/apa/log/*

# 查看EMMC使用情况
df -h
```

---

## T009: 死锁问题

### 故障现象
- 某个模块无响应
- 系统整体变慢
- 日志无新输出

### 诊断过程
```bash
# 1. 找出问题进程
hogs -i

# 2. 查看线程状态
top -p <PID>
# 发现大量线程状态为 Mtx/Sem

# 3. 分析
# 锁竞争严重，可能存在死锁
```

### 根本原因
- 锁粒度过大
- 持锁时间过长
- 死锁

### 解决方法
1. 分析代码锁逻辑
2. 减小锁粒度
3. 缩短持锁时间

### 预防措施
- 使用死锁检测工具
- 审查锁设计

---

## T010: 传感器数据异常

### 故障现象
- 传感器数据明显异常
- 数值超出合理范围
- 数据更新频率异常

### 错误日志
```
[WARN] sensorcenter: Invalid sensor data: x=999.9, y=999.9
[ERROR] od: Image data timeout
```

### 根本原因
- 传感器故障
- 数据传输异常
- 标定参数错误

### 解决方法
1. 检查传感器硬件
2. 验证数据传输
3. 检查标定参数

### 预防措施
- 增加数据有效性检查
- 设置传感器健康监测

---

## 故障排查通用流程

```
1. 确认故障现象 → 明确问题表现
2. 定位问题模块 → 根据现象确定相关模块
3. 查看相关日志 → 搜索错误、警告信息
4. 分析日志 → 结合知识库判断原因
5. 实施解决方案 → 按建议步骤执行
6. 验证结果 → 确认问题是否解决
7. 记录案例 → 更新故障案例库
```

---

## 问题上报模板

如果以上案例无法解决问题，请按以下模板收集信息：

```
【故障描述】
【复现步骤】
1.
2.
3.

【相关日志】
/app/apa/log/xxx/*.log

【系统信息】
- 软件版本：
- 测试环境：
- 硬件配置：

【附件】
- 日志文件：
- 截图/录屏：
```
