0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Matlab/Simulink实现ACC的Test bench

ml8z_IV_Technol 来源:YXQ 2019-06-03 15:48 次阅读

目标识别

关于目标识别已经有大量的案例和教程被公布。使用Tensorflow APIMatlab/Simulink 计算机视觉工具箱,结合各种类型的传感器数据(如3D激光雷达云点和/或相机拍摄的照片),可以从摄像机视频流中识别出目标物体。

当然,即便通过ML/DL技术可以识别出目标物体,仍然远远不能满足一个简单的ADAS功能的开发。自动驾驶汽车首先要借助传感器数据正确地理解现实环境,然后还要具备思考、规划和反应的能力。更具体来说,就是系统需要能够正确地控制车辆。

模型预测控制

基于简单的自行车模型,可以将运动学和动力学控制方程输入模型预测控制(MPC)算法

在当今所有的过程控制中,MPC只是其中一种控制技术。PID当然是用的最多的控制方法,但由于MPC具有多输入/输出的优化能力和约束条件,使MPC也超过了10%的占有率。

MPC是一种基于模型的闭环优化控制策略,大量的预测控制权威性文献都无一例外地指出, 预测控制最大的吸引力在于它具有显式处理约束的能力, 这种能力来自其基于模型对系统未来动态行为的预测, 通过把约束加到未来的输入、输出或状态变量上, 可以把约束显式表示在一个在线求解的二次规划或非线性规划问题中。

模型预测控制具有控制效果好、鲁棒性强等优点,可有效地克服过程的不确定性、非线性和并联性,并能方便的处理过程被控变量和操纵变量中的各种约束。

线性时不变(LTI)控制系统,连续状态空间模型可以这样描述。

连续状态空间模型。A、B、C、D是常数状态空间矩阵。x是状态向量,y是输出,u是输入/控制变量

基于一个简单的自行车模型,状态函数可以写成:

Vy, dot_Vy用于横向控制,psi, dot_psi用于转向控制,Vx, dot_Vx用于纵向控制。详细信息可以从Matlab文档页面找到。

MPC的主要思路是预测工厂输出的产量,优化器会找到控制输入的最优序列,使工厂的产量尽可能接近设定值。

如下图中展示了一个典型的场景,图中是一辆行驶在十字路口的汽车。MPC将考虑到道路图的曲率,并将道路图和工厂路径之间的误差最小化。MPC的主要优点之一就是具有硬约束和软约束能力的多输入多输出,非常适合ADAS函数中的控制策略。

ACC

以下的示例演示了这样一个场景:前方一辆汽车从右边进入了自车的车道,雷达和相机传感器识别到了前车,并已确认。为了安全起见,自车必须估算与出前方车辆的相对距离w.r.t.,如果距离小于允许的距离,则自车必须拉开距离,并保持安全距离直至完全停车。直到距离前车足够远,然后自车逐渐加速,直到达到预期的速度。

ACC传感器融合

在该Test Bench中,ACC的传感器融合模块具有检测同一车道(以及传感器检测范围内的其他车道)是否有前车的功能,融合测验(去除冗余),将检测传递给MPC,MPC将会根据实际情况相应地减慢或加速自车。

由下图可见,视觉和雷达识别的对象、仿真时间、自车的纵向速度和路面曲率为输入参数。传感器数据融合和前车跟踪子模块,包含由于雷达噪声引起的第一次雷达探测聚类,并将来自视觉和雷达的探测结合输入到多目标跟踪器。使用卡尔曼滤波器精确估计检测的状态并融合检测,然后,利用确定的轨道和道路信息确定自车与前车之间的相对距离和相对速度,实现ACC的功能。

利用MPC算法方案,将时间间隔(可以是驾驶员的反应时间)、纵向速度和驾驶员设定的速度与相对距离、相对速度一起加入自适应巡航控制系统。在这个测试台上,使用了预构建的ACC控制模块。也可以构建特定于用户的MPC模块。

该ACC模块的主要功能是跟踪驾驶员设定的速度,并通过调整自车的纵向加速度来保持与前车的安全距离。该模块使用了模型预测控制(MPC)计算出最佳控制动作,同时还满足了安全距离和速度,并约束了一定的加速度。

算法结构细节如下图所示。然后用户可以从Matlab中对原始ACC模块进行相应的修改。

到目前为止,ACC的主要控制已经基本完成。然而,车辆在行驶时,司机还必须要一直保持在车道上。因此,车道跟踪功能(也就是转向控制)也需要考虑在内。

随着MPC纵向加速度的调节,Simulink块中必须要输入道路(地图)信息。在本次的测试用例中,道路几何简单地通过常曲率1/R来描述,并已创建于Matlab的工作空间中,可以直接从子系统中使用。

使用MPC调节纵向加速度和曲率的道路更新的位置和偏航角的自车,转向控制采用PID控制。

MPC能够对自车的加速度进行调节,结合采用比例积分微分(PID)控制方案,将可以实现转向控制。

基于自行车模型,可以模拟出自车的位置和偏航角。

到这里,我们已经具备了运行ACC模拟的所有必要条件。单击run按钮,可以查看结果,如下图所示(只显示一帧)。

整个仿真结果如下:

当一辆他车低速车行驶进入速度较快的自车的车道时,只要传感器检测到低速行驶的前车,在MPC控制的帮助下,自车会先减速以保持安全距离。当前车离开同一车道时,自车再次加速,加速直到驾驶员设定的速度。自车的速度和驾驶员设定的速度如下图所示,并显示了自车的相对距离和加速度曲线。

最后这点很重要,ADAS必须使用C或C++部署到特定的ECU上,而Matlab提供了代码生成器工具箱,可以轻松实现这一点。如果需要添加或进一步修改C算法,则可以基于生成的C/C++代码继续编写。

以上回顾了利用Matlab/Simulink实现ACC的Test bench。对于更复杂的或不同的驾驶场景,各位朋友们可以使用本文描述的类似方案来进行进一步的功能开发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48077

    浏览量

    740002
  • ACC
    ACC
    +关注

    关注

    1

    文章

    54

    浏览量

    22584

原文标题:利用模型预测控制技术开发ADAS仿真测试台架

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MathWorks宣布推出MATLABSimulink的2024a版本

    MathWorks宣布推出MATLABSimulink的2024a版本
    的头像 发表于 04-07 14:03 146次阅读
    MathWorks宣布推出<b class='flag-5'>MATLAB</b>和<b class='flag-5'>Simulink</b>的2024a版本

    MATLAB的数字逻辑电路Simulink仿真

    电子发烧友网站提供《MATLAB的数字逻辑电路Simulink仿真.pdf》资料免费下载
    发表于 11-17 15:39 3次下载
    <b class='flag-5'>MATLAB</b>的数字逻辑电路<b class='flag-5'>Simulink</b>仿真

    Simulink中如何创建一个Publisher

    > Library Browser打开Simulink库浏览器。单击ROS工具箱选项卡(也可以在MATLAB命令窗口中输入roslib)。选择ROS库。 4.将Publish块拖到模型中。双击该块以配置主题和消息类型。 5.为Topic源选择
    的头像 发表于 11-15 17:32 296次阅读
    <b class='flag-5'>Simulink</b>中如何创建一个Publisher

    讲解MATLAB/Simulink HDL使用入门

    我们将使用实例讲解MATLAB / Simulink HDL 使用入门。
    的头像 发表于 11-06 09:12 616次阅读
    讲解<b class='flag-5'>MATLAB</b>/<b class='flag-5'>Simulink</b> HDL使用入门

    利用Simulink自动生成STM32串口代码

    功能:利用Simulink自动生成STM32串口代码,在Keil中编译后直接下载到主芯片,实现串口通讯的功能。
    的头像 发表于 10-25 17:04 1037次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>Simulink</b>自动生成STM32串口代码

    MATLAB语言编程方法 MATLAB实现信号通过系统的仿真

      实验目的:  1、 学习MATLAB语言的编程方法及熟悉MATLAB指令;  2、 深刻理解卷积运算,利用离散卷积实现连续卷积运算;  3、 深刻理解信号与系统的关系,学习
    发表于 07-18 16:51 0次下载

    MBD的Simulink使用技巧:Simulink代码生成的基本概念(1)

    MATLAB/Simulink中一共提供三个代码生成的工具
    的头像 发表于 07-13 15:11 1402次阅读
    MBD的<b class='flag-5'>Simulink</b>使用技巧:<b class='flag-5'>Simulink</b>代码生成的基本概念(1)

    介绍一下simulink的模型工作区

    simulink模型工作区与 MATLAB 工作区的差异在于每个模型都带有自己的工作区以存储变量值。
    的头像 发表于 06-29 15:17 1858次阅读
    介绍一下<b class='flag-5'>simulink</b>的模型工作区

    基于Matlab/Simulink建立一种Thevenin/RC电池模块仿真模型

    本文以锂电池数学模型为基础,在Matlab/Simulink的仿真系统中,建立了一种Thevenin/RC电池模块仿真模型,通过实际工况试验,测试精度在允许误差范围内,为电池SOC/SOH研究提供了极大的参考价值。
    的头像 发表于 06-28 10:49 3370次阅读
    基于<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>建立一种Thevenin/RC电池模块仿真模型

    基于龙伯格观测器Luenberger的无感控制+Matlab/Simulink仿真

    本章节采用龙伯格观测器进行永磁同步电机的无传感器控制,首先分析了龙伯格观测器的原理,然后设计了PMSM的全阶龙伯格观测器,最后通过Matlab/Simulink对该观测器方案进行仿真分析,为了进行
    发表于 06-08 14:46 2209次阅读
    基于龙伯格观测器Luenberger的无感控制+<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>仿真

    基于扩展卡尔曼滤波EKF的无感控制+Matlab/Simulink仿真案例

    本章节采用扩展卡尔曼滤波进行永磁同步电机的无传感器控制,首先分析了扩展卡尔曼滤波的原理,然后基于扩展卡尔曼滤波对PMSM进行状态估计,最后通过Matlab/Simulink对该方案进行仿真分析。
    发表于 06-08 14:42 2653次阅读
    基于扩展卡尔曼滤波EKF的无感控制+<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>仿真案例

    如何建立matlab和freemaster的关系?如何将freemaster数据导入matlab/simulink

    你能帮助我们的客户解决以下问题吗? 如何建立matlab和freemaster的关系? 如何将freemaster数据导入matlab/simulink
    发表于 05-29 08:25

    永磁同步电机流频比I/F控制原理及Matlab/Simulink仿真分析

    本章节采用流频比I/F控制方法驱动永磁同步电机的转动,首先分析流频比I/F的控制原理,然后在Matlab/Simulink中进行永磁同步电机流频比I/F控制系统的仿真分析,为后续PMSM无感启动做铺垫。
    的头像 发表于 05-24 11:36 1420次阅读
    永磁同步电机流频比I/F控制原理及<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>仿真分析

    SVPWM控制技术的基本原理及Matlab/Simulink仿真分析

    本章节首先介绍SVPWM控制技术的原理,然后详细分析SVPWM控制算法的具体实现方式包括7段式SVPWM与5段式SVPWM算法,并通过Matlab/Simulink对SVPWM控制算法进行仿真分析,最后通过永磁同步电机矢量控制的
    的头像 发表于 05-24 11:10 5093次阅读
    SVPWM控制技术的基本原理及<b class='flag-5'>Matlab</b>/<b class='flag-5'>Simulink</b>仿真分析

    simulink和pspice联合仿真问题

    的联合仿真操作: PSpice 17.4+Matlab a2023 利用pspice调用matlab,添加主路径后,simulink中有PSpice block模块,然后双击模块选择模
    发表于 05-23 15:04