闲来无事,把手头上的状态机设计文档中的状态图都收集到了一份文档中,其中涉及L0、L1、L2、L2++的自动驾驶功能,总结分析状态机设计的底层逻辑。
设计一份功能状态机,需要几个步骤,我们逐一讲起。
1.定义状态
状态定义:明确定义系统中的状态,确保每个状态都是清晰且互斥的。每个状态应该具有明确的含义和行为。
不同的自动驾驶功能可能具有不同的状态机,状态的定义是由功能决定的,系统需要在不同的条件下正确地执行相应的行为和功能。同时,状态机的设计原理也应该为系统的扩展和维护提供了便利,使得系统能够适应不断变化的需求和环境;比如在NOP功能设计时,应考虑到如何与LCC/ACC等功能进行切换。
L0的ADAS功能,比如FCW/LDW/BSD等等基本不涉及车辆控制,仅起到预警作用。其状态定义也较为简单,可以分为以下几个状态:
OFF:系统关闭,未进行工作。
Standby:系统满足运行条件,正在待机。
Warning:符合预警触发条件,正在报警。
Inhibit:预警被用户抑制。
Error:系统故障。
根据国标法规要求,Warning状态中可能还包括Pre-Warning状态。
L1的AEB/LCC等功能仅涉及横向或纵向的单一控制,比如AEB主要负责紧急制动功能,会在FCW Warning后增加Brake的状态。而ACC根据功能定义,会存在Speed Control、Distance Control、Override、Temp Stop等状态。LCC则会存在Lane Keeping等状态。由此可以看出,状态机主要是为功能服务,围绕核心功能而分解为不同状态。