概要
在随着车载控制器算力的持续提升以及高级驾驶辅助系统(ADAS)的广泛应用,多种先进的控制策略已逐步应用于量产车型的控制器中,比如MPC,ECMS等。MPC 由于其可预测、硬约束、可反馈、可协同、能在线等优点正在得到越来越广泛的应用。本文将以一个简单的基于坡度的预见性巡航为示例,介绍GT-SUITE与Python联合进行MPC的基本方法。
1简介
随着汽车电子电气架构的不断演进,车载控制器的计算能力显著提升,为复杂控制算法在量产车型中的实际应用提供了坚实的硬件基础。与此同时,高级驾驶辅助系统(Advanced Driver Assistance Systems, ADAS)的快速普及和智能化趋势,推动了车辆控制系统从传统的反馈控制向更具前瞻性与优化能力的先进控制策略转型。在此背景下,模型预测控制(Model Predictive Control, MPC)、等效油耗最小策略(Equivalent Consumption Minimization Strategy, ECMS)等基于模型的优化控制方法,已逐步从学术研究走向工程实践,并在动力系统管理、能量分配、纵向车速控制等领域展现出卓越的性能潜力。
2 Python中适合做 MPC 的库
Python 适合做 MPC 的快速原型开发,且 Python 与 GT 联合仿真速度快。常见的与MPC相关的Python库如下表所示,不同的库用于不同的阶段。本例采用 scipy.optimize 求解非线性MPC问题。该方法使用简洁,适合快速原型测试。但计算效率偏低。若要提高计算效率,可以将非线性MPC线性化后,转化为标准 QP 问题进行求解,计算效率将非常快,如 qpsolvers,osqp等。
3 预见性续航模型说明
模型如下图所示,以一个简单的电动乘用车为例。
4 Python 外部库的使用和 Debug 方法 4.1外部库的使用 用户可以直接使用GT自带的Python的IDE,但是考虑到使用的灵活性,使用外部库可以更好的管理各类项目。对于 Pycharm ,需要首先指向 Pycharm的系统解释器,不可直接指向Pycharm的虚拟环境(venv)。对于Spyder,可以直接指向其Conda创建的虚拟环境。在脚本中,将pycharm的虚拟环境的路径添加到系统路径中去(Spyder不需要该操作) 4.2Debug 在debug时,建议关闭Dashboard。避免当脚本有严重错误时,软件卡死。 模型运行时,自动在此处停止 输入continue,模型将继续运行,至下一个断点处。Debug完成后,将脚本中的断点全部删除或注释掉即可。
5 GT 与 Python 联合仿真的关键设置 MPC的采样间隔为 0.1s,GT的整车动力学模型的时间步长为 0.01s。为了避免每次调用Python脚本就执行一次MPC优化计算,需要对MPC 所在控制回路进行单独时间步长设置,即 0.1s。 该 MPC 为单步MPC控制器,便于和GT进行信息交互。
6 计算结果