自动驾驶仿真:基于Carsim开发的加速度请求模型

这篇具有很好参考价值的文章主要介绍了自动驾驶仿真:基于Carsim开发的加速度请求模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

1、自动驾驶行业中,算法端对于纵向控制的功能预留接口基本都是加速度,我们需要给控制器仿真加速度的信号,控制器才会实现对纵向功能的控制。

2、Carsim或者其他动力学软件,主要提供者节气门开度和主缸压力进行控制。我们在进行联合仿真时,往往都要通过PID的方式将请求加速度转换成对应的节气门开度与主缸压力传给动力学软件进行闭环控制。

3、这里提供一个使用Carsim的VS Command方法定义一个加速度输入变量,修改车辆的动力系统模型,然后通过PID调节变矩器扭矩和主缸压力输出加速度来实现这个响应接近完美的加速度模型。


一、加速度输出变量问题澄清

问题澄清:改变动力学模型后Carsim Output接口输出的加速度值异常
1、正常情况下Carsim的加速度输出变量AX、AX_SM是能够正常输出加速度值,但是经过VS Command以及动力学模型修改之后Carsim Output接口加速度输变量输出值会比原值小10倍。因此需要在VS Command中定义新的加速度输出变量来解决输出值小10倍的问题。

2、自证Carsim Output接口输出加速度变量比原值小10倍。首先Carsim接口和VS Command中添加加速度输出变量,RsponAx是在VS Command定义的加速度输出变量,本质是在VS Command获取AX的值。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习
自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


3、和Labview联合仿真:通过观察请求加速度(蓝色)、正确加速度RsponAx(红色曲线)和错误加速度AX(绿色曲线)就可以看出Rspon在VS Command拿的AX值是正常的,而直接从Carsim输出接口拿的AX比原值小10倍是不正确的。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


4、再分析此时的速度变化情况,此时的速度变化是基于0.2g的正确加速度进行变化的,因此推断Carsim输出接口拿的AX 0.02g是错误的。
X轴300-600之间,这3秒钟速度变化大概为21kph(图表),由于V=at = 0.2*9.8*3 =5.88m/s,转换成km/h为21km/h左右。因此推断0.2g的正确加速度。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


二、配置Carsim动力学模型

1、配置车辆模型

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2、这里复制了Carsim自带例程C-Class, Hatchback。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


3、修改车辆的动力系统模型,随便复制一个例程并进入修改内容。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


4、选择外部发动力模型和外部变矩器,从模型上看只要调整变矩器扭矩IMP_M_OUT_TC即可实现纵向加速控制,减速控制一般都是通过主缸压力PBK_CON进行控制的。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习

5、修改挡位参数,改成1个前进挡位

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习

改成1个前进挡位,否则速度加不上去

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


三、配置Carsim驾驶员模型

1、老规矩随便复制一个例程

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2、驾驶员模型配置
1)配置概览

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2)节气门开度加初始速度控制,但是由于我们修改了模型我们加速不控制THROTTLE_ENGINE,我们直接在VS Command控制变矩器扭矩IMP_M_OUT_TC。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


3)初始刹车主缸压力为0MP,在VS Command控制变量为PBK_CON。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


4)开闭环的档位控制(-1:倒挡 0:空挡 1-6:前进挡),在VS Command控制变量为MODE_TRANS。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习

5)最后配置一个Run就行,Forever或者时间都行。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


四、添加VS Command代码

重头戏:VS Command,相当于Carsim开放的脚本编写命令行,直接上脚本,我就不对脚本的每一句内容进行解析了,有兴趣的结合官方文档VS Command分析。

1、配置Carsim VS Command
自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2、将下面脚本复制进VS Command中去

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习

!Define vehicle forward related variables
define_variable CumErr_TC 0
define_variable CumErr_BK 0
define_variable CurErr 0
define_variable Torque_TC 0
define_variable PCON_BK 0

!Define vehicle reverse related variables
define_variable RCumErr_TC 0
define_variable RCumErr_BK 0
define_variable RCurErr 0
define_variable RTorque_TC 0
define_variable RPCON_BK 0

!Define driver Behavior variables
define_variable ForwardFlag 0
define_variable ReverseFlag 0

!Add Brake master cylinder pressure
!Add shaft torque of torque converter
IMP_PCON_BK VS_add 0
IMP_M_OUT_TC VS_add 0

!Define PID related parameter
define_parameter P_TC 0.5
define_parameter I_TC 0.2
define_parameter D_TC 0.0
define_parameter P_BK 0.5
define_parameter I_BK 0.005
define_parameter D_BK 0.000

!Define Operating cycle
define_parameter DeltaT 0.001

!Define Input/Output variables
define_import IMP_TargetAX 0
define_import IMP_TargetBk 0
define_import IMP_ConMode 0
define_output RsponAx

!Select Froward or Reverse
EQ_IN ForwardFlag = GE(IMP_TargetAX,0)
EQ_IN ReverseFlag = LE(IMP_TargetAX,0)

!Caiculate Current Error and Cumulative error
EQ_OUT CurErr= IMP_TargetAX - AX
EQ_OUT RCurErr= AX -  IMP_TargetAX
EQ_OUT CumErr_TC = IF_GT_0_THEN(ForwardFlag,CumErr_TC+CurErr,0)
EQ_OUT RCumErr_TC = IF_GT_0_THEN(ReverseFlag,RCumErr_TC+RCurErr,0)
EQ_OUT CumErr_BK = IF_NOT_0_THEN(ForwardFlag,0,CumErr_BK+CurErr)
EQ_OUT RCumErr_BK = IF_NOT_0_THEN(ReverseFlag,0,RCumErr_BK+CurErr)

!Forward PID(Torque)
EQ_IN Torque_TC = P_TC*CurErr+I_TC*CumErr_TC+D_TC*CurErr/DeltaT
EQ_IN Torque_TC = IF_GT_0_THEN(Torque_TC, Torque_TC,0)
EQ_IN Torque_TC = IF_GT_0_THEN(ForwardFlag,Torque_TC,0)

!Reverse PID(Torque) 
EQ_IN RTorque_TC = P_TC*RCurErr+I_TC*RCumErr_TC+D_TC*RCurErr/DeltaT
EQ_IN RTorque_TC = IF_GT_0_THEN(RTorque_TC, RTorque_TC,0)
EQ_IN RTorque_TC = IF_GT_0_THEN(ReverseFlag,RTorque_TC,0)

!Forward or backward depending on the transmission mode
EQ_IN IMP_M_OUT_TC = IF_GT_0_THEN(GE(ModeTran, 0), Torque_TC, RTorque_TC)
EQ_IN IMP_M_OUT_TC = IF_GT_0_THEN(EQ(ModeTran, 0), 0 , IMP_M_OUT_TC)
EQ_IN IMP_M_OUT_TC = IF_GT_0_THEN(IMP_ConMode, 0 , IMP_M_OUT_TC)

!Forward PID(Brake)
EQ_IN PCON_BK = -(P_BK*CurErr+I_BK*CumErr_BK+D_BK*CurErr/DeltaT)
EQ_IN PCON_BK = IF_GT_0_THEN(PCON_BK-15, 15, PCON_BK)
EQ_IN PCON_BK = IF_GT_0_THEN(PCON_BK, PCON_BK,0)
EQ_IN PCON_BK = IF_NOT_0_THEN(ForwardFlag,0,PCON_BK)*1e6
EQ_IN PCON_BK = IF_NOT_0_THEN(IMP_TargetBk,IMP_TargetBk,PCON_BK)

!Reverse PID(Brake) 
EQ_IN RPCON_BK = P_BK*CurErr+I_BK*CumErr_BK + D_BK*CurErr/DeltaT
EQ_IN RPCON_BK = IF_GT_0_THEN(RPCON_BK-15, 15, RPCON_BK)
EQ_IN RPCON_BK = IF_NOT_0_THEN(IMP_TargetBk, IMP_TargetBk,RPCON_BK)
EQ_IN RPCON_BK = IF_GT_0_THEN(GE(ModeTran,0), RPCON_BK,0)
EQ_IN RPCON_BK = IF_GT_0_THEN(RPCON_BK, RPCON_BK,0)*1e6

!Acceleration braking or direct braking depending on the mode
EQ_IN IMP_PCON_BK = IF_GT_0_THEN(GE(ModeTran, 0), PCON_BK, RPCON_BK)
EQ_IN IMP_PCON_BK = IF_GT_0_THEN(IMP_ConMode, IMP_TargetBk, IMP_PCON_BK)

!if ModeTran=0,Clear accumulated error
EQ_OUT CumErr_TC = IF_GT_0_THEN(EQ(ModeTran, 0),0,CumErr_TC)
EQ_OUT RCumErr_TC = IF_GT_0_THEN(EQ(ModeTran, 0),0,RCumErr_TC)
EQ_OUT CumErr_BK = IF_GT_0_THEN(EQ(ModeTran, 0),0,CumErr_BK)
EQ_OUT RCumErr_BK = IF_GT_0_THEN(EQ(ModeTran, 0),0,RCumErr_BK)

EQ_OUT RsponAx= AX

我在脚本中定义了新的接口变量:

!Define Input/Output variables
define_import IMP_TargetAX 0     !IMP_TargetAX是外部请求的加速度接口。
define_import IMP_TargetBk 0     !IMP_TargetBk是外部请求的主缸压力,一般通过给减速度就可以控制,这里开放了手动减速 的方法。
define_import IMP_ConMode 0      !IMP_ConMode自动模式0或者手动模式1,自动模式通过加速度控制减速,手动模式发送IMP_TargetBk值进行减速,默认自动模式。
define_output RsponAx 0          !RsponAx定义新的加速度输出接口,Carsim端的加速度接口AX比原值小10倍,因此使用RsponAx作为加速度响应。

五、Run Control联合仿真

1、这里使用的Labiew,大家可以用Simulink联合仿真。

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2、添加输入变量

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


3、添加输出变量

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


4、Send to Labview

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


六、加速度模型效果验证

1、层叠曲线显示所有变量

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


2、前进挡:请求加速度与响应加速度曲线(挡位给1,加速度值给正值)

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


3、后退挡:请求加速度与响应加速度曲线(挡位给-1,加速度值给负值)

自动驾驶仿真:基于Carsim开发的加速度请求模型,HIL仿真,自动驾驶,人工智能,机器学习


综上,完成加速度模型搭建,模型可能还有点小缺陷,大神们可以指导一下,如有问题及时沟通。文章来源地址https://www.toymoban.com/news/detail-669348.html

到了这里,关于自动驾驶仿真:基于Carsim开发的加速度请求模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于单片机设计的电子指南针(LSM303DLH模块(三轴磁场 + 三轴加速度)

    本项目是基于单片机设计的电子指南针,主要利用STC89C52作为主控芯片和LSM303DLH模块作为指南针模块。通过LCD1602液晶显示屏来展示检测到的指南针信息。 在日常生活中,指南针是一种非常实用的工具,可以帮助我们确定方向,特别是在户外探险、航海、定位等场景中。传统的

    2024年02月04日
    浏览(44)
  • 怎么加速网速?如何加速网络下载速度真正提高网速

    怎么加速网速?我们经常在下载东西的时候,会觉得网速很不给力。其实这不仅关系到你的带宽,还关系到你的电脑。下面我介绍一个比较适合新手的方法,使我们计算机发挥到最佳下载模式。达到宽带最大利用率。 软媒魔方电脑大师 V6.25 绿色免费版 类型: 系统增强 大小:

    2024年02月07日
    浏览(34)
  • 跑出创新加速度,AI基础软件成AIGC产业发展加速器

    2023年中国国际服务贸易交易会(以下简称“服贸会”)受世界瞩目正在火热进行,9月4日,服贸会专题论坛之“2023中国AIGC创新发展论坛” 在大会期间成功举办, 九章云极DataCanvas公司副总裁周晓凌受邀出席论坛,并发表题为“AI基础软件促进大模型与AIGC应用快速发展”的精

    2024年02月09日
    浏览(45)
  • [足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-5 刚体的加速度与角加速度

    本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有帮助请引用 本文参考: . 食用方法 求解逻辑:速度与

    2024年01月25日
    浏览(54)
  • ABB、FANUC机器人点位加速度用法

    机器人在点位与点位之间的运动,会存在速度上的变化,加速度指令的添加可以减小机器人在运动中,由高速到低速间惯性的带来的影响,修正机器人的路径误差,让机器人的运动更加顺滑。 ABB机器人加速度指令为ACCSET指令 ACCSET指令中的第一个参数是设置加速度,第二个参

    2024年04月16日
    浏览(47)
  • 无线传感器基础:获取手机传感器、加速度

    一些实验过程中的疑问: 如何知道设备上有哪些传感器? 如果手机不支持的传感器,程序运行往往不会抛出异常,只是无法获得传感器传回的数据。那么如何知道设备上有哪些传感器可用呢?有两种方式,一种是直接方式,一种是间接方式。直接方式就是遍历获取得到传感

    2024年02月02日
    浏览(50)
  • 【STM32 CubeMX】adxl345加速度传感器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本篇文章使用I2C进行通信 在嵌入式系统中,加速度传感器是一种常见的传感器,用于检测物体的加速度或者倾斜角度。ADXL345是一款常用的数字三轴加速度传感器,由ADI(Analog Devices)公司制造。它具有

    2024年02月21日
    浏览(37)
  • 「实在RPA·烟草数字员工」助力烟草行业数字化转型加速度

    烟草行业作为烟草产业链上重要一环,外部连接烟草工业企业、零售客户、消费者,内部包含营销、专卖、烟叶、物流等诸多业务,信息系统众多,企业数据量庞大。因此,清楚地了解自身存在的痛点,找到适合自身业务需求的转型路径,搭建一个高适配的灵活全面的数字化

    2024年02月06日
    浏览(128)
  • SC7A20(士兰微-加速度传感器)示例

            做个笔录,最近项目使用了此款gsensor,实现了简单示例         硬件平台(RTL8762DK)         IDE:keil5.29 1、原理图    1、sc7a20.h   2、sc7a20.c

    2024年02月16日
    浏览(34)
  • SC7A20 三轴加速度传感器 驱动

    使用的时候需要找对文档,之前文档不对,导致读取的数据计算角度一直不成功,发现要关闭高通滤波,由于高通滤波寄存器里面的滤波阈值没有文档说明,我直接关闭掉就可以使用了,代码与硬件平台无关,需要底层IIC接口支持,软件IIC或HC32的硬件IIC可以查阅我其他博客;

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包