lsekfe 发表于 2023-5-16 11:16:09

自动驾驶应用层软件开发分享

自动驾驶软件中,除了大家经常听到的感知、规划、机器学习、车辆控制等外,还有一部分,虽然听起来没有算法那些高大上,但是对整车功能的体验,至关重要,那就是应用层软件,主要负责功能状态机和与整车的人机交互。
  01.功能状态机
  功能状态机是指各项自动驾驶功能的运行状态机,比如车道偏离预警 Lane Departure Warning (LDW)、自适应巡航 Automated Adapt Cruise (ACC)、高速智能领航辅助Navigation on HIPilot(NOH)等等。
  这些看起来仅仅是一些逻辑跳转,但是这些是感知、规划炫酷的前提,也就是说只有应用层检查相关的条件OK,才会启用相关功能,而且这一部分也非常复杂,因为每个功能都有一个状态机,而自动驾驶通常有十几个功能,意味着十几个状态机,有些还耦合。
  下面以ACC功能的状态机来讲讲,图1就是ACC的状态机。
http://www.51testing.com/attachments/2023/05/15326880_202305151427411MlNP.png
▲图1 ACC功能的状态机
  从图中可以看出ACC功能分三个大的状态,分别为ACC off、ACC on、ACC active。这个状态机仅仅是从ACC的功能标准中摘取出来,各家主机厂考虑的点不同,会存在差异,但是整体框架肯定是一样的。
  ACC off到ACC on
  ACC功能在初始化阶段,状态机是处于ACC off状态,当软件完成初始化,各个模块完成就绪,并且没有任何异常,状态机会切到ACC stand-by,意味着ACC功能就绪,可以激活。
  ACC stand-by到ACC active
  这个状态的跳转是驾驶员按下了方向盘上的激活按键,按键信号通过网关透传到自动驾驶控制器,控制器在收到激活信号之后,检查当前条件是否满足,比如是不是相关的故障、关联件状态是否OK等,当跳转条件检测OK之后,状态就会条状到ACC active,这会儿也就是进入了ACC,车辆开始受控了,在ACC active内部又有几种状态,包括速度控制和距离控制,这些是根据当前环境来自动切换的。
  ACC active到ACC on
  这个状态很好理解,就是驾驶员按了退出按键,或者是有一些功能抑制条件满足,比如:
  1.作用在方向盘上的手力矩过大;
  2.方向盘转角速率过大;
  3.踩了制动踏板;
  ACC active到ACC off或者ACC on到ACC off
  这两种状态机的跳转,通常是由于软件检测到异常,导致功能不可用,比如有故障发生,或者是驾驶员突然解开安全带等等。
  02.人机交互
  当前,大部分对比谁家自动驾驶更加厉害,通常是对比谁家的功能更牛逼,这是无可厚非的,但是人机交互也很重要,这关系到人们的驾驶体验,愿不愿意用这个功能,别用着用着就功能推出了,也没有任何提示。
  人机交互主要包括仪表显示和语音提示。
  仪表显示主要是包括道路、车模的显示,这里主要比的是谁家的更炫酷点,谁家的显示的更加准确,更有意思。
http://www.51testing.com/attachments/2023/05/15326880_202305151427451zEte.jpg
▲图2 仪表显示
  语音提示就更加好理解,比如当功能激活的时候,需要报ACC功能已激活,当退出时,需要报功能已退出。当双目遮挡时,报当前双目遮挡,等等,这里也主要是一些逻辑性的东西,很繁琐,各种各样的语音提示。
  03.脱手检测
  下面来看看大众ID.4X的脱手检测功能是怎么设计的,首先从硬件上,方向盘配备了三区电容式传感器,可以探测接触在方向盘的位置,是手抓还是膝盖碰触,是左侧还是右侧,如下图所示。
http://www.51testing.com/attachments/2023/05/15326880_202305151427481Varf.png
▲图3大众ID4的方向盘结构
  方向盘脱手识别(Hand Off Decetion)传感器检测电容值并发给E-BOX,J1158分析电容值信号得到驾驶员手握状态评估信号,并通过LIN发送给网关,网关将HOD电容值信号和手握状态评估信号发送给MFK/ACC,MFK综合分析HOD手握状态信号、方向盘扭矩信号和是否偏离车道等信号,判断是否发送报警信号“请接管方向盘”给仪表。
http://www.51testing.com/attachments/2023/05/15326880_202305151427511caov.png
▲图4 大众ID4的脱手检测逻辑

页: [1]
查看完整版本: 自动驾驶应用层软件开发分享