2、系统需求分析:功能需求、性能指标、系统边界
好,我们进入第二章。系统需求分析,说白了就是搞清楚一件事:这个车道保持功能,到底要干什么?干到什么程度?边界在哪里?
我个人习惯,在写第一行代码之前,先把需求掰开揉碎。不然等代码写到一半,发现需求变了,那才叫欲哭无泪。我在项目中遇到过好几次,因为需求没对齐,最后返工改架构,那滋味真不好受。
2.1 功能需求:车道保持 vs 车道偏离抑制
很多人把这两个概念混为一谈。其实它们有本质区别。我建议你从控制目标的角度去理解。
2.1.1 车道保持(LKA, Lane Keeping Assist)
它的核心目标是:让车辆始终行驶在车道中央。
说白了,这是一个主动控制功能。系统会持续计算车辆与车道中心线的偏差,然后通过转向系统进行微调。你想想看,这就像你开车时,有个老司机在旁边轻轻扶着方向盘,帮你保持在车道中间。
功能定义上,我一般会拆成三点:
- 居中行驶:车辆横向偏差控制在 ±0.3m 以内(视车道宽度而定)
- 连续控制:系统在弯道、直道上都能持续工作
- 驾驶员监控:系统会检测驾驶员是否手握方向盘,如果长时间脱手,会发出警告
关键点:车道保持是“主动纠偏”,不是“撞线才回”。
2.1.2 车道偏离抑制(LDW/LDP, Lane Departure Warning/Prevention)
这个功能的定位完全不同。它的核心目标是:防止车辆无意中偏离车道。
嗯,这里要注意。车道偏离抑制是被动干预。系统平时不干活,只有当车辆快要压到车道线时,它才介入。介入方式有两种:
- 警告(LDW):通过声音、震动方向盘或视觉提示,提醒驾驶员
- 抑制(LDP):系统主动施加一个短暂的转向力矩,把车拉回车道内
我曾经在开发一个LDP功能时,遇到过一个坑:系统在弯道上误触发。明明驾驶员在正常转弯,系统却以为要偏离车道,强行介入。后来排查发现,是车道线检测的置信度阈值设得太低了。所以,功能安全里常说“避免误触发”,在LDP里尤其重要。
| 对比项 | 车道保持(LKA) | 车道偏离抑制(LDP) |
|---|---|---|
| 控制策略 | 连续控制 | 事件触发 |
| 介入时机 | 始终工作 | 即将偏离时 |
| 控制强度 | 柔和、平滑 | 短暂、有力 |
| 驾驶员意图 | 可随时接管(超控) | 打转向灯可抑制 |
2.2 性能指标:TLC 与 横向加速度
功能需求说完了,咱们聊聊怎么量化。性能指标,就是用来回答“这个功能到底好不好”的。
2.2.1 TLC(Time to Lane Crossing,车道偏离时间)
TLC 是一个非常重要的指标。它计算的是:以当前车辆的运动状态,还有多久会压到车道线。
公式很简单,但实现起来有讲究:
TLC = 横向距离 / 横向速度
其中:
- 横向距离:车辆当前到车道线的距离
- 横向速度:车辆相对于车道线的横向运动速度
我个人习惯,在量产项目中,TLC 的阈值一般设置在 1.0s ~ 2.0s 之间。为什么是这个范围?
- 如果 TLC 阈值 小于 1.0s,留给驾驶员的反应时间太短,容易引发恐慌
- 如果 TLC 阈值 大于 2.0s,系统会过于敏感,频繁介入,影响驾驶体验
避坑指南:我曾经在高速场景下,把 TLC 阈值设成了 1.5s。结果发现,在曲率较大的弯道上,系统频繁报警。后来分析发现,弯道上的横向速度计算有误差。所以,TLC 的计算一定要考虑道路曲率。
2.2.2 横向加速度
这个指标直接决定了乘客的舒适性。你想想看,如果系统控制车辆时,横向加速度太大,乘客会感觉被甩来甩去,很容易晕车。
量产项目中,横向加速度的典型范围是:
- 舒适范围:≤ 1.0 m/s²
- 可接受范围:1.0 ~ 2.0 m/s²
- 极限范围:2.0 ~ 3.0 m/s²(紧急情况)
我建议,在正常车道保持时,把目标横向加速度控制在 0.5 m/s² 以下。这样驾驶员几乎感觉不到系统在干预,体验最好。
注意:横向加速度的限值,还要考虑路面附着系数。在湿滑路面上,过大的横向加速度可能导致车辆失控。功能安全要求中,必须对横向加速度进行监控和限幅。
2.3 系统边界:什么情况下功能不工作?
定义系统边界,其实是在说“我不做什么”。这比“我要做什么”更重要。因为边界定义不清,会导致功能在不可用的场景下误激活,引发安全事故。
我一般会从以下几个维度来定义边界:
2.3.1 环境边界
- 车道线质量:车道线模糊、磨损、被遮挡(积雪、积水)时,功能降级或退出
- 光照条件:强光直射、夜间无照明、隧道出入口等场景,摄像头可能失效
- 天气条件:大雨、大雾、大雪等恶劣天气,功能不可用
2.3.2 车辆状态边界
- 车速范围:一般要求车速 > 60 km/h 才能激活(高速场景),低速时功能退出
- 转向灯状态:驾驶员打转向灯时,系统认为驾驶员有变道意图,功能暂时抑制
- 驾驶员干预:驾驶员主动打方向盘且力矩超过阈值时,系统立即退出,让驾驶员接管
2.3.3 道路类型边界
- 弯道曲率:曲率半径小于 250m 的急弯,系统可能无法保持车道
- 车道宽度:车道宽度小于 2.5m 或大于 4.5m 时,功能可能不可靠
- 道路类型:仅支持有清晰车道线的高速公路和城市快速路
总结一下:系统边界不是限制,而是保护。它保护了驾驶员,也保护了系统本身。我在做功能安全分析时,会把边界条件作为“安全状态”的触发条件。一旦超出边界,系统必须安全地退出,并告知驾驶员。
好了,第二章就到这里。需求分析是架构设计的基石,这块理清楚了,后面写代码、做测试都会顺畅很多。下一章,我们聊聊系统架构的顶层设计。