基于模糊控制的汽车停车系统matlab仿真

本文详细介绍了基于模糊逻辑的汽车停车系统,包括其模型、控制变量、模糊控制器的设计过程,以及MATLAB中的核心程序实现。通过模糊化、模糊推理和解模糊,系统能动态调整车辆的行驶参数,实现精确停车。文中还展示了MATLAB代码片段,展示仿真结果的过程。
摘要由CSDN通过智能技术生成

目录

1.汽车停车系统的模型与控制变量

2.模糊控制器设计

3.模糊控制器工作原理

4.MATLAB核心程序

5.仿真结果


      基于模糊控制的汽车停车系统是一种利用模糊逻辑理论对汽车泊车过程进行智能化控制的技术。该系统通过模糊化、模糊推理、解模糊等步骤,根据车辆当前位置、目标车位位置、周围环境信息等输入,动态调整车辆的转向角、油门、刹车等控制量,实现自动、精准、安全的停车。

1.汽车停车系统的模型与控制变量

汽车停车系统可以简化为二维平面运动模型,主要控制变量包括:

  1. 转向角(δ):决定车辆行驶方向,直接影响车辆能否准确驶入目标车位。

  2. 车速(v):影响车辆的运动状态,包括加速、匀速、减速、停车等。

  3. 刹车力度(b):用于控制车辆减速或停车,保证停车过程的安全性。

2.模糊控制器设计

模糊控制器由模糊化、模糊推理、解模糊三个环节组成。

  1. 模糊化:将汽车停车系统的实际控制变量(如当前距离、偏差角度、速度等)和期望值转化为模糊语言变量,如“负大”(NB)、“负中”(NM)、“负小”(NS)、“零”(ZE)、“正小”(PS)、“正中”(PM)、“正大”(PB)。

  2. 模糊推理:基于预设的模糊控制规则库,进行模糊推理。模糊控制规则通常根据专家经验或系统仿真实验设计,如:

    • 转向角控制规则

      • IF (偏差角度 is PB) THEN (转向角 is PS)
      • IF (偏差角度 is PM) THEN (转向角 is PM)
      • ...
      • IF (偏差角度 is NS) THEN (转向角 is NS)
    • 车速控制规则

      • IF (距离是 PB) AND (偏差角度 is PB) THEN (车速 is NS)
      • IF (距离是 PM) AND (偏差角度 is PM) THEN (车速 is ZE)
      • ...
      • IF (距离 is NS) AND (偏差角度 is NS) THEN (车速 is PS)
    • 刹车力度控制规则

      • IF (距离 is PB) THEN (刹车力度 is PB)
      • IF (距离 is PM) THEN (刹车力度 is PM)
      • ...
      • IF (距离 is NS) THEN (刹车力度 is NS)
  3. 解模糊:将模糊推理得到的模糊控制输出(转向角、车速、刹车力度的模糊语言变量)通过中心平均法、最大隶属度法等解模糊算法转化为具体的控制量值。

3.模糊控制器工作原理

基于模糊控制的汽车停车系统工作过程如下:

  1. 环境感知与信息获取:通过车载传感器(如超声波雷达、摄像头、激光雷达等)实时获取车辆当前位置、目标车位位置、周围障碍物信息等。

  2. 模糊化:将实际值与期望值转化为模糊语言变量。

  3. 模糊推理:根据模糊控制规则库进行推理,得出转向角、车速、刹车力度的模糊输出。

  4. 解模糊:将模糊输出转化为具体的控制量值(转向角、车速、刹车力度)。

  5. 车辆控制:将控制量值发送给车辆的转向系统、油门系统、刹车系统,执行相应的动作,调整车辆行驶状态。

  6. 反馈与调整:根据车辆新的位置、速度等信息,重复上述过程,不断调整控制量,直至车辆准确停入目标车位。

4.MATLAB核心程序

% --- Executes on button press in pushbuttonRun.
function pushbuttonRun_Callback(hObject, eventdata, handles)
checkbox = get(handles.checkbox1,'Value');
x = str2double(get(handles.xtext,'String'));
y = str2double(get(handles.ytext,'String'));
angle = str2double(get(handles.angletext,'String'));
[xp, yp] = computeCarPoints(x, y, radtodeg(angle));
for i=1:4
   if xp(i) > 25 || xp(i)<0 || yp(i) > 22.5 || yp(i) <0
       msgbox('Invalid car location.');
       return;
   end
end
carParking(x,y,angle, checkbox);
%main;
% hObject    handle to pushbuttonRun (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --- Executes on button press in pushbuttonSet.
function pushbuttonSet_Callback(hObject, eventdata, handles)
x = str2double(get(handles.xtext,'String'));
y = str2double(get(handles.ytext,'String'));
angle = str2double(get(handles.angletext,'String'));
[xp, yp] = computeCarPoints(x, y, radtodeg(angle));
for i=1:4
   if xp(i) > 25 || xp(i)<0 || yp(i) > 22.5 || yp(i) <0
       msgbox('Invalid car location.');
       xp
       yp
       return;
   end
end
[xp, yp] = computeCarPoints(x, y, angle);
xp(end+1) = xp(1);
yp(end+1) = yp(1);
plot(xp,yp);
hold on;
plot(x, y, 'ro');

plot(0:25,ones(26)*22.5, 'm--');
drawParkedCars(3.5,1.7);
xT1 = 7.25; yT1 = 20.7;
[xp, yp] = computeCarPoints(xT1, yT1, 180);
xp(end+1) = xp(1);
yp(end+1) = yp(1);
plot(xp,yp, 'r+');
hold on;
plot(xT1, yT1, 'bo');
xlim([0 25]);
ylim([0 25]);

grid on;
drawnow;
hold off;
% hObject    handle to pushbuttonSet (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% --- Executes on button press in pushbuttonpparking.
function pushbuttonpparking_Callback(hObject, eventdata, handles)
set(handles.xtext,'String', '7.25');
set(handles.ytext,'String','20.7');
set(handles.angletext,'String', '180');
xT1 = 7.25; yT1 = 20.7;

[xp, yp] = computeCarPoints(xT1, yT1, 180);
xp(end+1) = xp(1);
yp(end+1) = yp(1);
plot(xp,yp);
hold on;
plot(xT1, yT1, 'ro');

plot(0:25,ones(26)*22.5, 'm--');
drawParkedCars(3.5,1.7);
xT2 = 14.25; yT2 = 23.5;
[xp, yp] = computeCarPoints(xT2, yT2, 180);
xp(end+1) = xp(1);
yp(end+1) = yp(1);
plot(xp,yp, 'r+');
hold on;
plot(xT2, yT2, 'bo');
xlim([0 25]);
ylim([0 25]);

grid on;
drawnow;
hold off;
% hObject    handle to pushbuttonpparking (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
up4057

5.仿真结果

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值