目录

前言

一、纵向控制开篇

二、油门/刹车标定表制定(电车)

1.Carsim设置

1.1、主界面设计:

1.2、Procedure设置

2.MATLAB仿真设计

2.1、整体框架图

2.2、CarSim S-Function设置

2.3、moto model模型设计

2.4、制动模块设计

总结


前言

自动驾驶越来越受到关注,其中车辆控制分为横向控制和纵向控制,横向控制是控制车辆的前轮转角,即航向角CarSim联合simulink仿真横向控制_路在脚下,梦在心里的博客-CSDN博客;那么车辆纵向控制到底是如何控制车辆的呢,控制的是车辆的什么呢,下面我们就车辆纵向控制进行详细介绍。


一、纵向控制开篇

横向控制的原理:方向盘----->前轮转角----->车的航向角

那么当我们踩油门/刹车时,到底在控制车辆的什么东西呢?刹车相对来说容易理解,这里作者直接给出:刹车----->制动压力增大----->制动盘摩擦增大----->阻力增大----->车减速(类似于我们骑自行车时压刹车,会有一个刹车片压到轮胎上)。那么踩油门控制的是什么呢?

油门----->?----->车加速,这里的问号到底是什么呢?

当我们踩油门时,发动机的功率肯定是提高的,但是发动机的功率不能直观体现车的加速,那么当我们踩油门到底控制的是什么呢?

下面的公式相信大家并不陌生:

其中:P表示功率,M表示扭矩,W表示角速度。

知识点补充:旋转物体的扭矩计算公式为T=9550P/n,P是功率,单位是KW。n是转速,单位是r/min。扭矩单位为Nm。一般的扭矩就是力*力臂。

扭矩·:扭矩就是圆周运动时的力矩,可以简单理解为作用力迫使物体产生旋转的一种特殊力矩。对应发动机曲轴就是燃料燃烧做功产生的压力驱使曲轴产生旋转,最终将旋转的力矩传递出去。

物理中:力矩=力X力臂(直线)

而在旋转状态下:扭矩(特殊的力矩)=力X旋转半径r,因此要想知道发动机的扭矩那曲轴旋转半径r必须是已知的,我们需要知道作用力扭矩怎么算出来的_高三网 (gaosan.com)。所有油门控制可以表示为:油门----->功率----->转速/扭矩----->车速/车加速度----->车速度。


二、油门/刹车标定表制定(电车)

1.Carsim设置

1.1、主界面设计:

1.2、Procedure设置

1.2.1、车辆初始情况的设置(制动情况)

                        

注意:如果是给油门的情况,那么就只有初速度不一样,设置为0,其余设置均一样。

  1.2.2、道路设置

注意:如果搭了我们上一篇文章的仿真,这里的路径可能是一个弯角,需要重新设计路。

        1.3、Carsim输入设置

输入:油门和制动

         1.4、Carsim输出设置

输出:纵向速度,纵向加速度,转速

2.MATLAB仿真设计

2.1、整体框架图

2.2、CarSim S-Function设置


2.3、moto model模型设计

代码设计如下:

function torque = fcn(power,rpm)    //power:油门,rpm:转速Tmax=380*power;if(rpm<=4523)torque=Tmax;elsetorque=Tmax*4523/rpm;end
end//输入:油门和转速
//输出:扭矩

注意:这里可以自己参考电车的转速扭矩曲线图设计 。

2.4、制动模块设计

代码示例(生成标定表):

brake=0.1;   %初始化油门
for i=1:80sim('calibration');%注,如果这里出错可以参考工作区里面是否把输出存放在ans中,解决方法有两种,第一种将代码改为v_temp(:,i)=ans.vx.data%第二种,Ctrl E打开model setting,然后找到single simulation output取消钩选,这样代码就不需要更改v_temp(:,i)=vx.data;    a_temp(:,i)=ax.data;brake_temp(:,i)=ones(length(vx.data),1)*brake;brake=brake+0.1;
end%合并
vbr=v_temp(:,1)';
abr=a_temp(:,1)';
bra=brake_temp(:,1)';
for i=2:80vbr=[vbr,v_temp(:,i)'];abr=[abr,a_temp(:,i)'];bra=[bra,brake_temp(:,i)'];
end%拟合
F=scatteredInterpolant(vbr',abr',bra');    %转成列向量
vubr=0:0.05:50;
aubr=-8:0.05:0;
tablebr=zeros(length(vubr),length(aubr));
for i=1:length(vubr)for j=1:length(aubr)tablebr(i,j)=F(vubr(i),aubr(j));end
end%刹车标定的时候,carsim中将初速度设置为180,表tablebr的第一行第1061列对应的是a=0,v=0,我们手动将值设置为0.3

查看标定表(制动):

测试:

saturation参数为-9和0;saturation参数为0和9。

制定油门标定表MATLAB代码:

%% MATLAB和simulink的联动代码% thr=1;   %变量名要与simulink模型变量名一致
% sim('calibration');  %模型名要与simulink模型名一致%%
thr=0;   %初始化油门
for i=1:11sim('calibration');%注,如果这里出错可以参考工作区里面是否把输出存放在ans中,解决方法有两种,第一种将代码改为v_temp(:,i)=ans.vx.data%第二种,Ctrl E打开model setting,然后找到single simulation output取消钩选,这样代码就不需要更改v_temp(:,i)=vx.data;    a_temp(:,i)=ax.data;thr_temp(:,i)=ones(length(vx.data),1)*thr;thr=thr+0.1;
end%合并
v=v_temp(:,1)';
a=a_temp(:,1)';
tr=thr_temp(:,1)';
for i=2:11v=[v,v_temp(:,i)'];a=[a,a_temp(:,i)'];tr=[tr,thr_temp(:,i)'];
end%拟合
F=scatteredInterpolant(v',a',tr');    %转成列向量
vu=0:0.1:50;
au=0:0.1:5;
table=zeros(length(vu),length(au));
for i=1:length(vu)for j=1:length(au)table(i,j)=F(vu(i),au(j));end
end%注意,油门标定的时候需要将carsim中的初速度设置为0

总结

这里的标定还是传统的方法,当前标定可以联合强化学习进行,后面将记录作者学习车辆纵向控制的学习过程,希望大家多多交流,共同进步。

车辆的纵向控制之标定相关推荐

  1. 模型预测控制算法基础与车辆纵向控制仿真分析

    模型预测控制算法基础与车辆纵向控制仿真分析 第三章 模型预测控制算法基础与控制仿真分析 模型预测控制算法基础 模型预测控制的基本思想就是利用已有的模型.系统当前的状态和未来的控制量去预测系统未来的输出 ...

  2. 四轮独立驱动电动汽车转矩分配控制 CarSim与Simulink联合 三自由度车辆模型(纵向、横向、横摆)

    四轮独立驱动电动汽车转矩分配控制 CarSim与Simulink联合 三自由度车辆模型(纵向.横向.横摆) 控制方法为离散LQR(包括连续系统的离散方法和求解方法) 带有完整详细的控制器.二自由度稳定 ...

  3. Apollo代码学习(五)—横纵向控制

    Apollo代码学习-横纵向控制 前言 纵向控制 横向控制 前馈控制 注意 反馈控制 总结 补充 2018.11.28 前言 在我的第一篇博文:Apollo代码学习(一)-控制模块概述中,对横纵向控制 ...

  4. 车辆动力学及控制_道路自适应车辆动力学控制研究(127页)【附下载】

    点击"蓝字"关注我们 导读/ 无人驾驶车辆的关键技术主要包括环境感知.智能决策.路径规划和车辆运动控制.无人车的运动控制需要车辆在保证安全的前提下,准确跟踪期望轨迹,车辆控制主要分 ...

  5. 自动驾驶横纵向耦合控制-复现Apollo横纵向控制

    自动驾驶横纵向耦合控制-复现Apollo横纵向控制 基于动力学误差模型,使用mpc算法,一个控制器同时控制横向和纵向,实现横纵向耦合控制 matlab与simulink联合仿真,纵向控制已经做好油门刹 ...

  6. 基于mpc(最优控制)的车辆自适应巡航控制(acc),模型预测控制,通过carsim与matlab联防实现速度与间距控制

    基于mpc(最优控制)的车辆自适应巡航控制(acc),模型预测控制,通过carsim与matlab联防实现速度与间距控制. ID:4529677970280675一無所有`

  7. 车辆自动编队控制优质论文推荐(中文论文)

    一.论文汇总 [1]马小婷,赵军辉,孙笑科,贡毅.基于MEC的车联网协作组网关键技术[J].电信科学,2020,36(06):28-37.论文地址 [2]王树凤,张钧鑫,张俊友.基于人工势场和虚拟领航 ...

  8. 固定翼无人机的自主降落-Simulink纵向控制仿真

    本项目来源于一项课程设计,用于简单固定翼模型的降落 需要模型的请点击下载链接,通过积分获取 https://download.csdn.net/download/nudt_zrs/12454986 练 ...

  9. 车辆动力学及控制pdf_Simulink软件仿真平台之车辆模型

    之前一篇文章简要介绍了新能源车控制策略仿真平台的基本内容,主要包括驾驶员模型.控制策略.车辆模型三部分,如下图所示.今天我们详细说说第三部分车辆模型(车辆平台)的相关内容,也是最复杂的部分. 车辆模型 ...

最新文章

  1. python基础与大数据_Python大数据基础与实战第10章数据可视化.pptx
  2. 伏安特性实验误差分析_人教高中物理必修第三册《3 实验:电池电动势和内阻的测量》...
  3. php传输数组给axios
  4. 【约束布局】ConstraintLayout 13 种相对定位属性组合 ( 属性组合 | 用法说明 )
  5. 不会c语言能学习python_为什么很多人学不会C语言?学霸说:你要是像我一样学肯定能行!...
  6. 计算c53的c语言的程序,C程序设计的常用算法.doc
  7. 第12章 使用Samba或NFS实现文件共享
  8. C#反射设置属性值和获取属性值
  9. “贵妇”必备的高价糖水,我给燕窝上了10年智商税
  10. 2020 mit6.s081 os Lab: xv6 traps
  11. 华为安装gsm框架_华为Mate20手机怎么下载安装谷歌服务助手,GMS框架安装教程
  12. 日志:实现微信公众号自动问答机器人(待整理)
  13. 如何使用手机打开CAJ文件?
  14. 基础-02-日语单词的词性与分类
  15. 资源下载类网站源码 第二版本分享
  16. Java8 新特性之 Stream 练习题
  17. android界面自动跳转,android实现欢迎界面的自动跳转
  18. Linu中的网络配置(设置ip,网关(路由功能),dns),虚拟机上网
  19. 用SendMessage/PostMessage发送WM_SIZE消息
  20. msvcr110.dll系统文件丢失解决方案

热门文章

  1. 2019,2021非科班生的Android面试之路
  2. 空间数据引擎oracle_SQL/Oracle数据库是怎样与GIS的应用相联系起来的?
  3. 雷达距离分辨力的推导
  4. 千亿智能家居赛道,为什么渗透率却不足5%?
  5. python学习笔记3-解析配置文件ConfigParser模块
  6. 毕业设计 单片机人体识别小车 - 深度学习 yolo目标检测 机器视觉 树莓派
  7. 某度翻译-逆向参数解析
  8. html 点击收藏效果,收藏Javascript中常用的55个经典技巧
  9. ubuntu 8.04 中文输入法 中文撑持
  10. N76E003 PWM之极性控制