【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝
个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。

🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒
若您觉得内容有价值,还请评论告知一声,以便更多人受益。
转载请注明出处,尊重原创,从我做起。

👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜
在这里,您将收获的不只是技术干货,还有思维的火花

📚 系列专栏:【运动控制】系列,带您深入浅出,领略控制之美。🖊
愿我的分享能为您带来启迪,如有不足,敬请指正,让我们共同学习,交流进步!

🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~


文章目录

  • 引言
  • 一、Carsim 基础操作与车辆参数设置
    • 1、Carsim 安装路径与数据库路径
    • 2、车辆参数选择
    • 3、轮胎参数调整
  • 二、Carsim 与 Simulink 联合仿真
    • 1、创建 Simulink 模型
    • 2、配置 Carsim 输入输出通道
    • 3、添加 Carsim 模块并运行仿真
  • 三、仿真结果分析
    • 1、车辆直线行驶
    • 2、车辆转向运动
  • 四、总结
  • 参考资料


引言

  本篇博客是 自动驾驶控制算法 系列的第八节第Ⅱ部分。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。

本篇博客讲解仿真软件的操作,做仿真要有两个软件:

  • Carsim
  • Matlab

  推荐 Matlab R2020a + Carsim 2019.1 的版本,其他版本的 Matlab 和 Carsim 可能会不兼容。


一、Carsim 基础操作与车辆参数设置

1、Carsim 安装路径与数据库路径

  在安装 Carsim时,一定有两个文件路径:数据库路径软件安装路径

  Carsim 的数据库路径如下图所示:
在这里插入图片描述

  Carsim的安装路径如下图所示:
在这里插入图片描述

  这两个文件路径非常重要。Carsim在安装时,就要求设置这两个路径。

  打开Carsim,让选择数据库的文件路径:
在这里插入图片描述

  打开 Carsim 软件,启动时会提示选择 Carsim 的数据库路径。

  刚刚打开时可能什么都没有:
在这里插入图片描述

2、车辆参数选择

  点上面的C-Class, Hatchback后面的下拉按钮,可以选择车辆类型, A A A 级车、 B B B 级车、 C C C 级车:
在这里插入图片描述

  每个车的质量、几何尺寸以及转动惯量不一样,这是 E E E 级车,质量和惯量都可以在图上读到:

在这里插入图片描述

  在这里就选 C C C 级车,就是普通的车:

在这里插入图片描述

  点击第一行的C-Class, Hatchback进入如下界面:

在这里插入图片描述

  可以读取到车辆相关的基本的信息:

在这里插入图片描述

  车辆的质量、惯量之类的,在这里点击 Front Suspension

在这里插入图片描述

  可以读取到悬架的质量,因为上面 Unsprung mass 质量只是簧上质量,所以
整车质量 = 簧上质量 + 悬架质量 整车质量 =簧上质量+悬架质量 整车质量=簧上质量+悬架质量  退出,看一下轮胎:

在这里插入图片描述

3、轮胎参数调整

  这里有比较重要的轮胎侧向力 F y F_y Fy

在这里插入图片描述
  这是轮胎的侧偏曲线:

在这里插入图片描述

  侧偏曲线反映的是轮胎的侧偏刚度,图中有多条曲线,因为轮胎的侧偏刚度和垂向力有关。所以看右边的表,第一行表示的是垂向力的大小,因为垂向力越大,侧偏刚度也就越大。真正的侧偏角和侧偏力的关系从第二行开始读曲线,看图也是从第二行开始画的,所以不同垂向力就对应了不同的侧偏刚度曲线。

  侧偏刚度的计算,是通过整车质量以及质心到前轮后轮的距离,把四个轮的垂向力算出来,再代到轮胎的侧偏力和侧偏角关系曲线里,根据垂向力找对应的侧偏力与侧偏角关系曲线,根据关系曲线计算侧偏刚度。

  侧偏刚度的计算就是求斜率。看一下侧偏力和侧偏角的关系曲线,发现在侧偏角较小时,近似为直线,侧偏角变大后就变成曲线,所以只求近似为直线段的斜率,就是侧偏刚度,因为做控制不允许出现过大的侧偏角情况,这样车辆有失稳的危险。所以只考虑线性段,即曲线在小侧偏角下的斜率,就是侧偏刚度。

  注意:因为侧偏刚度应该是负的,曲线的斜率是正的,所以计算时要改成负号。

  Carsim 有很多种轮胎,不同轮胎的侧偏刚度不同,下面换轮胎看看:
在这里插入图片描述

  侧偏刚度改变,所以可以换各种各样的轮胎。


二、Carsim 与 Simulink 联合仿真

如何把 Carsim 和 Simlink 联合在一起?

1、创建 Simulink 模型

  在 Models 里有 Simulink:
在这里插入图片描述

  选择它,再选第二个[Link to New Dataset]

在这里插入图片描述

  随便起个名字,比如 test,点进去:

在这里插入图片描述

  在软件里,要指定 Simulink 模型的路径,但是现在还没有模型,所以要先建模型。

  打开 Matlab,后打开 Simulink ,建立空模型,起个名字test,保存文件到Carsim的数据库路径下:
在这里插入图片描述

  名字和 Carsim 的 test 可以不一样,随便取什么都行。

  在数据库文件里,找到刚建好的空模型:

在这里插入图片描述

  注意: Matlab 要设置添加两个路径: Carsim数据库路径和安装路径。

  • 当前工作路径,就是 Matlab 工作路径,要设置成数据库的路径。

在这里插入图片描述

  • Metlab 里面有个设置路径,在设置路径里把 Carsim 的两个路径都设置进去,添加并包含子文件夹,把 Metlab 里面的数据库路径和安装路径它都弄到里面去,就这两个路径全都弄到里面去,选择添加并包含子文件夹

在这里插入图片描述

  要做这两步才可以,否则 Matlab 会报错。

  只有 Matlab 的工作路径设置成数据库路径,test才会自动保存在数据库路径的文件夹里。如果不是的话, test 可能保存到别的地方去,所以一定要先设置,再建 Simulink 模型。

2、配置 Carsim 输入输出通道

  回到 Carsim 软件,设置 输入(import)输出(export),选择IO Channels,选第二个选项I/O Channels: Import
在这里插入图片描述

  点击[Link to New Dataset],随便起个名字,输入(import)输出(export),选择IO Channels,选第二个选项I/O Channels: Import

  点进去里面什么都没有,因为还没有加载任何文件,所以先选择Choose run to get import omformation,第二个框选择Quick Start Guide Example中的Baseline

在这里插入图片描述

  选 select by unit按单位选择变量,控制的输入是油门、前轮转角、后轮转角,把前轮转角、后轮转角都添加进去:

在这里插入图片描述

  Carsim 软件的输出按单位选择变量输出。在算法里面要输出车的 x , y , φ , v x , v y , φ ˙ x,y,\varphi,v_x,v_y,\dot \varphi x,y,φ,vx,vy,φ˙,所以把这些变量添加到输出变量里:

在这里插入图片描述

  如果不小心点错了,双击它就会消失。

  在 Carsim 里,经常会有这样的变量,比如 L 1 、 R 1 、 L 2 、 R 2 L1、R1、L2、R2 L1R1L2R2 L L L 是左的意思, R R R 是右的意思, 1 1 1 是前的意思。 2 2 2 是后的意思,所以 L 1 L1 L1 是左前轮, R 1 R1 R1 是右前轮, L 2 L2 L2 是左后轮, R 2 R2 R2 是右后轮。

  设置完毕后退出,退出之后还没有完,先勾选 Show more options on this screen,再点 Advanced settings。在这里输入这一句话 opt_steer_ext(1) 4

在这里插入图片描述

  如果不写这句话,只能通过方向盘改变车辆的前轮转角,而算法是通过直接控制前端转角来改变车辆航向。所以如果不加这句话,无法将前端转角作为输入,所以要把这句话加上。

  在 Procedure 里可以控制仿真时间以及仿真路程,因为路不是无限的,时间也不可能仿很久。比如在这里定义只仿真 10 10 10 秒,或仿真到 21000 m 21000m 21000m 为止:

在这里插入图片描述

  两个条件任意一个达成,就停止仿真。

  一切准备就绪之后,点击 Send to Simulink就可以了。等一段时间后 Simulink 就跳出来了,可以看到模型还是空的,里面什么都没有,这样就没有办法仿真。

3、添加 Carsim 模块并运行仿真

  打开 Simulink,选择安装路径下的文件 Programs\solvers\Matlab84+\Solver_SF.slx,打开模块,里面有两个 Carsim 模块:
在这里插入图片描述

  把其中一个模块复制到空的 Simulink 模型。双击模块,有个参数是 Carsim 和 Simulink 连接的文件,Simulink 要填连接文件的名字,是在 Carsim 的数据库文件里,当点Send to Simulink 时,会自动会生成 simfile.sim 文件。

  文件名就是要填的参数,一般默认就是 simfile.sim ,当然可以改成其他名字,这样模块的参数也设置成相应的文件。

  当在 Carsim 里改轮胎,改车辆质量、车辆的惯量之类的参数,每次修改都要重新点击Send to Simulinksimfile 文件就会自动更新。


三、仿真结果分析

1、车辆直线行驶

  这样一切准备已经完成,运行一下试试。首先设置输入,比如节气门开度就是油门,设为 0.15 0.15 0.15,前轮转角、后轮转角都是 0 0 0

在这里插入图片描述

  运行一下,用示波器看输出:

在这里插入图片描述

  因为只仿真 10 10 10 秒,所以跑得非常快。

  在 Carsim 里看一下结果:

在这里插入图片描述

  因为没有打方向盘,所以车辆就是简单的直线行驶,不停加速。

2、车辆转向运动

  在 Simlink 模型里,把前端转角从 0 0 0 改成 30 30 30,再看一下仿真结果:
在这里插入图片描述

  从 Carsim 动画里看出来,车辆在不停地打转。 Simlink 示波器显示车辆坐标 ( x , y ) (x,y) (x,y),是类似正余弦函数的形式。

在这里插入图片描述


四、总结

  本篇博客讲解了 Carsim 基本操作,本篇博客详细介绍了如何使用Carsim和Matlab进行联合仿真。目的是让读者了解如何使用Carsim和Matlab进行联合仿真,以便更好地进行自动驾驶控制算法的研究和开发。


参考资料

  【基础】自动驾驶控制算法第八讲(二) 简单的软件操作


后记:

🌟 感谢您耐心阅读这篇关于 Carsim 与 Matlab 联合仿真基本操作 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/874788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GEE 将本地 GeoJSON 文件上传到谷歌资产

在地理信息系统(GIS)领域,Google Earth Engine(GEE)是一个强大的平台,它允许用户处理和分析大规模地理空间数据。本文将介绍如何使用 Python 脚本批量上传本地 GeoJSON 文件到 GEE 资产存储,这对…

初识C++|继承

🍬 mooridy-CSDN博客 🧁C专栏(更新中!) 目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承父类成员访问方式的变化 1.3继承类模板 2. 父类和子类对象赋值兼容转换 3. 继承中的…

国内外大模型汇总(包括科大星火、文心一言、通义千问、智普清言、华为大模型)

国内外大模型汇总 1. 科大讯飞星火认知大模型 主要特点: 多语言能力:以中文为核心,同时支持多语言处理,能够进行跨语种的语言理解和生成。 广泛的任务能力:具备内容生成、语言理解、知识问答、推理、数学计算、代码…

数学建模笔记—— 主成分分析(PCA)

数学建模笔记—— 主成分分析 主成分分析1. 基本原理1.1 主成分分析方法1.2 数据降维1.3 主成分分析原理1.4 主成分分析思想 2. PCA的计算步骤3. 典型例题4. 主成分分析说明5. python代码实现 主成分分析 1. 基本原理 在实际问题研究中,多变量问题是经常会遇到的。变量太多,无…

小怡分享之栈和队列

前言: 🌈✨前面小怡给大家分享了顺序表和链表,今天小怡给大家分享一下栈和队列。 1.栈 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#x…

WPF中依赖属性或附加属性的继承

引言 我们可以轻易的编写一个附加属性类,增加任意类型的附加属性并编写一定的逻辑来处理附加值的变化通知。假如控件是我们自定义的一个label、button 、textbox等,自定义控件当然是其他基础类型元素的组合,如shape、line、rectangle、geome…

针对SVM算法初步研究

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝心态决定高度,细节决定成败…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲,在演讲中Larry将AI技术和云战略推到了前所未有的高度,从新的Oracle 23c改名到Oracle23ai,到Oracl…

活动|华院计算宣晓华受邀出席“AI引领新工业革命”大会,探讨全球科技的最新趋势

8月31日,“AI引领新工业革命”大会于上海图书馆圆满落幕。本次大会由TAA校联会和台协科创工委会联合主办,得到上海市台办、上海市台联、康师傅的大力支持。大会邀请了NVIDIA全球副总裁、亚太区企业营销负责人刘念宁,元禾厚望资本创始合伙人潘…

828华为云征文|华为云Flexus X实例docker部署Jitsi构建属于自己的音视频会议系统

828华为云征文|华为云Flexus X实例docker部署Jitsi构建属于自己的音视频会议系统 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求&a…

[Web安全 网络安全]-文件包含漏洞

文章目录: 一:前言 1.什么是文件包含漏洞 2.文件包含漏洞的成因 3.文件包含漏洞的分类 4.文件包含漏洞的防御策略 5.文件包含函数(触发点Sink) 6.环境 6.1 靶场 6.2 其他工具 二:文件包含LFI labs靶场实验…

docker-01 创建一个自己的镜像并运行容器

docker-01 创建一个自己的镜像并运行容器 前言 我们都知道使用Docker的镜像可以快速创建和部署应用,大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境,确保代码的环境一致性,从而不会在出现这段代码在我机器上没问…

YoloV10改进策略:上采样改进|动态上采样|轻量高效,即插即用(适用于分类、分割、检测等多种场景)

摘要 本文使用动态上采样改进YoloV10,动态上采样是今天最新的上采样改进方法,具有轻量高效的特点,经过验证,在多个场景上均有大幅度的涨点,而且改进方法简单,即插即用! 论文:《DySample:Learning to Upsample by Learning to Sample》 论文:https://arxiv.org/pdf/…

老旧电力系统安全隐患增加 该如何预防电气线路老化等因素引发的电气火灾呢?

为应对我国电气火灾事故频发的挑战,安科瑞电气股份有限公司开发了AcrelCloud-6000安全用电管理云平台。这一平台依托移动互联网和云计算技术,结合物联网传感器,将办公楼、学校、医院、工厂、体育场馆、宾馆及福利院等人员密集场所的电气安全数…

0x07 Nginx越界读取缓存漏洞 CVE-2017-7529 复现

参考: Nginx越界读取缓存漏洞 CVE-2017-7529 | PeiQi文库 (wgpsec.org)Nginx越界读取缓存漏洞(CVE-2017-7529)复现分析 - qweg_focus - 博客园 (cnblogs.com) 一、fofa 搜索 nginx && port"80" 我这里写了个脚本将ip保存…

启明云端乐鑫代理商,乐鑫ESP32无线芯片方案,物联网设备WiFi联动控制

随着智能和远程技术的飞速发展,物联网(IoT)逐渐出现在我们生活的每一个角落。乐鑫以其创新的无线通信技术,正成为智能家居、工业自动化和医疗设备等领域的推动者。 无线WiFi芯片模组不仅提供了强大的数据处理能力,还赋予了设备以直观的交互方…

Web 基础——Apache

Event Worker 的升级版、把服务器进程和连接进行分析,基于异步 I/O 模型。 请求过来后进程并不处理请求,而是直接交由其它机制来处理,通过 epoll 机制来通知请求是否完成; 在这个过程中,进程本身一直处于空闲状态&am…

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件,类似于这样: 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5,in…

第十一周:机器学习

第十一周周报 摘要Abstract机器学习1. 注意力机制(下)1.1 multi-head self-attention(多头注意力机制)1.2 Positional Encoding(位置编码)1.3 truncated self attention(截断式注意力机制&#…

即插即用篇 | YOLOv8 引入高效的直方图Transformer模块 | 突破天气障碍:Histoformer引领高效图像修复新路径“

本改进已同步到YOLO-Magic框架! 摘要:摘要。基于Transformer的恶劣天气图像修复方法取得了显著进展。大多数方法通过沿通道维度或在空间上固定范围的块内使用自注意力,以减少计算负担。然而,这种折中方式在捕获长距离空间特征方面存在局限性。受到恶劣天气导致的退化因素主…