技术解析 | 横纵一体的无人车控制方案
在自动驾驶行业的经典控制方案中,横向控制与纵向控制的求解是模型解耦的独立算法。这种“横纵分离”的控制方案虽然可行,但显然不符合人类的驾驶方式,也不符合横向、纵向紧密联系这一客观事实。本文介绍了一种横纵一体的无人车控制实现方案,在描述车辆横纵耦合、考虑横纵联合约束、统筹横纵跟踪性能方面更具优势。
01 两位“司机”操控下的无人车
一辆车可以同时由两个司机操控行驶吗?好像除了驾校的教练车以外,没有车是这么开的。
但这个在常人看来有些匪夷所思的问题,它的答案对于无人驾驶领域而言却是肯定的——经典的车辆控制方案,是通过两个分别控制纵向、横向的控制器配合实现的。
如图1所示,在自动驾驶行业的经典控制方案中,横向控制与纵向控制的求解是模型解耦的独立算法[1,2],仅通过单向、单次的依赖参数传递进行配合(虚线框中为控制模块,箭头表示参数依赖关系)。
不难想象,这相当于“两个司机同开一车”,纵向司机操作踏板(不需看路、只需看速度表)来实现计划速度,横向司机操作方向盘(需要看路)来实现计划路径。控制模块集二人之力,尽可能准确地“实现”上游规划模块给出的规划轨迹(包含计划路径和计划速度)。
这种乍看之下“不合常理”的横纵分离控制方案被业界广泛采用,是有其原因的:
- 大事化小 ——将轨迹跟踪问题分解为纵、横向两个子问题,能够减小单个问题的复杂度,并且在模型中避免交叉乘积等非线性(从而采用线性的横向模型),有利于控制的快速求解。
- 耦合不强 ——常规车辆的转向结构往往限定在30度角以内,行车路径的曲率有限,转向轮横向力在车身纵轴的分量很小,纵向控制基本不受横向状态影响、可独立进行。
02 横纵分离方案的潜在问题
经典的横纵分离控制方案虽然是可行的,但显然不符合人类的驾驶方式。
事实上,对于轨迹跟踪这一任务,横向、纵向是紧密联系的[3-5],主要包括以下三个方面。
(1) 车辆动态建模包含横纵的相互耦合
真实车辆存在天然的横纵耦合,真正的老司机在操控时会考虑车辆横向行为、纵向行为之间的相互影响。例如,过弯时的纵向车速会影响横向加速度,而转向动作也会有纵向制动效果。事实上,运动学耦合[1]、轮胎力耦合[2]、载荷转移耦合[3]是车辆模型中的三大横纵耦合[4]。
横纵分离控制方案中,纵向控制、横向控制各自采用独立的模型,只能通过状态参数进行交互,因此无法在求解前对上述耦合进行合理描述,而模型的准确性会进一步影响到控制解的最优性。
(2) 行车约束构建需要横纵的共同参与
行车约束决定了控制量的可行空间,可以理解成老司机对行驶安全范围和车辆性能极限的把握。有一些行车约束的描述可以基于横/纵单个方向的特征,如转向角上限约束、踏板上限约束等;但也有一些行车约束的描述必须要横、纵两个方向特征的共同参与,如位置边界约束(横坐标与纵坐标共同参与)、最大向心加速度约束(横向转角与纵向速度共同参与)等。
横纵分离控制方案中,横、纵控制算法各自只拥有一个方向的求解空间,无法描述横纵联合参与的行车约束。以最大向心加速度约束为例,分离方案中的横向控制只能通过抑制转向角、不能通过减速来避免向心加速度越限,实际丢失了一部分可行集,如下图所示:
(3) 跟踪性能评价存在横纵的彼此竞争
轨迹跟踪看重的是横纵两个方向的综合跟踪性能指标,而两个单向指标存在一定的竞争关系[6]。横纵分离的控制方案中,横、纵控制算法各自为政,分别只盯着一个方向的跟踪性能指标,某些场景下可能顾此失彼、出现横纵跟踪性能失衡的结果。
如高速过弯时,纵向控制能轻易地跟踪目标速度,但会提高横向控制在时间和角度上的精度要求,增大横向误差。但如果从统筹的角度来看,此时的纵向跟踪应适当让步、主动减速,在横向上换取更多的性能改善。
03 横纵一体方案的设计思路
针对横纵分离控制的上述问题,我们尝试开发一种工程可行的横纵一体控制方案。
针对上述提到的、轨迹跟踪任务中横纵之间的三方面联系,横纵一体控制方案的设计要点包括:
(1) 采用横纵耦合的车辆建模——进而对车辆的动态特性进行更准确的描述。
(2) 采用横纵联合的约束形式——进而对控制量的可行集进行更完备的构建。
(3) 采用横纵综合的性能评价——进而对两个单向的跟踪性能进行统筹协调。
需要注意的是,由于横纵耦合建模难以避免交叉乘积等非线性[1,7],克服非线性问题、使控制器达到工程实用的计算速度是方案实现中的核心难点。
现有文献中考虑横纵耦合模型的控制研究通常采用基于滑模控制(Sliding Mode Control,SMC)的方案[3,4,8-10],构造特定的变结构控制律直接进行非线性控制,使系统状态的演变保持在预先设计的滑动面邻域内(滑动面通常设计为横纵向误差渐趋至零的状态面)。但非线性控制律无法考虑状态约束,且其构造结果与难度与模型强相关,控制律的可迁移性较差。
在这里,我们采用另一种技术方案——线性时变的模型预测控制(Linear Time-Varying Model Predictive Control,LTV-MPC)来处理非线性的横纵耦合模型。
该方案的控制效果和计算性能介于常规(线性时不变)MPC和非线性MPC之间,是一种针对非线性系统或时变系统的实用控制方法[11-13],并且有灵活的约束处理能力[1,13]。
LTV-MPC方案的具体实现将在下一部分介绍。
概括来说,该方案的本质是在每一个控制帧构建一个控制量序列的优化问题,横纵耦合建模、横纵联合约束、横纵跟踪统筹这三个设计要点分别对应这一优化问题的状态方程约束、不等式约束、评价函数,如图3所示。
需要注意的是,“线性时变模型预测控制”中的“线性”表示进入求解器的状态方程约束、不等式约束在每一帧都是线性的,以此确保计算速度;而“时变”表示在不同帧之间,线性的状态方程约束、不等式约束会发生变化,以此描述真实系统的非线性。
04 LTV-MPC横纵一体控制的具体实现
4.1 横纵耦合动态与横纵联合约束的构建
建模过程需要对被控车辆全部或主要的横纵耦合进行充分描述,横纵控制量(如横向转向角、纵向加速度)u和横纵状态量(如车辆位置、横摆角、纵向速度)x均以待决策变量的形式加入到模型中,并构造更符合真实世界情景的横纵联合约束。
以下图所示的横纵耦合二轮运动学模型为例,取系统状态量为、控制量为(加速度指令α后续会通过查表映射到踏板指令),其动态特性可建模为:
以最大向心加速度为例,系统的横纵联合约束可建模为:
二轮运动学模型虽然简单,但已经描述了车辆最重要的横纵耦合——运动学耦合。若采用更复杂的车辆模型,也可用类似的方式完成横纵耦合建模。
4.2 动态特性及约束的线性化
上一步得到的横纵耦合模型通常包含变量的交叉乘积、三角函数等非线性项,需要进行线性化以降低复杂度——这是应对横纵耦合模型非线性困难的核心步骤。其核心思想是,选取当前状态量和上帧控制量作为“基点”,然后将非线性模型在基点处进行一阶泰勒展开[4]。
这一方法的合理性在于,在未来一小段预测域(如1秒)之内,系统状态和控制量基本会在当前时刻值的附近变动,因此在该点所得的线性化模型基本具备足够的描述精度。
具体而言,动态特性的线性化结果为:
其中:
仍以二轮运动学模型为例,有:
横纵联合约束的线性化结果为:
其中:
仍以最大向心加速度为例,有:
完成线性化之后,为将连续模型适配数值计算求解器,需按照特定的离散时间间隔(通常就是一个控制帧的长度),采用特定的离散化方法,如零阶离散矩阵变换公式[14]:
进行尽可能精确的离散化处理,得到离散的线性化模型:
其中下标表示时刻的待解向量值,t为当前时刻。
4.3 横纵综合评价函数的构建
为求解最优控制量,还需构建系统状态的评价函数。需要注意的是,相较于横纵分离控制针对单个方向跟踪性能的优化,横纵一体控制的目标是横纵两个方向跟踪性能的协调和统筹,因此应该描述横纵两个方向的综合跟踪性能。
仍以二轮运动学模型为例,可定义:
其中、、、分别为速度误差、纵向位置误差、横向位置误差、横摆角误差在综合评价函数中的惩罚权重——前两者为纵向评价部分,后两者为横向评价部分。上标表示计划轨迹,由上游的规划模块给出。
在这样的评价函数设计之下,某时刻的值越小,则表示该时刻的综合跟踪性能越好。并且不难看出,改善大误差项对的边际贡献更大,因此最小化可以实现横纵跟踪性能的统筹协调,避免某个方向的误差过大。
例如高速过弯场景下,横纵一体控制器会在过弯处进行适当的主动减速,牺牲少许的纵向跟踪性能来换取更多的横向跟踪性能,使尽可能小——这种全局统筹的思想其实更符合真实的运动控制需求。
4.4 控制量求解与下发
选取预测步数为(预测域为),结合4.2步所得的线性化模型和4.3步所得的评价函数,能够形成如下的MPC问题[5]:
该问题本质是一个线性约束二次规划问题。接下来,只需同常规MPC一样进行求解,即可解得最优的控制序列,且状态预测轨迹相伴而生,这一轨迹能够可视化表示为与规划轨迹类似的、包含速度信息的行进轨迹。
将下发后,即可等待下一个控制帧的到来,然后重新回到4.2步(如需更新模型,则应回到4.1步),循环往复执行。
05 小结
本文针对自动驾驶横纵分离控制方案无法描述车辆横纵耦合、不能考虑横纵联合约束、没有横纵统筹能力等不足,给出了一种考虑横纵联合约束的横纵一体车辆控制方案。
该方案支持在建模时考虑车辆的横纵耦合,提高模型准确性;采用时变线性化MPC框架来克服横纵耦合及约束所带来的非线性,改善求解耗时和可靠性;在横纵联合可行域中进行综合跟踪性能的寻优,具有一定的横纵统筹能力。
注释
- 横纵以车身定义,车身旋转时,相邻时刻的横纵物理量会相互贡献。
- 纵向车速高时,横向力会对转向更敏感;横向转向角大时,纵向力会有额外的制动分量。
- 纵向减速时,部分载荷向前轮转移,增强轮胎横向力。
- 另一种常用的线性化方式是在(0,0)处展开,但其描述精度相对较差。还有一种线性化方法是为每个预测时刻各取一个基点、得到一簇基点[12],也能达到较好的描述精度,但为简化表达,本文不再赘述。
- 在这里,写成了目标函数中的矩阵形式。
参考文献
[1] 陈慧岩,陈舒平,龚建伟.智能汽车横向控制方法研究综述[J].兵工学报,2017, 38(6):1203-1214.
[2] 佐思产研.谈谈无人车横向控制[EB/OL].
[3] Pham H, Hedrick K, Tomizuka M. Combined lateral and longitudinalcontrol of vehicles for IVHS[C]//American Control Conference.Baltimore, MD, US: IEEE, 1994: 1205-1206.
[4] Lim E H M, Hedrick J K. Lateral and longitudinal vehicle controlcoupling for automated vehicle operation[C]//Proceedings of theAmerican Control Conference. San Diego, CA, US: IEEE, 1999:3676-3680.
[5] 美团无人配送.【技术解析】无人车横向控制解读[EB/OL].
[6] Lam D, Manzie C, Good M. Model predictive contouring control[C]//49thIEEE Conference on Decision and Control (CDC). IEEE, 2010: 6137-6142.
[7] Rajamani R. Vehicle Dynamics and Control[M]. Springer Science, 2006.
[8] SwaroopD, Yoon S M. Integrated lateral and longitudinal vehicle control foran emergency lane change manoeuvre design[J]. International Journalof Vehicle Design, 1999, 21(2-3): 161-174.
[9] RajamaniR, Tan H S, Law B K, et al. Demonstration of integrated longitudinaland lateral control for the operation of automated vehicles inplatoons[J]. IEEE Transactions on Control Systems Technology, 2000,8(4): 695-708.
[10] 郭景华,罗禹贡,李克强.智能车辆运动控制系统协同设计[J].清华大学学报(自然科学版),2015(7): 761-768.
[11] BamiehB, Giarre L. Identification of linear parameter varying models[J].International Journal of Robust and Nonlinear Control:IFAC‐Affiliated Journal, 2002, 12(9): 841-853.
[12] FalconeP, Borrelli F, Tseng H E, et al. Linear time‐varying modelpredictive control and its application to active steering systems:Stability analysis and experimental validation[J]. InternationalJournal of Robust and Nonlinear Control: IFAC‐Affiliated Journal,2008, 18(8): 862-875.
[13] Xing X, Lin J, Brandon N, et al. Time-varying model predictivecontrol of a reversible-SOC energy-storage plant based on the linearparameter-varying method[J]. IEEE Transactions on Sustainable Energy,2020, 11(3): 1589-1600.
[14] Chen C T. Linear system theory and design[M]. New York, UnitedStates: Oxford University Press, 1999: 90–92.
大型C++工程项目,都会面临编译耗时较长的问题。不管是开发调试迭代、准入测试,亦或是持续集成阶段,编译行为无处不在,降低编译时间对提高研发效率来说具有非常重要意义。 一、背景 美团搜索与NLP部为 ...