概要:本文对决策规划的方法进行了解。
文章目录
前言
本文将对基于有限状态机的决策规划进行了解。
一、Finite State Machines
自动驾驶车辆最开始的决策模型就是有限状态机模型。车辆根据当时的环境选择合适的驾驶行为,如停车、换道、超车、避让缓慢行驶的模式。
状态机的模型通过构建有向连通图描述不同的驾驶行为和状态之间的转移关系,从而根据驾驶状态迁移出一系列的驾驶动作。
优点:有限状态机模型比较简单、易行,是自动驾驶领域中目前应用最为广泛的行为决策模型。
缺点:忽略了环境的动态性和不确定性,当驾驶场景比较多的时候,它的划分和管理比较繁琐。
应用:更适用于简单的场景。
有限状态机是基于有限的离线状态来决策,是一种非常简单的抽象反应系统,只针对特定的外界输入产生线束端的相应选择。
在道路行驶环境中,假设可以利用上述5个状态S0,S1,S2,S3,S4来组合表达无人车可能的驾驶动作。
核心思想:通过有限个状态描述定义再通过组合大量的逻辑行为。
有限状态机包括输入、输出和状态转换逻辑(包括转换(其它状态)和接收器(S4))。
二、Finite Design Diagram
2.1 Lane Change
假设有5个状态来描述行为如下图所示。
- Lane keep:
(1)自车保持在车道中间;
(2)有前车:和前车保持一个相对的速度;如果没有前车:继续保持在车道中间; - Prepare for lane change left/right:
自车向左向右变道时,没有直接车道保持到向左向右变道的转换,必须有一个准备向左、向右变道的动作。
(1)在车道间隙距离中寻找合适的位置和速度;
(2)开启转向灯。 - Lane Change Left/Right:
(1)完成向左向右的变道;
(2)再回到车道保持。
2.2 Standord’s FSM
(1)Locate vehicle:无人车出发之前确定当前的位置
-
掉头场景
(2)Forward driving:前向行驶状态包括车道保持、障碍物的规避等
(3)Uturn_stop:走到U型掉头的状态
(4)Uturn_drive:掉头时的行驶状态
(5)回到前向行驶的状态 -
交通拥堵场景(跨过黄线借用空间)
(2)Cross_divider:跨过黄线的状态
(3)Bad_rndf:跨过黄线走到不同路网上
(3)路线正常后,回到前向行驶的状态 -
十字路口场景
(2)Cross_intersection:十字路口场景
(3)Parking_navigate:到了停车位置状态
(4)Mission_comlete:过了十字路口到了停车场就完成了任务。
三、Hierarchical Finite State Machine(HFSM)
当状态机很多且并联的情况下,状态机会变得非常庞大,状态机的转换又会变得非常复杂,逻辑不是很清晰,很难分析问题原因和结果。
基于上述情况, 分层有限状态机HFSM新增了一个状态,可以把性质同一类型状态机作为一个状态机集合,可以从大的状态机中维护子的状态机,结构简单,便于维护,而新增状态间也有状态转移。
例如超车场景:
车道行驶过程中有三个顶层状态机(新增):变道、超车、进入匝道
触发超车状态后,进入超车状态完成向左变道、向右变道的转换,再回到原车道完成整个超车过程。
四、FSM Cons
因为人类行为是非常复杂的,环境也是多变的,当状态很多的时候,有限状态机就会变得非常庞大,假设状态为N,则可能的状态转移有N×N个,当水量很庞大时,结构也会变得非常复杂,所以有限状态机存在以下限制:
- Scalability:扩展性差,当状态机很多时,结构复杂,有向可读性很差,很难理解其行为,所以很难扩展,不能解决太多的复杂性问题;
- Maintenace:可维护性差,当需要删除状态时,需要改变与之相关联的状态,修改容易出错;
- Repeatability:复用性差,几乎不可能在多个项目中使用相同的FSM。
总结
本文主要是对于基于有限状态机的决策规划方法进行阐述,了解其概念、核心思想以及决策设计,引出了分层有限状态机的状态机优化方法,最后阐述了存在的缺陷,这篇文章希望可以对想要学习自动驾驶规划控制方向的同学们有一定的帮助。
喜欢的朋友们动动小手点个关注,我会定期分享我的一些知识总结和心得体会,感谢大家!