车辆换道决策的模糊控制算法实例
目录
一、模糊控制在换道决策应用上的概念介绍
1.1 模糊化
1.2 建立模糊规则
1.3 解模糊
二、Matlab建立模糊逻辑系统
2.1 Matlab模糊逻辑工具箱
2.2 建立模糊系统的步骤
2.3 建立换道决策的模糊逻辑系统
一、模糊控制在换道决策应用上的概念介绍
实际驾车时,车辆在行驶过程中能否去执行换道的决策与道路信息存在很大的非线性关系,模糊逻辑算法可以较好地解决复杂信息下的非线性系统控制。
由实际驾驶经验,我们知道,车辆的安全换道与车辆驾驶速度及车距有关,当车速较大、与前方车辆车距较小时,换道易引起碰撞等危险。在这里定义速度差值系数与车距差值系数作为模糊系统判断的输入量。
(1)速度差值系数:
其中,为车辆当前速度,为前方车辆的速度。
(2)车距差值系数:
其中,为安全车距,为当前车辆距离前方车辆的距离。
1.1 模糊化
将输入的速度差值系数及车距差值系数模糊化为5个等级:设的取值范围[0,1]为论域X,选取X的模糊子集为 {小,较小,中,较大,大};设的取值范围[0,1]为论域Y,同样地,选取Y的模糊子集为 {小,较小,中,较大,大}。
输出变量为换道决策意愿值,模糊化为{弱,较弱,中,较强,强}5个子集,论域为Z,取值范围在[0,1]。
1.2 建立模糊规则
换道意愿 |
速度差值系数 |
|||||
小 |
较小 |
中等 |
较大 |
大 |
||
车距期望系数 |
小 |
较弱 |
中等 |
较强 |
强 |
强 |
较小 |
较弱 |
中等 |
较强 |
强 |
强 |
|
中等 |
弱 |
较弱 |
中等 |
较强 |
较强 |
|
较大 |
弱 |
弱 |
较弱 |
中等 |
较强 |
|
大 |
弱 |
弱 |
弱 |
较弱 |
中等 |
1.3 解模糊
将模糊推理的输出变量转化为实际执行的变量,决策类型定义如下:
decision=1 |
继续轨迹跟踪 |
|
decision=2 |
等待避障 |
|
decision=3 |
执行避障动作 |
二、Matlab建立模糊逻辑系统
2.1 Matlab模糊逻辑工具箱
在Matlab命令行窗口输入
>>fuzzy
可弹出模糊逻辑工具箱的界面:
工具箱的使用可参考:matlab模糊控制工具箱使用和模糊控制pid实例参考_studyer_domi的博客-CSDN博客_matlab模糊控制
2.2 建立模糊系统的步骤
参考:Fuzzy Inference System Modeling- MATLAB & Simulink
1.创建模糊逻辑系统:如,利用 fis = mamfis; %生成模糊逻辑对象(Mamdani模糊系统)
常见的模糊类型有:mamfis、sugfis(Sugeno模糊推理系统)、genfis(从数据生成模糊推理系统对象)等,或类型间相互转换
2.指定输入和输出变量:如,fis = addInput(fis,[0 1],'Name','fai_d'); %(指定模糊系统,变量范围,‘Name’,变量名称)
3.指定隶属度函数:如,fis = addMF(fis,'fai_d','trimf',[-0.25,0,0.25],'Name','小'); %(指定模糊系统,变量名称,隶属度函数类型,‘Name’,隶属度名称)
常见的隶属度类型有:
4.指定模糊规则:这里有,fis = addRule(fis,rulelist);
其中,rulelist为5列的向量,每一列依次表示等级,等级,等级,规则权重,AND/OR选项(1或0)
5.评估及可视化模糊系统
6.导入及导出
例.fis = readfis('LCD'); %从文件加载模糊推理系统
writeFIS(fis,'LCD'); %将模糊系统保存到文件
2.3 建立换道决策的模糊逻辑系统
clc
clear
close all%构造输入、输出
%创建新的模糊推理系统
fis = mamfis; %生成模糊逻辑对象%输入1:fai_d(隶属度函数——距离差值系数)
fis = addInput(fis,[0 1],'Name','fai_d');
%设置三角隶属函数'trimf'
fis = addMF(fis,'fai_d','trimf',[-0.25,0,0.25],'Name','小'); %-0.25,0,0.25分别为三角的左底点,顶点,右底点
fis = addMF(fis,'fai_d','trimf',[0,0.25,0.5],'Name','较小');
fis = addMF(fis,'fai_d','trimf',[0.25,0.5,0.75],'Name','中');
fis = addMF(fis,'fai_d','trimf',[0.5,0.75,1],'Name','较大');
fis = addMF(fis,'fai_d','trimf',[0.75,1,1.25],'Name','大');%输入2:fai_v (隶属度函数——速度差值系数)
fis = addInput(fis,[0 1],'Name','fai_v');
fis = addMF(fis,'fai_v','trimf',[-0.25,0,0.25],'Name','小');
fis = addMF(fis,'fai_v','trimf',[0,0.25,0.5],'Name','较小');
fis = addMF(fis,'fai_v','trimf',[0.25,0.5,0.75],'Name','中');
fis = addMF(fis,'fai_v','trimf',[0.5,0.75,1],'Name','较大');
fis = addMF(fis,'fai_v','trimf',[0.75,1,1.25],'Name','大');%输出
fis = addOutput(fis,[0 1],'Name','fai_h');
fis = addMF(fis,'fai_h','trimf',[-0.25,0,0.25],'Name','弱');
fis = addMF(fis,'fai_h','trimf',[0,0.25,0.5],'Name','较弱');
fis = addMF(fis,'fai_h','trimf',[0.25,0.5,0.75],'Name','中');
fis = addMF(fis,'fai_h','trimf',[0.5,0.75,1],'Name','较强');
fis = addMF(fis,'fai_h','trimf',[0.75,1,1.25],'Name','强');
%%规则库
%第1~5列分别是:fai_d,fai_v,fai_h,规则权重,AND/OR选项
rulelist=[1 1 2 1 1;1 2 3 1 1; %当fai_d=1(小),fai_v=2(较小),此时的换道意愿为3(中)1 3 4 1 1;1 4 5 1 1;1 5 5 1 1;2 1 2 1 1;2 2 3 1 1;2 3 4 1 1;2 4 5 1 1;2 5 5 1 1;3 1 1 1 1;3 2 2 1 1;3 3 3 1 1;3 4 4 1 1;3 5 4 1 1;4 1 1 1 1;4 2 1 1 1;4 3 2 1 1;4 4 3 1 1;4 5 4 1 1;5 1 1 1 1;5 2 1 1 1;5 3 1 1 1;5 4 2 1 1;5 5 3 1 1;];fis = addRule(fis,rulelist); %添加模糊规则函数
showrule(fis) %显示模糊规则函数%%根据输入,得到输出
%先设置解模糊方法
fis.DefuzzMethod = 'centroid';%任意给一个fai_d,fai_v,输出换道意愿fai_h
fai_d = 0.4;
fai_v = 0.6;
fai_h = evalfis(fis,[fai_d,fai_v]);%根据换道意愿fai_h的大小,给出车辆决策
if fai_h > 0 && fai_h <= 0.5decision = 1;disp('车辆决策为:跟驰行驶')
elseif fai_h > 0.5 && fai_h <= 0.6decision = 2;disp('车辆决策为:等待换道')
elseif fai_h > 0.6 && fai_h <= 1decision = 3;disp('车辆决策为:执行换道')
end%%画出模糊系统
figure(1);plotfis(fis); %模糊系统连接结构图
figure(2);plotmf(fis,'input',1); %模糊系统第一个输入隶属函数图
figure(3);plotmf(fis,'input',2); %模糊系统第二个输入隶属函数图
figure(4);plotmf(fis,'output',1); %模糊系统输出隶属函数图
figure(5);gensurf(fis);title('换道意愿模糊规则曲面') %模糊规则曲面%%保存
writeFIS(fis,'LCD');
得到的结果如下:
的隶属度函数值
的隶属度函数值
换道意愿 输出
换道意愿的曲面图
车辆换道决策的模糊控制算法实例相关推荐
- 基于PPO自定义highway-env场景的车辆换道决策
1. 场景描述 如下图所示,自车(蓝车)与前车(白车)在同一车道行驶, 自车初速度为 27m/s,前车以22m/s的速度匀速行驶,两车相距 80m: 目标:自车通过换道,超越前车 2. 代码实现 这里 ...
- SUMO 设置车辆的换道模型
SUMO 设置车辆的换道模型 参数含义如下: https://sumo.dlr.de/docs/TraCI/Change_Vehicle_State.html#lane_change_mode_0xb ...
- 自主换道模型总结_20180502
最近进行了自主换道模型的研究,准备应用在实车上进行无人驾驶的测试.模型使用相机传感,包括决策.规划和控制三个环节. 模型的设计思路如下: 首先利用相机传感,得到相机坐标系下的车道线参数,再转换到车辆坐 ...
- 赛迪智库:汽车智能化垄断格局尚未形成,换道超车机会在哪?
文章经授权转载自中国电子报(ID:cena1984) 当前,我国经济正处于由高速增长向高质量发展转变的关键时期.智能汽车作为电子信息.网络通信与汽车产业跨界融合.创新发展的重要战略新兴领域,正成为互联 ...
- 博弈论在自动驾驶方向的应用(Ⅰ):变道决策的综述
今天发生的许多事故都是人类驾驶员错误的感知和决策造成的.由于准确的风险评估对于防止碰撞至关重要,因此,自动驾驶被认为可以大大减少此类错误.虽然目前的系统已经成功地应用于在真实环境中寻找路径和探测障 ...
- 行泊一体方案「换道超车」,TOP10本土供应商领跑新赛道
从2021年开始,行泊一体智能驾驶方案成为中国本土供应商「换道超车」的标签.从公开信息显示,有超过20家供应商已经对外发布行泊一体方案,部分企业已经开始进入前装量产阶段. 同时,基于域控制器架构的模式 ...
- NGSIM数据集Python处理(车辆变道时周边车辆数据提取)
本文通过Python代码的编写,对NGSIM数据集中车辆变道时周边车辆的加速度.速度等信息进行提取,主要介绍代码逻辑及思路. 关于NGSIM数据集不再赘述,本人上传有NGSIM各路段各车型的车辆数据以 ...
- 从“交易核心”到“数据核心”,国产数据库要换道超车丨数据猿专访
数据智能产业创新服务媒体 --聚焦数智 · 改变商业 一直以来,数据库都被国外科技企业垄断,并与芯片.操作系统合称为我国科技产业的三大"心病".接下来几十年,都将是中国产业升 ...
- 瞭望丨光子芯片能否让中国“换道超车”
第四届进博会技术装备展区集成电路专区现场(2021年11月5日摄) 张建松 来源:新华社新闻 摄:瞭望 文:米磊 ◇ 信息时代的基础设施是电子芯片(集成电路),人工智能时代将更多地依托光子芯片(集成 ...
最新文章
- python1~10阶乘_python求n的阶乘
- linux安装perl编译环境,CentOS7 安装 perl 环境
- C++语言之父 Bjarne Stroustrup 简介
- 【Java并发编程】之八:多线程环境中安全使用集合API
- PyOpenGL之3D界面详解(一)
- 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
- latex在行末出现百分号的作用
- 利用nat123进行内网穿透
- 计算机桌面文件如何发送给qq好友,怎么把电脑里的文件夹发给qq好友
- react 微信公众平台实现支付功能
- MySQL数据库(1)~~一起学习数据库冲冲冲
- 关于小米路由r3g,TTL刷openwrt救砖几个坑
- GrapeCity Documents for Imaging
- pix2pixHD:High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
- [Vulkan教程]概述
- ISC2 成功的网络安全领导者必备的9大特质
- 中职学校计算机专业宣传口号,中职学校文明宣传标语
- 连连支付怎么样?最新连连跨境支付详情介绍!
- 2. TortoiseGit安装与配置
- Easyconnect 选路连接失败,可能当前连接网络异常,请稍后重试