专栏文章列表
Apollo Control——超详细入门教程(一):基于道路误差的车辆动力学模型
Apollo Control——超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导
Apollo Control——超详细入门教程(三):基于Frenet坐标系及XY坐标系的多项式轨迹生成
Apollo Control——超详细入门教程(四):控制模块轨迹误差计算
Apollo Control——超详细入门教程(五):油门刹车标定表之双线性插值算法
Apollo Control——超详细入门教程(六):MPC二次规划问题转化(OSQP)
Apollo Control——超详细入门教程(七):基于运动学模型的MPC
目录
一、前言
笔者最近学习了Apollo Control模块的相关理论知识,并阅读了相关源码,有了一些收获和心得体会。个人认为从Apollo开源项目入手,结合代码来学习相关知识,将是一个比较好的学习方法。本专栏将从此思路出发,主要介绍相关的理论知识,帮助大家完善理论基础.
本专栏将完成一些必要的公式推导,由于相关的公式有很多,全部通过公式编辑器进行输入的话可能会浪费太多的时间,鉴于这部分我已经整理了详细的笔记,所以我会将笔记内容以图片的形式进行上传。如果大家感兴趣的话,可以详细看下公式的推导过程,如果不太关注推导过程的话,也可以先记住关键的结论,我将对需要着重注意的部分进行说明,在代码阅读阶段遇到相关问题时,再回过头来查阅笔记,这样也是可以的。
本节内容为试读部分,将推导基于道路误差的车辆动力学模型,如果大家觉得有所收获的话,欢迎订阅专栏学习后续内容。祝大家学习愉快!
二、公式推导
Apollo控制模块的理论来源是《Vehicle Dynamics and Control》这本书,下述推导过程和此书是一致的,并对书中省略的推导过程进行了补充。
2.1、二自由度车辆动力学模型推导
大家看下笔记图片可还清晰?如果哪里没有拍清楚,请评论区留言,我会重新拍照上传。
专栏后续文章中理论推导部分的形式便会是这样,首先上传详细的公式推导笔记,然后对其中的关键部分进行说明。对于二自由度车辆动力学模型推导,大家需要掌握最终的推导结果,即这个用状态空间方程形式表示的公式:
还有几个地方需要说明:
1)需要注意轮胎侧偏刚度永远为负数,这是由轮胎坐标系的定义决定的:即正的侧偏力对应负的侧偏角。同时,侧偏刚度一般为同轴两侧车轮侧偏刚度的和,详细内容请翻阅《汽车理论》。那为什么上述推导中注释侧偏刚度应带入正值呢?
汽车理论中轮胎坐标系为右手坐标系,给出的轮胎侧偏力的计算公式如下。如下图所示,侧偏角为一负值,乘以负的侧偏刚度,得到正的侧偏力。
而Apollo代码中的轮胎坐标系应该是采用了左手坐标系,如下图所示。侧偏角为一正值,乘以正的侧偏刚度,再乘以-2,得到负的侧偏力。
因此在阅读Apollo代码时,就默认侧偏刚度为正了。
2)二自由度车辆动力学模型的推导过程做了小角度假设,因此不太适合于像倒车入库这种前轮转角较大的工况,该工况可考虑使用基于几何关系推导的运动学模型。
2.2、基于道路误差的车辆动力学模型
在优化问题的求解中,一般将状态方程的状态量写为偏差的形式,因此需要推导基于道路误差的车辆动力学模型。
最终推导结果如下所示:
需要注意的有几点:
1)一般规划模块给出的轨迹比较平滑,因此公式的最后一项(即用红框标注的部分)通常较小,可忽略不计。
2)Apollo代码中部分变量的值可能与上图公式中差了2倍,这是因为公式推导中侧偏刚度为单个轮胎的侧偏刚度,而Apollo则是带入了两侧轮胎侧偏刚度之和。
三、总结
该节推导了基于道路误差的车辆动力学模型,该模型可用于Apollo中LQR以及MPC问题的建模。如果觉得对你有帮助的话,欢迎点赞、收藏、订阅,下期再见!