1-第2章 第1节-决策规划仿真平台搭建

prescan:感知+道路

carsim:车辆动力学模型

matlab:写算法,跑仿真

vs2019:prescan和matlab连仿需要2019的C++编译器

总结:
1.testemplanner:在prescan中建立的一个车
2. 通过carsim打开prescan自带的车辆动力学模型demo_PreScarsim3D.cpar,把这个文件放到experients下面 2.2.prescan中把动力学模型加入得到车中,设置模型频率—build一下发到simulink里面变成slx文件
4.在matlab中打开刚刚的prescan中的车文件t的slx
5.配置carsim的输入输出-在simulink中配置(参考sim-pre官方参考模板)

1.打开prescan

2.新建一个experiment,命名为“hhtestemplanner”

3.左侧栏Actors-Audi A8 Sedan(奥迪A8轿车)

4.设置车位置:location 的x-y为0 0, Z不变

1.打开carsim-选择右下角 Create a new databased fromxx–continue–打开carsim的实验文件的一个cpar文件:C:\用户\公用\公用文档\Experiments\Demo Templates\Demo_PreScanCarSim3D(这是prescan自己做的和carsim连仿的类似接口的东西,他打包了carsim一些数据:转向、轮盘等,像压缩包一样,需要用carsim自己提取出来)–显示选择文件夹:就是选择把这些数据提取到哪个文件夹下:推荐放到prescan的experiment下面(C:\用户\公用\公用文档\Experiments),新建文件夹命名为DynamicModel–确认实现解压

2.可以在Carsim的界面上选择“Run Control with Simulink”-Carsim_VehicleDynamics,可以“Input”和“output”看一下输入输出

3.按菜单栏的“Home”回主题页

1.回到prescan,选中图中车右击“Object configuration”-选择“Dynamics‘-选择“User specified”用户自定义-选择之前的DynamicModel文件下的Extensions\simulink\CarSim_VehicleDynamics.mdl(C:\用户\公用\公用文档\Experiments\DynamicModel\Extensions\simulink\CarSim_VehicleDynamics.mdl)-确认之后–选择Apply-再OK

2.在菜单栏的时钟(Simulation Scheduler模拟调度程序)—这是设置仿真频率,或者说迭代步长,对于Carsim这个动力学模型来说,要1000Hz,否则不收敛,所以选择“Compilation sheet frequency”为1000HZ,注意前面“Simulation core frequency”是prescan自带的,提供传感器这种信息,所以20HZ就可以了)-再“Aplly”-‘OK’ (频率越高跑的越慢,但最少也得200HZ,这样Carsim也得200HZ)

3.菜单栏“Build”-(把prescan相关数据生成为simulink模型)注意:无论多小的改动,即使就把车移动一下位置也要Build一下

1.打开matlab(不能直接双击)要电脑右下角的prescan的小图标右击-“open”-再在弹框中点击“matlab”的“Start”

2.稍等几分钟,会配置一些和prescan的相关接口(如果是第一次prescan和matlab的话,会调用vs2019,做一系列相关程序的编译,第一次大概5-10min)

3.此时matlab工作路径会自动跳转至C:\用户\公用\公用文档\Experiments

4.选择matlab左侧“当前文件夹”的“hhtestemplanner”文件,就是我之前建立的;点击上方小菜单栏的“浏览文件夹”,选择“hhtestemplanner”

5.此时其左侧多了一些文件,slx文件:是prescan build出的simulink模型,选择这个文件拖到命令行窗口即打开了这个文件(会先读取pb文件,生成相关配置

6.在生成的matlab之仿真文件中,在prescan的右上方有按钮Regenerate,它表示在prescan里面build之后,在simulink中还要点一下Regenerate,重新生成,让他刷一下,然后这个改动才能在simulink里面生效(这里我们就不regenerate了,因为每次新打开的时候会自动regenerate)

7.双击车,看一下:Dynamics_UserSpercified:点其向下的箭头就可以进去,点左边的carsim S-Function的图标,要选一下 Simfile name,但现在还没有,所以要生成一下,方法如下:点开carsim软件,点“Run Control with Simulink”下的“Send to Simulink”(如果是灰色的点不起来,应该是右上角的Lock)—会自动调用matlab,所以要等一会,matlab调用完之后,这个 Simfile 文件就是在DynamicModel文件夹中,找到这个文件之后右击复制路径,再粘贴到matlab的Simfile name中

8.配置一下Carsim的输入输出:点开carsim-选择“Run Control with Simulink”下的“carsim VehicleDynamics”,再点“Input”:

1.STEER_SW:方向盘转向

2.THROTTLE_ENGINE:油门

3.PCON_BK: 制动压力

4-15:坡度

16-23:路面附着

如何设置参数输入:可参考prescan和carsim本身连仿的目标,在刚刚我的红车的matlab仿真页面中打开文件:C:\用户\公用\公用文档\Experiments\DemoTemplates\Demo_PrescanCarsim3D\Demo_preScanCarsim3D_cs,再打开第三框(有车的那个),再那个车向下的按钮,然后车左侧输入可以复制一下,然后连一下Input和车,车头那个要删;输出也是要粘贴过来调整,具体不细说了。还有把我复制的输出和原本的输出连一下(Control选中这两个就行)

看一下输入:点一下,是[1 1 1 12 8],正好对着Carsim的Input,正好也是23个

然后在前面设置Input接口,前三个搞一下,12那个接地,因为我们没有坡度,8那个就是附着系数,设置为0.9:constant模块:(1,8)*0.9

再设置输出接口:vx vy ax ay,前两个已经有可以直接连,后两个没有要在Carsim中加一下:点开Carsim中的输出本来是35个现在要增加至37个:“categories”选择“selected by units”,下方选择“g",”Output variables“双击选择”Ax-Long, acceleration, vehicle(g)“和”Ay-Lateral acceleration, vehicle(g)”,这样在“variables Activated for export"中就有37个变量了,就搞好了.再回到主页点"send to simulink"

再回到simulink,点原本的输出的向下箭头,看一下输出是[3 3 3 -1],所以已经有9个了,但是一共37个,所以后面还有28个,创建一个Demuc接口,值为28,再搞一下ax ay输出,但是还要注意g=9.8的换算

再出来在原本模型上连一下ax ay

这样整个模型的prescan和carsim之间的接口已完成

现在适配王老师写的算法

打开 EMPlanner文件夹中的emplanner_init、table_calibration、testctrl三个文件,复制一下,粘贴到C:\用户\公用\公用文档\Experiments\hhtestemplanner文件夹下

在matlab的hhtestemplanner下regenerate一下

现在看一下这三个文件是啥:在matlab的左侧选中emplanner_init文件,右击打开:加载油门刹车标定表、前轮转角与方向盘转角的映射关系(是Carsim自带的)、转向系统的C特性、弧度角度转换、整车参数、横向LQR参数设置 、纵向双PID参数、以及要跑的LQR(LQR(linear quadratic regulator)即线性二次型调节器,基本控制方法)、车辆初始位置。这些都是车辆控制算法所需的参数,运行下脚本,工作区就有这些变量了。这些变量都是控制算法所必须的参数

打开王老师的算法: EMPlanner文件夹中EMPlanner_cs.slx文件打开,点一下车,然后把里面的输入输出和算法复制粘贴到hhtestemplanner里面

则仿真平台搭建完毕

简要了解一下这个算法:

定位模块:prescan自带

决策规划模块:这是王老师之前讲控制的,验证轨迹跟踪性能

控制模块:输入是定位、规划、预描的时间,输出是航向角、油门、刹车、以及相关debug(调试信息);Control main是控制的主函数,分横向控制(LQR)、横向控制(双PID),还有understeer compensate:转向不足的积分补偿(目前没开,是关着的),chassic steering system:从前轮转角变成方向盘转角(但这个模型有点不太对,其中的标定表应该是右前轮与转向系统齿条的位移之间的关系,齿条位移又和C-fact作用变成方向盘转角,这样的映射关系。但这里的输入LQR_final_angle应该是左前轮和右前轮合并出的(自行车模型里面的angle),但是汽车不是自行车,所以这里的自行车前轮要转换为汽车左右前轮的转角,这里还需要一个Ackermann转向几何转换一下右前轮转角。这个有问题,后面王老师会修一下,修的话我怎么改??????

又规划模块的时间T=30,所以仿真也30s,在hhtestemplanner的matla下设置stop time为30,再运行一下:点这里的车,再按”run“,这里报错了,说

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值