无人驾驶模型预测控制carSIM和MATLAB联合仿真

2023-05-16

本例参照龚建伟的《无人驾驶车辆模型预测控制》书中第四章节
1.carSIM软件介绍
carSIM是由美国MSC公司开发的车辆动力学仿真软件,它可以方便灵活地定义实验环境和试验过程,准确预测和仿真汽车的操纵稳定性、动力性、平顺性等,适用于轿车、轻型货车等车型的建模仿真。
在这里插入图片描述
2.仿真实例
所用软件和环境:
(1)carSIM8.02
(2)正版MATLABR2019a
(3)win10
先进行车辆模型的搭建:
(1)运行carSIM8.02
(2)出现“select recent database”(“选择数据库”)对话框,如下图所示:

在这里插入图片描述
选择“continue with the selected database”,弹出如下图所示的对话框:
在这里插入图片描述
选择“select”即可打开carSIM主界面:
在这里插入图片描述
carSIM主界面主要由3大部分组成:车辆参数及仿真工况的设置、数学模型求解与后处理。用户可以修改车辆参数,根据需要来设置仿真工况。
(3)点击“New”,新建一组dataset,如图所示,在两个文本框中分别输入“Example”和“MPCtest1”,点击“Set”完成新建
在这里插入图片描述
(4)选择主菜单的”Datasets"下拉菜单,会发现Example一栏多出“MPCtest”
在这里插入图片描述
(5)点击下图中的下三角,选择相应的车型:
在这里插入图片描述
(6)新建满足要求的仿真工况:
1.点击下图所示工况

在这里插入图片描述
即出现下图所示的界面:
在这里插入图片描述
2.新建仿真工况:点击上图中的“New”,在下图文本框中依次输入“MPC Example”和“newSplit Mu”,点击“Set”,完成新建。
在这里插入图片描述
在这里插入图片描述
3.根据要求设置仿真工况:
目标车速18km/h;
无制动;
档位控制选用闭环AT6档模式;
无转向;
路面选择为1km2摩擦系数为1.0的方形路面;
完成后的设置,如下图所示:
在这里插入图片描述
在这里插入图片描述
4.设置仿真时间
同样在设置仿真工况的主界面,在下图所示的文本框中输入“30”
在这里插入图片描述
5.选择前面新建的仿真工况点击“Home”图标,返回carSIM的主界面,选择前面新建的“Split Mu”工况。
在这里插入图片描述
6.设置仿真步长
在carSIM主界面中,点击下拉菜单“Tools”,选择“Preference",出现如下图所示的界面,将仿真步长设置为“0.001”。
在这里插入图片描述
(7)建立carSIM与simulink联合仿真的模型
1.点击下图所示的Models选项,选择“Models:Simulink"。
在这里插入图片描述
2.点击下图所示的选项,选择“[Link to New Dataset]"。
在这里插入图片描述
此时弹出下图所示对话框,在对话框中依次输入“Example”和“MPCtest1”,点击“Creat and Link”完成新建,如下图所示:
在这里插入图片描述
3.点击下图所示的“MPCtest1”
在这里插入图片描述
将会弹出下图所示界面:
在这里插入图片描述
选择相关路径。以我的路径为例:
浏览工作路径:
E:\CarSim802_Prog\CarSim_Data
simulink Model的路径:
E:\CarSim802_Prog\CarSim_Data\Extensions\Simulink
在该目录下不要新建,复制一个现成的,重命名为:MPCtest.mdl,空的simulink模型是导不过去的
然后回到上图所示界面点击浏览找到MPCtest.mdl,如下图所示:
在这里插入图片描述
【注】这里有一个问题要注意,carSIM8.02是和MATLAB2011搭配的,高版本MATLAB要将下面的选项选上:

4.定义carSIM导入变量
点击下图所示的“Import Channels”,选择“I/O Channels:Import”
在这里插入图片描述
在这里插入图片描述
然后点击下图所示的“[Copy and Link Dataset]”;输入MPCtest1 input在这里插入图片描述点击MPCtest1 input“图标,显示下图所示界面,按照下图所示界面进行设置
在这里插入图片描述
设置好以后返回点击“MPCtest1 output,按照下图进行相应设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是:carSIM的导出变量(X0,Y0和Yaw)和simulink中MPC模型的输入量是相对应,carSIM的导出变量(Vx和Steer_SW)为观测量,所以这里的carSIM的导出变量应按照下图所示的顺序进行顺序选择:
在这里插入图片描述
点击“Home“回到carSIM主界面。点击send to simulink 图标,此时之前新建的MPCtest1.mal模型将被打开:
在这里插入图片描述
按照此图对原模型进行修改
MATLAB command Windows命令窗口
完成上述设置后,carSIM通过外部接口将车辆模型发送至指定路径下的simulink仿真文件中,carSIM模块即以S函数的形式增加到simulink模型库中。
在这里插入图片描述

将simulink浏览窗口中的“S-Function”图标拖拽到MPCtest1.mdl中,显示新的S函数模块。双击该图标,弹出如下图所示的对话框,在“S-Function name”中输入MY_MPCController3
在这里插入图片描述
在模型中拖入延迟模块,目的是防止出现代数环
在这里插入图片描述
MY_MPCController3控制器模块的输出为车速和前轮转角,需对其转换成满足carSIM模块要求的导入变量:IMP_SPEED(质心车速[km/h]).IMP_STEER_l1(左前轮转角[°]),IMP_STEER_人(右前轮转角[°]),IMP_STEER_L2,IMP_STEER_R2。所以,在MY_MPCController3控制器模块的输出量与carSIM模块的导入变量之间加入了转换函数:
在这里插入图片描述
在simulink界面点击运行,运行处的结果如下图所示:
在这里插入图片描述
仿真动画
关于模型预测控制理论部分的内容以及公式推导部分的内容,可以观看B站天神的视频讲解,讲解的很到位也很详细,链接地址:
https://space.bilibili.com/387233952/dynamic
也非常感谢天神将书上第四章MPCcontroller的代码修改过来了,才得以跑出和书中一样的路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人驾驶模型预测控制carSIM和MATLAB联合仿真 的相关文章

  • Matlab PARFOR 循环可以通过编程方式打开/关闭吗?

    有一个关于 MATLAB 中 parfor 的简单问题 我想在程序中设置一个标志 以便在 parfor 和常规 for 循环之间进行更改 基本上 我需要此功能 以便我的代码的某些部分可以在 调试 模式下更新图形 然后当关闭该标志时 使用 p
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 扩展 MATLAB 函数名称的最大长度

    我编写了一个 MATLAB 程序 可以动态创建自定义 MATLAB 函数 并使用以下命令在其他 MATLAB 实例中启动它们unix命令 我使用这个程序来自动化 fMRI 神经影像分析 使用 SPM8 for MATLAB 一切正常 但是
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • 使用符号求解器仅求解某些变量

    我正在尝试在 MATLAB 中求解包含 3 个变量和 5 个常量的方程组 是否可以使用solve求解三个变量 同时保持常量为符号而不用数值替换它们 当您使用SOLVE http www mathworks com access helpde
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • 快速有效地计算已知特征值的特征向量

    我的问题的简短版本 计算矩阵特征向量的最佳方法是什么A 如果我们已经知道属于特征向量的特征值呢 更长的解释 我有一个很大的随机矩阵A由于它是随机的 因此具有非负左特征向量x 这样A Tx x 我正在寻找快速有效的方法来数值计算这个向量 最好
  • 检测分段常数信号中的阶跃

    我有一个分段恒定信号 如下所示 我想检测步骤转换的位置 标记为红色 我目前的做法 使用移动平均滤波器平滑信号 http www mathworks com help signal examples signal smoothing html
  • MATLAB 列含义的内存分析

    我正在使用 MATLAB 配置文件来使用命令观察内存 profile memory on profile clear my code profile report and i got this table 1 我想问一下什么意思 已分配内存
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir

随机推荐

  • 网络工程师Python入门学习笔记-01

    目录 一 Python编码规范 xff1a 1 1 符号 xff1a 1 2 注释 xff1a 1 3 代码缩进 xff1a 很重要 二 Python的函数与模块 三 Python的类与方法 3 1 类 3 2 telnetlib介绍 xf
  • NETCONF、RESTCONF和YANG

    目录 一 NETCONF RESTCONF和YANG是之间什么关系 xff1f 二 Netconf简介 2 1 一般使用工具 xff1a MG Soft 简介 三 Netconf YANG 原理与实践 3 1 NETCONF协议 3 2 Y
  • Telemetry原理

    Telemetry 是一种网络设备监控技术 xff0c 提供 周期采样网络设备内的统计数据和状态数据的能力 一 Telemetry概述 1 1 技术背景 xff1a 网络设备的统一监控和性能管理是运维平台的重要功能 xff0c 设备的监控数
  • 二三层网络设备封装与解封装原理

    1 寻址转发 xff08 寻址指的是寻找IP地址 xff09 路由表放在一个公共的地方 xff0c 比如主控板上 xff0c 由主控板 的CPU运行路由协议 xff0c 计算路由 xff0c 生成和维护路由表 转发表与路由表 xff1a 转
  • BLE外围设备在Advertising中添加ServiceData

    startAdvertising失败 xff0c errorCode 61 1 AdvertiseCallback ADVERTISE FAILED DATA TOO LARGE errorCode解释 xff1a Failed to st
  • SBFD(Seamless Bidirectional Forwarding Detection)

    SBFD简介 xff1a 更适合SR隧道 BFD进行大量链路检测 时 xff0c 其状态机的协商时间会变长 xff0c 不适合Segement Routing SBFD xff08 Seamless Bidirectional Forwar
  • 使用CCProxy+Proxifier实现代理

    目录 1 使用场景2 什么是网络代理 xff1f 3 CCProxy3 1 说明3 2 下载安装3 3 使用说明 4 Proxifier4 1 说明4 2 下载安装4 3 使用说明4 4 Proxifier CPU占用率高问题解决 1 使用
  • 5G/NR PDSCH之频域资源分配

    物理下行共享信道 Physical Downlink Shared CHannel PDSCH 是无线通信系统中物理下行信道的一种 xff0c 用于传输下行用户数据 而在PDSCH进行下行数据传输时 xff0c 是需要基站给下行数据指定分配
  • NMS详解及pytorch实现:hard-nms(diou\overlap\merge\batched),soft-nms

    文章目录 NMS详解及pytorch实现 hard nms diou overlap merge batched soft nms1 简介2 原理3 实现3 1 伪代码3 2 pytorch源码3 3 知识点 参考资料 NMS详解及pyto
  • Deep-Sort多目标追踪算法代码解析

    Deep SORT是多目标跟踪 Multi Object Tracking 中常用到的一种算法 xff0c 是一个Detection Based Tracking的方法 这个算法工业界关注度非常高 xff0c 在知乎上有很多文章都是使用了D
  • RTFNet:基于可见光/红外图像的城市自动驾驶道路场景语义分割

    论文下载 xff1a https yuxiangsun github io pub RAL2019 rtfnet pdf 代码下载 xff1a https github com yuxiangsun RT 简介 xff1a 语义分割是自动驾
  • 红黑树的查找时间复杂度O(logn)

    红黑树查找时间复杂度 如果二叉排序树是平衡的 xff0c 则n个节点的二叉排序树的高度为Log2n 43 1 其查找效率为O Log2n xff0c 近似于折半查找 如果二叉排序树完全不平衡 xff0c 则其深度可达到n xff0c 查找效
  • C++版本OpenCv教程(三十五 )Laplacian算子

    上述的边缘检测算子都具有方向性 xff0c 因此需要分别求取X方向的边缘和Y方向的边缘 xff0c 之后将两个方向的边缘综合得到图像的整体边缘 Laplacian算子具有各方向同性的特点 xff0c 能够对任意方向的边缘进行提取 xff0c
  • 【从零开始学深度学习编译器】五,TVM Relay以及Pass简介

    TVM Relay以及Pass简介 0x0 介绍0x2 Relay介绍0x2 1 使用Relay建立一个计算图0x2 2 Module xff1a 支持多个函数 xff08 Graphs xff09 0x2 3 Let Binding an
  • 模型量化的原理与实践 —基于YOLOv5实践目标检测的PTQ与QAT量化

    这里写自定义目录标题 一 量化基础知识 1 1 Tops是什么意思 1 2 什么是定点数 1 3 定点数转换 1 4 什么是量化 1 5 定点计算 1 5 1 定点计算 误差计算 1 5 2 定点计算 内存对比 1 5 3 定点计算 速度对
  • SeekBar自定义background和progress无效

    无效代码 xff1a lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt layer list xmlns android 61 34 http schemas android
  • TensorRT INT8量化说明文档

    TensorRT developer guide intro quantization 7 Working with INT8 7 1 Introduction to Quantization 7 1 1 Quantization Work
  • YOLO-NAS讲解

    Meet YOLO NAS New YOLO Object Detection Model Beats YOLOv6 amp YOLOv8 代码链接 What is YOLO NAS What does the NAS in YOLO NA
  • Windows下jupyter notebook的安装和使用

    1 安装 xff1a xff08 1 xff09 首先打开Windows命令终端 xff1a 输入命令 xff1a pip install jupyter notebook 慢慢等待安装完成就可以了 我的是已经是安装完成了 在命令行窗口中输
  • 无人驾驶模型预测控制carSIM和MATLAB联合仿真

    本例参照龚建伟的 无人驾驶车辆模型预测控制 书中第四章节 1 carSIM软件介绍 carSIM是由美国MSC公司开发的车辆动力学仿真软件 xff0c 它可以方便灵活地定义实验环境和试验过程 xff0c 准确预测和仿真汽车的操纵稳定性 动力