1. 问题引进

之前聊过根据车辆运动学模型的PID/PP途径盯梢和MPC途径盯梢,本次聊聊如何规划含糊操控器完成车辆途径盯梢。我们直接带入一个阿克曼模型的车辆操控问题(问题来源:某课程课后作业),如图所示。1.目标是规划一个操控器,在抱负的车辆运动学数学模型的情况下,操控车辆沿着x轴方向前进,这便是一个典型的简化方向的途径盯梢问题。

路径跟踪算法之模糊控制器跟踪
假定小车能够以v=0.5m/s的恒定速度向前移动。并且假定小车配备有陀螺仪等传感器,该传感器能够随时测量小车当时的方位(x,y)和方向(视点)。那么本盯梢问题的解决便是需要规划一个盯梢操控器,依据小车的实际方位,调整小车的方向盘,然后完成小车从当时方位接近参阅途径(y= = 0)并安稳的沿途径前进。这个盯梢操控器就能够是含糊操控器。

2. 含糊操控器原理

含糊操控是以含糊集合理论、含糊言语及含糊逻辑为基础的操控,它是含糊数学在操控体系中的应用,是一种非线性智能操控。含糊操控是利用人的常识对操控目标进行操控的一种办法,通常用“if条件,then成果”的形式来表现,所以又浅显地称为言语操控。一般用于无法以严密的数学表示的操控目标模型,即可利用人(熟练专家)的经历和常识来很好地操控。因而利用人的智力含糊地进行体系操控的办法便是含糊操控^[1]。

含糊操控器规划一般能够归纳为四个首要部分:

  • 含糊化。首要作用是选定含糊操控器的输入量与输出量,并将其转换为体系可识别的含糊量,具体包括以下三步: 1.确认输入/出量并对输入/出量进行满足含糊操控需求的处理; 2.对输入/出量进行规矩化处理; 3.确认各输入/出量的含糊言语取值和相应的从属度函数。
  • 规矩库。依据人类专家的经历建立含糊规矩库。含糊规矩库包括众多操控规矩,是从实际操控经历过渡到含糊操控器的关键步骤。
  • 含糊推理。首要完成根据常识的推理决议计划,界说输入量与输出量操控逻辑表。
  • 解含糊。首要作用是将推理得到的操控量转化为操控量输出。

路径跟踪算法之模糊控制器跟踪

3.含糊操控完成途径盯梢

3.1 小车运动学建模

假定顺时针旋转为正方向,逆时针旋转为负方向。依据小车盯梢示意图小车的模型与方位信息,能够获得小车方位(x,y)、方向(视点)与小车前轮转角u的简化离散模型,写成状态方程的形式如下所示

{(k+1)=(k)+vTtan(u(k))/Lx(k+1)=x(k)+vTcos((k))y(k+1)=y(k)+sin((k))\left\{ \begin{aligned} (k + 1) & = (k) + vTtan(u(k))/L \\ x(k + 1) & = x(k) + vTcos((k)) \\ y(k + 1) & = y(k) + sin((k)) \end{aligned} \right.

其间:

  • L —小车的前后轮距(这儿给定L = 2.5m);
  • T —离散模型的采样时刻(这儿给定T = 0.1s) ;
  • v —小车的前进速度(这儿给定v = 0.5m/s)。

3.2 含糊操控器规划

针对本文提出的盯梢问题和小车模型,规划一个含糊操控器,其输入变量为小车当时方位与参阅途径(y==0)之间的纵向差错y(参阅途径的y=0,因而纵坐标y即为纵向差错),方向差错(参阅途径的=0,因而纵坐标y即为方向差错差);输出量为u,代表小车前轮(方向盘)的旋转视点,然后操作小车从任何给定的初始条件到达参阅途径并沿途径前进。在模仿中。变量范围结合实际情况限定为:

−100≤y≤100,−180≤≤180,−30≤u≤30-100 ≤y≤100, -180≤≤180, -30≤u≤30

3.2.1 含糊化

对两个输入量和一个输出量的含糊言语界说如下表所示:

纵向差错y 方向差错 前轮转角u
AB(正大) AO(正大) NB(负大)
AC(正小) AR(正中) NM(负中)
CE(中心) AH(正小) NS(负小)
BC(负小) HZ(中心) ZE(中心)
BE(负大) BH(负小) PS(正小)
BR(负中) PM(正中)
BO(负大) PB正大)

输入变量【纵向差错y】的率属函数挑选梯形从属函数(trapmf)、三角形从属函数(trimf)都可。

路径跟踪算法之模糊控制器跟踪

输入变量【方向差错】的率属函数同样挑选梯形从属函数(trapmf)、三角形从属函数(trimf)都可。

路径跟踪算法之模糊控制器跟踪

输出变量【前轮旋转视点u】的率属函数都挑选三角形从属函数(trimf),界说如下

路径跟踪算法之模糊控制器跟踪

3.2.2 含糊规矩界说及去含糊函数挑选

从开车的经历可得出基本的操控规矩:

  • 当司机发现车在路左侧时,则需要将方向盘往右打以回到途径;
  • 当司机发现车在路右i侧时,则需要将方向盘往左打以回到途径;
  • 当司机发现车头向左偏离途径时,需要将方向盘往右打以回到途径;
  • 当司机发现车头向又偏离途径时,则需要将方向盘往左打以回到途径;

根据这个基本规矩,界说含糊规矩如下表,每个规矩都有这样的形式,if y is Y and is ,then u is U。运用matlab的fuzzy工具箱界说如下。

路径跟踪算法之模糊控制器跟踪

最终生成含糊操控器如下。

路径跟踪算法之模糊控制器跟踪

路径跟踪算法之模糊控制器跟踪

路径跟踪算法之模糊控制器跟踪

路径跟踪算法之模糊控制器跟踪
其间,去含糊函数挑选centroid,为面积重心法。

3.3 matlab仿真建立及成果

3.3.1 simulink仿真

运用simulink建立出本文的操控问题仿真如下

路径跟踪算法之模糊控制器跟踪

其间

  • 【exp_single】是途径生成模块,生成参阅途径y= = 0,s函数中心代码如下。
function sys=mdlOutputs(t,x,u)
% 希望位姿
sys(1) = t;% 希望x,无用
sys(2) = 0;% 希望y
sys(3) = 0;% 希望xita
  • 【robot_auxctrl】是差错核算模块,生出本周期小车当时方位与参阅途径(y==0)之间的纵向差错y,方向差错两个变量,即为含糊操控器的输入。s函数中心代码如下。
function sys=mdlOutputs(t,x,u)
% 纵向距离
sys(1) = u(2) - u(5);
% 视点
sys(2) = u(3) - u(6)*180/pi;
  • 【Fuzzy Logic Controller】即为本文所述的含糊操控器。

  • 【robot_keniticmodel】则为小车的运动学模型,依据输入的前轮转向角,更新当时周期的小车方位。s函数中心代码如下。

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 3;        
sizes.NumDiscStates  = 0;        
sizes.NumOutputs     = 3;        
sizes.NumInputs      = 1;        
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
%% 设置小车初始方位.依次是[x,y,xita],注意要将视点转成弧度
% x0  = [20;40;0*pi/180.0];
 x0  = [10;-30;90*pi/180.0];
% x0  = [40;30;(220-360)*pi/180.0];% 注意换算成-180至180的范围内
% x0  = [50;10;-10*pi/180.0];
str = [];
ts  = [0,0];
function sys=mdlDerivatives(t,x,u)
%% 变量界说
v=0.5;%线速度
L = 2.5;%轴距
w=u*pi/180;%转角
theta = x(3);%当时视点
%% 运动学模型状态方程
sys(1) = v*cos(theta);
sys(2) = v*sin(theta);
sys(3) = v*tan(w)/L;
function sys=mdlOutputs(t,x,u)
sys(1) = x(1);
sys(2) = x(2);
sys(3) = x(3);

3.3.2 仿真成果

  • 纵向差错y随时刻改变仿真成果

路径跟踪算法之模糊控制器跟踪

  • 方向差错随时刻改变仿真成果

路径跟踪算法之模糊控制器跟踪

  • 前轮转角u随时刻改变仿真成果

路径跟踪算法之模糊控制器跟踪

可见,跟着时刻推移,纵向差错y,方向差错悉数归零,这就说明,小车最终从初始方位完成了对参阅途径的盯梢运转。

参阅

  1. 百度百科:关键词含糊操控理论