1. 通过红绿灯路口时"卡停止"了,为什么?怎么处理?
这是自动驾驶测试里非常常见的问题,面试里一般是在考你:
- 能不能快速定位问题
- 是否理解模块链路
- 有没有现场处理思路
自动驾驶通过红绿灯,大致链路:
感知 → 红绿灯识别 → 定位 → Prediction → Planning → Control
"卡停止"通常说明 Planning 一直认为"不能走"。
常见原因:
(1)红绿灯状态识别错误
比如:
- 绿灯识别成红灯
- 红灯状态没刷新
- TrafficLight 感知丢帧
表现:
- UI 上灯状态异常
- perception topic 数据不更新
- 车一直停在 stop line 前
排查:
cyber_monitor
查看:
/apollo/perception/traffic_light/apollo/planning
或者直接:
grep traffic_light planning.INFO
解决:
- 调整交通灯 ROI
- 检查地图 stop_line 对齐
- 检查相机标定
- 检查红绿灯配置文件
stop_line 和 signal boundary,这个其实就属于现场调参。
(2)停止线(stop_line)位置不对
如果停止线:
- 离路口太远
- 压到车身前面
- 和车道不匹配
Planning 会认为:
"还没到允许通行区域"。
结果:
车一直刹停。
解决:
重新检查:
signal {
stop_line {
里的坐标。
尤其:
- lane overlap
- junction overlap
- stop_line 朝向
是否正确。
(3)定位漂移
Localization 漂移后:
系统认为:
- 车没到停止线
- 或车已经越线
Planning 会异常。
现象:
- RViz 里车飘
- 车道匹配偏移
- 红灯逻辑异常
解决:
- 重启 localization
- 检查 GNSS/IMU
- 检查地图匹配
(4)障碍物误检导致 Planning 不敢走
有时并不是红绿灯问题。
而是:
感知误识别:
- 行人
- 锥桶
- 静态障碍
Planning 一直 yield。
可以看:
grep pedestrian planning.INFO
或者 Dreamview 障碍物显示。
总结
我会先判断是感知、定位还是规划问题。
第一看 traffic light topic 是否正常;
第二看 stop_line 和 HDMap overlap 是否匹配;
第三检查 localization 是否漂移;
第四检查是否存在障碍物误检导致 planning 一直 yield。
现场会结合 Dreamview、日志和 topic 数据快速定位,再决定是调参、修地图还是重启模块。