【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践

news/2024/9/20 8:15:00/ 标签: 自动驾驶, 人工智能, 控制算法, 算法, 笔记

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

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

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

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

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


文章目录

  • 引言
  • 一、纵向控制简介
  • 二、油门与刹车的控制逻辑
    • 2.1 横向控制与纵向控制的直观性比较
    • 2.2 油门与刹车对车辆速度的影响
    • 2.3 功率、扭矩和转速的关系
  • 三、汽车基础知识中的发动机与变速器
    • 3.1 发动机特性与效率
    • 3.2 变速器的作用与类型
  • 四、电机与发动机的对比
    • 4.1 发动机扭矩与转速特性
    • 4.2 发动机与电机的性能对比
  • 五、电机在电动汽车中的优势
  • 六、基于实验标定的纵向算法>控制算法
    • 6.1 电动汽车的纵向算法>控制算法
    • 6.2 电机的转速-扭矩曲线构建
    • 6.3 实验标定与算法>控制算法的实用性
  • 七、Carsim 电机设置
    • 7.1 创建 Carsim 和 Simulink 联合仿真模型
    • 7.2 设置输入和输出
    • 7.3 创建电机模型函数
    • 7.4 配置变速器参数
    • 7.5 调整怠速设置
    • 7.6 设置仿真路面
    • 7.7 生成和修改仿真文件
  • 八、总结
  • 参考资料


引言

  各位小伙伴们大家好,经过了漫长的第八节四个部分的学习,终于来到了纵向控制。本篇博客是是第九节纵向控制的开篇。内容整理自 B站知名up主 忠厚老实的老王 的视频,作为博主的学习笔记,分享给大家共同学习。


一、纵向控制简介

  与横向控制相比,纵向控制难度较低,不需要太多的数学知识。但需要补充汽车动力系统的相关知识,当然这些知识也非常简单。

  在横向控制中,如果没有开过车是可以学下去的,因为横向控制的数学知识比较多,只要数学比较好,就可以学。但纵向控制有很多知识是要开车才会明白。所以纵向控制可能对于没有开过车的可能会稍微的麻烦一点,不过问题也不大,因为都是非常简单的知识。


二、油门与刹车的控制逻辑

首先问各位一个问题,当踩下油门和刹车时,到底在控制什么?

2.1 横向控制与纵向控制的直观性比较

  拿横向控制来举例子,横向控制是控制方向盘,方向盘的改变会导致车辆前轮转角改变,进而导致车辆的航向角改变。

方向盘
前轮转角
车辆航向角

  当打方向盘时,肉眼可见前轮转角在动,所以横向控制的逻辑非常直观。

  但纵向控制并不直观,当踩下油门和刹车时:

油门/刹车
?
车辆加减速

  是什么导致车加速或减速的呢?上图中的问号到底是什么?当踩下油门或刹车时,是什么被改变了,从而导致车速改变了呢?

2.2 油门与刹车对车辆速度的影响

  上图的问号直观上很容易想象成发动机的转速或扭矩,就是踩了油门,发动机转得更快了,速度就上来了;或者踩了油门,发动机输出的力矩更大,车辆就开始加速。

  但这两种解释都是错的,发动机的转速和发动机的扭矩和油门有一定关系,但不是直接原因。和前端转角与方向盘转角的对应关系不同,前端转角和方向盘转角就是比例关系,方向盘转角直接影响前端转角。方向盘转角转多少度,前轮转角就相应转多少度,可能要乘传动比之类的,就是直接关系。

  但是发动机的油门与发动机的转速和扭矩不是直接关系,并不是油门增加一倍,发动机转速就增加一倍,或者发动机的扭矩增加一倍。有相应增加,但不是这种直接关系。

那么油门和刹车和什么东西是直接相关的呢?

  正确答案是油门直接导致发动机的功率被改变,功率改变再导致问号,然后问号会导致车辆加速,加速过程如图所示:

油门
发动机功率被改变
?
车辆加速

  刹车时导致制动压力增大,制动压力增大就会导致制动盘的摩擦增大,进而导致阻力增大,从而导致整个车减速,减速过程如图所示:

刹车
制动压力增大
制动盘摩擦增大
阻力增大
车辆减速

  这就是纵向控制的逻辑,刹车和车的减速直接相关,因为刹车就是导致制动压力增大,车辆就会减速。其实严格来说也不是直接相关,因为还要看是什么路面,是在正常路面,还是在湿滑路面,还是在冰面上。如果不考虑摩擦力的附着极限,制动压力和车的减速就是直接相关的,也就是的刹车踩得越深,制动力就越大;刹车踩得越浅,制动力就越小。

  但功率与车加速之间的关系并不直观,并不是功率越大,车就跑得越快,车的加速就越猛。与车加速直接相关的是 v v v a a a。如果 v v v 一直在上升,或者 a a a 只要大于 0 0 0 就可以,和车加速是直接相关的。

  这两个指标: v v v a a a 本质上是发动机转速与发动机扭矩。因为发动机转得越快,车轮转速也就越快,所以车速就会变得越快。如果发动机力距很大,那么车轮的力距也很大,加速度也就会很大。

  所以纵向控制的逻辑是这样:

油门
功率
转速
车辆速度
车辆加速
扭矩
车辆加速度

  油门改变直接导致发动机功率改变,从而导致转速和扭矩改变,转速扭矩的改变导致车辆的速度和加速度改变,从而导致车开始加速。

  所以在踩油门时,实际上控制的是发动机的功率。

2.3 功率、扭矩和转速的关系

那么功率 P P P 与扭矩 M M M、转速 ω \omega ω 之间的关系是什么呢?

P = F v ⇒ F ⋅ r ⋅ v r = M ⋅ ω P=Fv\Rightarrow F\cdot r\cdot \frac{v}{r}=M\cdot \omega P=FvFrrv=Mω  即 P = M ⋅ ω P=M\cdot \omega P=Mω  所以并不是油门越大,加速度就越大,要看转速是多少,如果转速已经非常高了,当再踩下油门时,加速度增大不了多少,因为 P = M ⋅ ω P=M\cdot \omega P=Mω ω \omega ω 越大, M M M 就会越小。所以为什么汽车都有设计的最高车速,不可能超过最高车速。原因就在于此,因为车速越高,力就越小,必然就有最高车速,是在车速下,驱动力和阻力相互平衡,再踩油门都没用,不可能超过最高车速。

  但公式只是理论公式,并不是实际公式。因为 M M M 不能无穷大,如果按照公式的话,在车刚启动时,转速是 0 0 0。如果有一定功率, M M M 直接就变成无穷大,肯定是不可能的。所以发动机 M M M 有最大的扭矩限制。

真实的发动机的转速、扭矩、功率三个变量的关系是什么呢?

  一般没有明确解析式,所以一般通过做实验标定标出来发动机的转速、扭矩、功率曲线。


三、汽车基础知识中的发动机与变速器

  下面顺带讲一讲汽车基础知识中的发动机与变速器。

3.1 发动机特性与效率

  发动机的转速、扭矩和功率曲线长这样子:

在这里插入图片描述

  不同发动机有不同曲线,但大概都差不多,可能有的高点有的低点,就是不同功率上发动机的转速和扭矩不同。可以看到曲线并不呈反比例,只是曲线的末端有一点反比例曲线的味道,但前端并不是反比例曲线。

为什么 P P P 不等于 M M M ω \omega ω 呢?

  就是因为 P P P 有一部分用要用于发热,因为内燃机发动机的功率,很多都被热能给耗散掉了,所以曲线并不成反比例关系。

  在低速情况下,发动机相对于做功时发热很大,所以在低速情况下热耗散为主导;但在高速情况下,热还是那么多,但做功做的多了,所以以机械功为主导,所以在高速情况下近似呈现反比例关系,即 P ≈ M ⋅ ω P\approx M\cdot \omega PMω,但在低速情况下,因为热占主导,所以不成反比例关系。

  发动机的最高峰一般在 3000 3000 3000 左右。发动机的特性决定了发动机最好只在高效区或高扭矩区运行,才能发挥其最大优势。但发动机的高效区非常短。

  发动机的特性就这样,在低速区有大量能量直接变成热烧掉了,只有少部分能量变成机械功。但是在特高速区时,摩擦损耗也会加剧,所以高速区的效率也不是特别高,比低速区相对高,所以只在中速区扭矩比较大,加速也比较猛,效率也比较高,因此在中速区间运行最好。但是此区域非常短,也就是峰值转速扭矩最大,对应的转速大概是 3000 3000 3000。当然不同发动机不一样,发动机的高效区间也就几百转,可能就 2900 2900 2900 转到 3200 3200 3200 转,剩下的区间效率都非常低。

3.2 变速器的作用与类型

  所以变速器应运而生。如果没有变速器,车想要高效运行的话,意味着车辆只能运行在发动机很短的高效区内的某个速度,无法大范围调速。因为开车不可能只有某个速度。既要在高速公路上开非常快,也要能在城市堵车时开得非常慢,即车辆必须要在不同速度下都能跑。

  发动机是这样子:
在这里插入图片描述

  和发动机相连的是 变速器(gearbox),就是齿轮箱。变速器实际上就是一堆齿轮。比如发动机时转速 3000 3000 3000 转。如果想保持发动机转速在 3000 3000 3000 转上不变,在高效区运行,又想获得比较低的车辆速度,那就捏合大半径齿轮即可,比如这样:
在这里插入图片描述
  可以得到 1000 1000 1000 转的速度。原理就是
ω 1 r 1 = ω 2 r 2 \omega _1r_1=\omega _{_2}r_2 ω1r1=ω2r2  当半径过大时,速度就降下来了,这就是变速器的作用。

  同样的,又想保持发动机比较高效,在 3000 3000 3000 转的工作曲线运行,又想获得比较大的速度,那就捏合小齿轮,比如说这样的小齿轮:

在这里插入图片描述

  这样转速就会被提升到 7000 7000 7000 转,这就是变速器的作用。变速器通过齿轮切换,将发动机的高效转速拓宽。

  齿轮切换的术语叫 换挡,就是一档、二档、三档、四档、五档,一档时速度最慢,同时时扭矩最大;五档时速度最快,扭矩最小。

  • 一档一般用于启动和爬坡
  • 五档一般用于跑高速
  • 二档、 三档、四档一般用于城市道路

为什么速度越慢扭矩越大,速度越快扭矩越小?

  这就是杠杆原理,省力费距离,费力省距离。速度快了力就小,速度慢了力就大。齿轮实际上就是杠杆作用。

  这样发动机和变速器的知识就介绍完了,做自动驾驶控制只需要这些知识就够了。


四、电机与发动机的对比

  回到控制部分来,接下来讲发动机与电机的扭矩与转速的对比,纵向动力学建模非常重要。

4.1 发动机扭矩与转速特性

  发动机前面已经介绍过了,扭矩与转速图就长这样,高效区非常短。比如 2900 − 3200 2900- 3200 29003200 的范围,一般发动机的高效区就几百转的长度。而电机的转速扭矩图一般长这样:

在这里插入图片描述

  发动机前面扭矩很小,后面才慢慢大起来,到最后面才变小。而电机在前半部分就有很大扭矩,直到转速超过一定转速后,扭矩才慢慢变小。

4.2 发动机与电机的性能对比

  发动机与电机对比如下:

比较项发动机电机
最高转速 6500 r p m 6500rpm 6500rpm 16000 r p m 16000rpm 16000rpm
高效区间 ( 2900 , 3200 ) (2900, 3200) (2900,3200) ( 300 , 11000 ) (300 , 11000) (300,11000)
变速器需要不需要
特点低速差,高速较强低速极强,高速差
代表车型法拉利、兰博基尼特斯拉
百公里加速 2.4 s 2.4s 2.4s 1.9 s 1.9s 1.9s
动力源 V 12 V12 V12发动机永磁同步电机
最高效率 40 40 40% 90 90 90%

  所以电机在高速区一般严格遵循 P = M ⋅ ω P=M\cdot \omega P=Mω 的反比例关系,因为效率很高,不需要发那么大热,当然电机也有最大扭矩的限制,因为发热量不大,所以在前半部分可以以最大恒扭矩进行运行,直到达到最大功率后,以反比例功率运行。

  因此发动机一定需要变速器,因为高效区间太拉胯,需要变速器拓宽。但电机一般不需要变速器,因为自己就能 有很宽广的调速。


五、电机在电动汽车中的优势

为什么电动汽车百公里加速成绩那么好呢?

  特斯拉 Model S 百公里加速只有 1.9 1.9 1.9 秒,如果换成汽油车,只有法兰利和兰博基尼这样级别的超级跑车才能达到这样的速度,因为电机在低速实在太强,发动机完全打不过汽油车,汽油车如果想达到这样的加速效果的话,需要 V 12 V12 V12 发动机,即发动机有 12 12 12 个气缸才有可能做到。如果是电机,只需要永磁同步电机即可,难度根本不是一个级别的。

  一般来说汽油车的发动机都是四缸,只有比较豪华的品牌可能会有六缸。像这种 12 缸的只会在超级跑车上,而且发动机缸越多越难做,而且缸越多车就越重,车重的话的能耗就很差。缸越多,润滑、供油、冷却都是呈几何级数难度的递增,缸越多发热量就越大。缸越多,喷油系统以及排气系统也越复杂,所以 V 12 V12 V12 发动机非常难做,而且成本非常贵。

  电机相对来说就很便宜,而且也好做,提升电机的功率比发动机要容易得多,因为电机不用考虑那么复杂的,不需要供油,只需要电就可以了,不需要太复杂的润滑,只需要冷却即可,冷却也容易做,因为和发动机的燃烧相比,电机只是电阻,发热相对容易控制。


六、基于实验标定的纵向算法>控制算法

6.1 电动汽车的纵向算法>控制算法

  本博客的算法>控制算法讲的是电动汽车,不讲燃油车的纵向控制,虽然电动车和燃油车的横向控制差不多一样,但纵向控制有区别,所以只讲电动车的作用方式。

那为什么不讲汽油车呢?

这是因为

  • 很多自动驾驶用的是电动车,电动化已经大势所趋,不可逆转
  • 电动车控制简单,不需要变速器,如果要讲汽油车的控制,必须讲换挡策略,就是到了什么速度就要换挡,从一挡换到二挡,换到三挡,很麻烦,会增加难度,所以就用电动汽车,没有变速器,不需要换挡,就非常方便。

  但很遗憾,仿真软件 Carsim 只有燃油车,即只有发动机,并没有电机,所以为了做控制,先要把 Carsim 相关的电机造出来,然后再仿真,发动机和电机的区别就在于转速扭矩曲线不一样,所以只要把电机的转速扭矩曲线把时输进去即可。

6.2 电机的转速-扭矩曲线构建

  电机的转速扭矩曲线很好写:
在这里插入图片描述

  前面那段就是横扭矩区,后面那段就是横功率区,电机在到达最大功率之前,以恒定的最大扭矩运行,等转速达到最大功率点,就以恒定最大功率的反比例曲线运行。按照这样的关系,造一段电机的转速扭矩曲线。

  电机参数从网上找,最大扭矩是 380 N m 380Nm 380Nm ,最大功率是 180 k W 180kW 180kW 。这个参数对应油门踩到底不能再往下踩时,电机所释放的扭矩和功率,扭矩转速曲线差不多长这样:

在这里插入图片描述

  这是对应于油门等于 1 1 1 时,转速和扭矩的曲线, ω \omega ω 等于最大的功率除以最大扭矩:
ω = P M = 180000 380 = 473.68 ( r a d / s ) = 28421.0526 ( r a d / m i n ) = 4523 ( r p m ) \begin{aligned} \omega &=\frac{\text{P}}{\text{M}}=\frac{180000}{380}=473.68\left( rad/s \right)\\ &=28421.0526\left( rad/min \right) =4523\left( rpm \right)\\ \end{aligned} ω=MP=380180000=473.68(rad/s)=28421.0526(rad/min)=4523(rpm)  这样算出来大概是 4523 r p m 4523rpm 4523rpm,不过曲线只是当油门踩到底时的转速扭矩曲线,如果只踩一点点油门,转速扭矩曲线就无法得到了,因为不同电机不一样,不呈线性关系,但也没有其他数据,所以只能假设是线性关系,也就是踩 0.1 0.1 0.1 的油门对应 18 k W 18kW 18kW 千瓦, 0.2 0.2 0.2 的油门时对应 36 k W 36kW 36kW 。在图上时就是这样关系,就是当 thr = 0.1 时, 对应 38 N m 38Nm 38Nm 的最大扭矩, thr = 1 时,对应 76 N m 76Nm 76Nm 的最大扭矩。

  扭矩 M M M 与转速 ω \omega ω 的关系是
M = { 380 ⋅ t h r o t t l e 0 < ω < 4523 r p m 380 ⋅ 4523 ⋅ t h r o t t l e ω ω ≥ 4523 r p m M=\begin{cases} 380\cdot throttle& 0<\omega <4523rpm\\ \frac{380\cdot 4523\cdot throttle}{\omega}& \omega \ge 4523rpm\\ \end{cases} M={380throttleω3804523throttle0<ω<4523rpmω4523rpm  前面是恒扭矩,后面是恒功率。

6.3 实验标定与算法>控制算法的实用性

  本篇博客所介绍的仿真方法不只适用于电机,对于不同的电机,方法都是一样的。只是因为 Carsim 没有电机,所以必须自己造电机。但方法是通用的,不管是什么样的电机,都可以用这一套同样的方法,因为方法不是根据电机建模型,需要电机参数来计算了。而是基于实验的方法,无论是什么电机,哪怕是发动机也好,都可以用此方法,只要能做实验。所以不管电机参数什么样,方法都是通用的。具体方法到下一节再讲。

  有人可能会认为电机的转速-扭矩曲线过于完美,始终保持恒定的 380 380 380 扭矩,没有丝毫误差和波动。而在 4523 4523 4523 转速之后,曲线又完美地遵循恒功率和反比例关系,这种理想化的曲线可能让人觉得这种方法不太实用。
  但博主要告诉大家的是,即使转速-扭矩曲线看起来杂乱无章,没有规律,也没有关系。因为这种方法是通过实验标定得来的,不是直接从曲线推导出来的。因此,即使曲线看起来再怎么混乱,只要方法是基于实验的,就能够产生效果。


七、Carsim 电机设置

  下面来看一下在 Carsim 中如何设置这样的电机。

7.1 创建 Carsim 和 Simulink 联合仿真模型

  打开 Casim 界面,首先要设置新的 Carsim 和 Simulink 联合仿真的模型:

在这里插入图片描述

7.2 设置输入和输出

  看一下输入和输出的设置,输入是发动机的扭矩,在 N m Nm Nm 单位里找:

在这里插入图片描述

  输出是 v x , a x v_x,a_x vx,ax 以及电机曲轴转速 AV_Eng,转速在 r p m rpm rpm 项目里找:

在这里插入图片描述

  然后点 Send to Simulink,模型已经事先建好:

在这里插入图片描述

7.3 创建电机模型函数

  本节用到的是发动机转速,把发动机转速导进 Matlab Function 里,电机模型的函数如下:

function torque = fcn(thr,rpm)
Tmax=380*thr;%最大扭矩等于 380 乘 thrif (rpm<=4523)%如果 rpm小于等于4523torque=Tmax;%时就是最大扭矩elsetorque=Tmax*4523/rpm;%否则时就是恒功率曲线end
end

  函数实际上就是油门 thr 和 转速 rpm 的函数,就是前面推导的电机转速功率曲线。

7.4 配置变速器参数

  首先在 C-class 里面点进去,点 Systems ,里面有变速器,把变速器设置一下:
在这里插入图片描述

  这在这里已经设置好了,点进去看一下:

在这里插入图片描述

  可以发现所有的传动比都是 2 2 2,就证明变速器根本没有齿轮切换。这就是典型电动车的配置,因为电动车不需要变速器,只需要齿轮进行减速即可,不需要切换。

  但如果做初始设置的话,可能并不是像这样已经设置好了,要进行修改,修改就跟着操作来就可以了。

  点击 calibration 进去:

在这里插入图片描述

  • 第一个是传动比
  • 第二个是每个齿轮的惯量
  • 第三个有两列是机械效率

  参数按照上图设置即可。

  这是典型电动车的配置,严格来说应该叫减速器,不叫变速器,因为档位很少,变速器一般都有五档变速。减速器有的是一档,就像这样;也有的减速器是两档,一般最多也就两档。

  设置完毕就完成了,起个名字就行。

  再看一下发动机,点进去就看到转速扭矩曲线:

在这里插入图片描述

  这是发动机的转速扭矩曲线。所以严格来说可以不用像这样在 Simulink 里再写函数,然后模拟电机,直接在这里修改成电机的转速扭矩曲线也可以进行电机模拟。

  但这里就不这么改了,写成函数的话,方便修改参数以及调试,而且就算不改转速扭矩曲线也没关系,虽然发动机是按照曲线跑的,但是因为模型的输入是发动机扭矩,所以 Carsim 会自动在发动机扭矩输入口把软件的输入切断,然后切换成这里的输入。

  如果写 Matlab 函数的话,曲线也可以不用改,就仿真变速器,弄好之后一定要点Send to simulink,否则就白做了。

  给 thr = 1 的油门,运行一下,得到速度和加速度变化曲线:

在这里插入图片描述

在这里插入图片描述

  把油门调低一点,再跑一下看看,可以看到时速度基本上要掉下来,这就比较符合油门为 0 0 0 的预期。大家想一想,如果油门是 0 的话,车会不会停?把油门设置成0。然后惊奇的发现时居然还有速度和加速度。

那这是为什么呢?为什么油门是0,车辆还有速度?
不知道各位有没有考过驾照,在考科目二时,没踩油门,车还在跑。

  虽然用自己造的电机替代发动机,但毕竟是燃油车烧汽油的,所以会有些根本的特性,就是发动机有怠速,即没有踩油门,发动机自己转的速度就是怠速,说白了就是发动机启动时的速度,无论是发动机还是电机时都有启动速度,所以即使不给油门也会转,所以说汽车也会跟着跑。

那为什么正式开车时不踩油门车就不会跑了?

  这实际上是离合器的事情,大家开过车就会明白,如果是手动变速箱,踩离合时,动力就会被切断,所以即使发动机在转了,车也不会动。如果是自动变速箱,就会自动切断动力,但在这里就没有此功能,就认为有发动机的转速,就会带着车跑,没有离合切断的过程。所以即使油门是 0 0 0,车也会跑。

7.5 调整怠速设置

  在发动机里设置,Idle speed 就是怠速。

在这里插入图片描述

  在这里设置怠速为 750 转每分。

  对于电机而言,是否具备怠速功能取决于电机的设计和控制策略。早期的电动车辆电机通常不包含怠速功能,这是因为电机在没有电流输入时会停止旋转,与内燃机不同,内燃机一旦启动就难以立即停止。而现代电动车辆通常会设计怠速功能,这是出于以下几个原因:

  为了提供平顺的驾驶体验,电机在低速时通常具有较高的扭矩输出。如果没有怠速,当电动车辆启动时,可能会出现剧烈的加速感,类似于弹射起步,这会给乘客带来不舒适的感觉。为了避免这种冲击感,制造商通常会调整电机的控制策略,设定一个较慢的启动速度,从而实现平稳的起步。

  因此,现代电动车辆的电机不仅具有怠速功能,而且在启动时会设定一个较低的启动速度,以实现平稳的加速。这样,即使将传动比设置为零(即不改变传动比),电机也能够平稳地启动,而不会产生强烈的加速感。

7.6 设置仿真路面

  最后还有路面要改一下。如果各位做横向控制的话,可能用的还是横向控制的歪七八扭的路面,但纵向控制用这种长路面就行了,要重新设置一下。把 Treat as loop 取消掉,不然设置不了,设置 2000 米的长直路面,作为做纵向控制所要的路面。

在这里插入图片描述

7.7 生成和修改仿真文件

  最后点击 Send to simulink ,把生成的 simfile.sim 文件名修改一下,改成纵向控制所要的文件名,否则因为做横向控制时,有横向控制所使用的 simfile.sim 文件,如果纵向控制也用这个名字的话,这就不太合适。

  当点 Send to simulink 时,文件夹里会自动生成 simfile.sim 的文件,把文件的名字修改成想要的名字,然后在 Simulink 中也输入相同的名字。


八、总结

  本篇博客讲解的是纵向控制到底在控制什么,以及为下一节所做的准备,设置 Carsim 和 Simulink 联合仿真的模型,修改了 Carsim 的变速器和 Carsim 的输入输出模块,道路也修改了,以及怠速可改可不改。修改了 Simulink 文件名,主要做了这几项工作,这些工作做完后就万事俱备了。

  下一篇博客开始用所修改的模型来做纵向控制。欢迎关注后续内容!


参考资料

  【基础】自动驾驶算法>控制算法第九讲 纵向控制开篇


后记:

🌟 感谢您耐心阅读这篇关于 深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践 的博客。 📚

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

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

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

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


http://www.ppmy.cn/news/1527931.html

相关文章

Leetcode面试经典150题-79.搜索单词

题目比较简单&#xff0c;回溯最基础的题&#xff0c;记得除非覆盖&#xff0c;否则一定要恢复现场就行 解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public boolean exist(char[][] board, String word) {int m board.length; int n board[0].length;i…

JavaScript如何判断输入的是空格

1、JavaScript如何判断输入的是空格 1.1. 使用trim()方法和length属性 trim() 方法可以移除字符串两端的空白字符&#xff08;包括空格、制表符、换行符等&#xff09;&#xff0c;然后检查处理后的字符串长度是否为0。 function isOnlySpaces(str) {return str.trim().lengt…

es由一个集群迁移到另外一个集群es的数据迁移

迁移es的数据 改下index的索引 就可以了。 查询 用curl -u就可以查询了

C# 中Faker

在 C# 中&#xff0c;Faker 类通常用于生成模拟数据&#xff08;也称为虚拟数据、测试数据&#xff09;&#xff0c;这对于开发、测试以及演示应用程序非常有用。一个流行的库叫做 Faker&#xff0c;它提供了一种简单的方式来生成各种随机数据。 安装 Faker 库 要使用 Faker …

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java后端性能监控:使用JMX与Java Mission Control的深入解析

Java后端性能监控&#xff1a;使用JMX与Java Mission Control的深入解析 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java后端开发中&#xff0c;性能监控是确保系统稳定和高效运行的关键。…

【Qt网络编程】Tcp多线程并发服务器和客户端通信

目录 一、编写思路 1、服务器 &#xff08;1&#xff09;总体思路widget.c&#xff08;主线程&#xff09; &#xff08;2&#xff09;详细流程widget.c&#xff08;主线程&#xff09; &#xff08;1&#xff09;总体思路chat_thread.c&#xff08;处理聊天逻辑线程&…

stable diffusion 神经网络插件 controlnet 的安装,很详细

stable diffusion 神经网络插件 controlnet 的安装&#xff0c;很详细 一、前言二、下载1、方式一2、方式二 一、前言 学到 stable diffusion 的 controlnet 插件&#xff0c;安装也略微曲折&#xff0c;这里做个记录。 下载前保证 github 能正常访问。 二、下载 1、方式一…

golang学习笔记30——golang 中代码仓库的 h1 和 go.mod h1 不一致的修正方法

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

易语言源码用键盘按键代替小键盘写法教程

相信大家都有遇到过一些难题 比方说想用一些软件 但是发现一些软件需要有小键盘的用户才能使用 那么这样就对于一些无小键盘用户造成了困扰&#xff01; 今天就给大家分享一个用易语言写的利用软键盘方法 当按下一个按键启动其他热键的方法 以下为源码写法 .版本 2 .支持库 she…

电气设备施工现场风险状态判断ai模型训练数据集

电气设备施工现场风险状态判断ai模型训练数据集 id:18 电气设备施工现场工人人工智能学习数据和工作环境安全数据&#xff0c;建立系统化管理体系&#xff0c;改变全球EHS范式&#xff0c;预防工业事故。数据集记录了387709例子电力设施建设以及施工现场相关的灾害安全环境数据…

发现的一种很简单的set/get封装办法

参考&#xff1a; C 中简化set/get 函数封装的 方式_c get set-CSDN博客 定义一个模板类 你可以创建一个模板类Property&#xff0c;用于封装设置和获取功能&#xff1a; template<typename T> class Property { private:T value;public:void set(const T& v) {va…

代码随想录算法训练营43期 | Day 21 —— 108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

代码随想录算法训练营 代码随想录算法训练营43期 | Day108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树 代码随想录算法训练营43期 | Day 108.将有序数组转换为二叉搜索树 class Solution { private:TreeNode* traversal(vector<int>& nums, int left…

Java项目实战II基于Java+Spring Boot+MySQL的房屋租赁管理系统的设计与实现

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市租…

OpenAIAPI报错和ATL延迟优化

Open AI API报错&#xff1a; ————————————————加更———————————————————— 1.API Error: {“error”:{“message”:“无效的令牌”,“type”:“one_api_error”}}/报错403 调用接口不对&#xff0c;openkey的调用需要对应使用https://open…

C#和数据库高级:抽象类和抽象方法

文章目录 一、为什么使用抽象类和抽象方法&#xff1f;1.1、父类与子类的相互转换 二、抽象类和抽象方法2.1、抽象类的定义和方法声明规范2.2、使用继承多态的机制解决问题 三、抽象类的概念和使用特点总结 一、为什么使用抽象类和抽象方法&#xff1f; 1.1、父类与子类的相互…

二十种编程语言庆祝中秋节

二十种编程语言庆祝中秋节 文章目录 二十种编程语言庆祝中秋节中秋快乐&#xff01;家人们 &#x1f973;一 Python二 C三 C四 Java五 C#六 Perl七 Go八 Asp九 PHP十 JavaScript十一 JavaScript HTML十二 Visual Basic十三 早期 VB十四 Visual C十五 Delphi十六 Shell十七 Cobo…

在设计开发中,如何提高网站的用户体验?

在网站设计开发中&#xff0c;提高用户体验是至关重要的。良好的用户体验不仅能提升用户的满意度和忠诚度&#xff0c;还能增加转化率和用户留存率。以下是一些有效的方法和策略&#xff1a; 优化页面加载速度 减少HTTP请求&#xff1a;合并CSS和JavaScript文件以减少HTTP请求…

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题&#xff0c;根据猴子不同的位置&#xff0c;求解猴子的移动范围&#xff0c;求解对应的过程&#xff0c;针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉&#xff0c;香蕉挂天花板上。定义多种谓词描述位置、状态等…

深度学习中常见的损失函数

在机器学习和深度学习中&#xff0c;损失函数用于衡量模型预测值与真实值之间的差异。根据任务的类型&#xff08;如回归、分类等&#xff09;&#xff0c;可以使用不同的损失函数。下面列举了一些常见的损失函数&#xff1a; 1. 回归问题中的损失函数 回归任务的目标是预测连…