主要内容gydF4y2Ba

基于模糊推理系统的自动泊车gydF4y2Ba

这个例子展示了如何调整一个模糊推理系统(FIS)的自动停车应用与非完整约束。gydF4y2Ba

自动停车是智能车辆(自动驾驶汽车)的基本功能。非完整运动学对自动泊车施加了额外的约束,在自动泊车中,汽车不能横向移动,而是使用弯曲运动。gydF4y2Ba

运动学模型gydF4y2Ba

下图显示了一个非完整汽车的运动学与标准阿克曼转向机构。gydF4y2Ba

运动学模型有如下参数。gydF4y2Ba

  • θgydF4y2Ba 是汽车相对于全局参考系的当前方向。gydF4y2Ba

  • ϕgydF4y2Ba 是相对于汽车方向的转向角。gydF4y2Ba

  • FgydF4y2Ba 是前轮的中心,gydF4y2Ba (gydF4y2Ba xgydF4y2Ba fgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba fgydF4y2Ba )gydF4y2Ba .gydF4y2Ba

  • RgydF4y2Ba 是后轮的中心,gydF4y2Ba (gydF4y2Ba xgydF4y2Ba rgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba rgydF4y2Ba )gydF4y2Ba .gydF4y2Ba

  • |gydF4y2Ba RgydF4y2Ba FgydF4y2Ba |gydF4y2Ba 是轴距的长度。gydF4y2Ba

  • OgydF4y2Ba 是汽车的曲率中心。gydF4y2Ba

  • |gydF4y2Ba OgydF4y2Ba RgydF4y2Ba |gydF4y2Ba 是汽车的曲率半径。gydF4y2Ba

在这个模型中,后轮的方向是固定的,平行于车身。也就是说,后轮与汽车的方向相同,gydF4y2Ba θgydF4y2Ba .前轮相互平行,并随转向角度旋转gydF4y2Ba ϕgydF4y2Ba .转向角度被限制在gydF4y2Ba -gydF4y2Ba ΦgydF4y2Ba 而且gydF4y2Ba +gydF4y2Ba ΦgydF4y2Ba .在这个例子中,gydF4y2Ba ΦgydF4y2Ba 是30度。gydF4y2Ba

前后轮心的关系如下。gydF4y2Ba

xgydF4y2Ba fgydF4y2Ba -gydF4y2Ba xgydF4y2Ba rgydF4y2Ba =gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba ⋅gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba )gydF4y2Ba

ygydF4y2Ba fgydF4y2Ba -gydF4y2Ba ygydF4y2Ba rgydF4y2Ba =gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba ⋅gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba )gydF4y2Ba

前轮中心速度和汽车方向速度的运动学方程为gydF4y2Ba 年代gydF4y2Ba 是汽车的速度。gydF4y2Ba

xgydF4y2Ba ˙gydF4y2Ba fgydF4y2Ba =gydF4y2Ba 年代gydF4y2Ba *gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba +gydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba

ygydF4y2Ba ˙gydF4y2Ba fgydF4y2Ba =gydF4y2Ba 年代gydF4y2Ba *gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba +gydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba

θgydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba 年代gydF4y2Ba *gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba

自动停车gydF4y2Ba

最小曲率半径(gydF4y2Ba OgydF4y2Ba RgydF4y2Ba ),视乎轴距长度(gydF4y2Ba RgydF4y2Ba FgydF4y2Ba ).这个最小半径限制运动的汽车在停车机动。gydF4y2Ba

当人类司机停车时,当接近一个空停车位时,他们经常无法保持所需的车速和方向。为了在不发生碰撞的情况下成功停车,他们必须在调整车速和转向角度的同时,在向前和向后运动之间切换来进行补偿。gydF4y2Ba

人类驾驶员不会有意识地根据汽车的运动学模型进行几何计算。相反,基于他们自己的试错经验,他们使用自然规则和推理来理解他们的汽车在停车情况下的限制。您可以使用模糊系统为这种基于规则的推理建模。gydF4y2Ba

本例使用以下环境来模拟一辆非完整汽车的正面停车。gydF4y2Ba

在这里:gydF4y2Ba

  • 模拟环境是一个45乘15英尺的停车场。gydF4y2Ba

  • 孵化区域显示已占用的停车位。gydF4y2Ba

  • 这个空停车位长6 × 7英尺。gydF4y2Ba

  • 该车长5 × 3英尺,轴距长(gydF4y2Ba |gydF4y2Ba RgydF4y2Ba FgydF4y2Ba |gydF4y2Ba )为3英尺,从轴距到汽车前后都有1英尺的偏移。gydF4y2Ba

本例假设如下。gydF4y2Ba

  • 该车配备了智能系统,可以检测到空停车位,然后在停车位的起始边缘附近停车。gydF4y2Ba

  • 自动停车系统会在汽车停下来后对其进行控制。理想情况下,在起始位置,汽车几乎垂直于道路中心,并与道路平行(gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 度或gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba 度)。gydF4y2Ba

  • 由于停车场不断变化的性质、运动约束和物理汽车属性,汽车确实会停在准确的期望位置和方向。因此,停车系统假设汽车停在空停车位前面的某个地方gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 0gydF4y2Ba 或gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba 车厢两侧空间不均等。gydF4y2Ba

  • 为了避免碰撞,汽车配备了距离传感器,为汽车的前、后、左、右侧面提供距离数据。下图显示了从模拟环境中的传感器获得的距离数据的示例。gydF4y2Ba

  • 假定最大传感器范围为gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba fgydF4y2Ba tgydF4y2Ba ,涵盖整个模拟环境。gydF4y2Ba

停车的人类推理gydF4y2Ba

一般情况下,如下图所示,人类驾驶员在接近空置的正面停车位时,会保持适当的速度和转向角度。在这种情况下,它们可以在没有任何向前和向后振荡运动的情况下停车。gydF4y2Ba

然而,有时驾驶员无法保持理想的速度和转向角度以实现无振荡停车。如下例所示,驱动器必须使用来回运动进行补偿。gydF4y2Ba

在这种情况下,司机:gydF4y2Ba

  1. 向右转,向前走。gydF4y2Ba

  2. 未能进入停车位,因为汽车的前部接近被占用空间的汽车。gydF4y2Ba

  3. 左转,然后倒车,留出足够的空间进入停车位gydF4y2Ba

  4. 向前移动进入停车位,同时调整汽车方向以与停车方向对齐。gydF4y2Ba

  5. 当汽车前端距离停车位末端有一个安全的最小距离并且车辆与停车位对齐(在模拟环境中为90度方向)时停止。gydF4y2Ba

下一节将使用这些运动模式来构建自动泊车的模糊系统。gydF4y2Ba

生成培训数据gydF4y2Ba

为了调整模糊系统,本例使用汽车的运动学模型和前一节中描述的运动模式人工生成训练数据。数据生成过程使用以下离散形式的运动学模型,其中gydF4y2Ba ΔgydF4y2Ba tgydF4y2Ba 是0.1秒。gydF4y2Ba

xgydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ΔgydF4y2Ba tgydF4y2Ba ⋅gydF4y2Ba 年代gydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba ⋅gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba (gydF4y2Ba kgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ϕgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba

ygydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba ygydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ΔgydF4y2Ba tgydF4y2Ba ⋅gydF4y2Ba 年代gydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba ⋅gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba (gydF4y2Ba kgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ϕgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba

θgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba 年代gydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba ⋅gydF4y2Ba 罪gydF4y2Ba ϕgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba

xgydF4y2Ba rgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba -gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba ⋅gydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba

ygydF4y2Ba rgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba ygydF4y2Ba fgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba -gydF4y2Ba |gydF4y2Ba 射频gydF4y2Ba |gydF4y2Ba ⋅gydF4y2Ba 罪gydF4y2Ba θgydF4y2Ba (gydF4y2Ba kgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba

转向角度(gydF4y2Ba ϕgydF4y2Ba )和速度(gydF4y2Ba 年代gydF4y2Ba )的值是根据前面讨论的典型人类驾驶模式生成的。转向角度和速度受以下限制。gydF4y2Ba

-gydF4y2Ba ΦgydF4y2Ba ≤gydF4y2Ba ϕgydF4y2Ba ≤gydF4y2Ba ΦgydF4y2Ba ,gydF4y2Ba ΦgydF4y2Ba =gydF4y2Ba 30.gydF4y2Ba ∘gydF4y2Ba

-gydF4y2Ba 3.gydF4y2Ba .gydF4y2Ba 年代gydF4y2Ba ≤gydF4y2Ba 年代gydF4y2Ba ≤gydF4y2Ba 年代gydF4y2Ba ,gydF4y2Ba 年代gydF4y2Ba =gydF4y2Ba 5gydF4y2Ba 英国《金融时报》gydF4y2Ba 证券交易委员会gydF4y2Ba

为了腾出安全转弯的空间,当汽车接近被占用的空间时,向后运动使用更高的速度。或者,汽车可以在倒车时以相同的速度行驶更长的时间,为安全转弯留出足够的空间。gydF4y2Ba

加载训练数据结构。gydF4y2Ba

trainingData = load(gydF4y2Ba“trainingData”gydF4y2Ba);gydF4y2Ba

每个训练数据点包括5个输入。gydF4y2Ba

  • 角偏差(gydF4y2Ba ΔgydF4y2Ba θgydF4y2Ba )在车辆朝向与停车位朝向之间gydF4y2Ba

  • 到正面的最小距离(gydF4y2Ba dgydF4y2Ba fgydF4y2Ba rgydF4y2Ba ogydF4y2Ba ngydF4y2Ba tgydF4y2Ba ),左(gydF4y2Ba dgydF4y2Ba lgydF4y2Ba egydF4y2Ba fgydF4y2Ba tgydF4y2Ba )、后(gydF4y2Ba dgydF4y2Ba rgydF4y2Ba egydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ),以及右边(gydF4y2Ba dgydF4y2Ba rgydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba 汽车的)gydF4y2Ba

每个训练数据点包括两个输出。gydF4y2Ba

  • 转向角(gydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba

  • 速度(gydF4y2Ba 年代gydF4y2Ba 汽车的)gydF4y2Ba

由于角偏差和距离值具有不同的单位和尺度,因此将训练数据归一化到范围[0 1]。这样做消除了成本函数对较大幅度输入误差的任何敏感性。训练数据结构包含原始输入值和输出值(gydF4y2BaxgydF4y2Ba而且gydF4y2BaygydF4y2Ba)及其归一化值(gydF4y2BaxngydF4y2Ba而且gydF4y2BayngydF4y2Ba).gydF4y2Ba

在数据生成过程中,当汽车到达距离停车位末端的最小安全距离并与停车方向对齐时,就实现了成功的停车条件。gydF4y2Ba

构造和训练初始模糊系统gydF4y2Ba

本例使用FIS树作为模糊停车系统。调优过程的第一个阶段是构造和训练最初的FIS,然后将其组装到FIS树中。然后通过微调整个FIS树的参数来提高性能。gydF4y2Ba

为了构造和调优初始模糊系统,本例使用ANFIS,与其他调优方法相比,它提供了更快的收敛速度。gydF4y2Ba

FIS树及其组成模糊系统的设计解决了以下问题。gydF4y2Ba

  • FIS树有五个输入和两个输出,与训练数据集中的值相匹配。gydF4y2Ba

  • 由于ANFIS支持单输出金宝app,因此为转向角构造单独的模糊子系统(gydF4y2Ba ϕgydF4y2Ba )和速度(gydF4y2Ba 年代gydF4y2Ba ).gydF4y2Ba

  • 为了获得更好的性能,每个子系统都使用单独的FISs进行向前和向后运动。gydF4y2Ba

  • 使用额外的FIS为每个子系统组合向前和向后运动控制器。gydF4y2Ba

训练前向运动控制器转向,gydF4y2BaforwardPhiFISgydF4y2Ba,使用训练输入输出数据。为此,首先提取归一化的转向角训练数据。gydF4y2Ba

forwardPhi = trainingData.yn(:,1);gydF4y2Ba

然后,由于该系统仅用于向前运动,将转向角度输出值设置为0为负速度值。gydF4y2Ba

negSpeedId = trainingData.y(:,2) < 0;forwardPhi(negSpeedId) = 0;gydF4y2Ba

创建ANFIS训练选项,并配置显示器以只显示最终的训练结果。gydF4y2Ba

aoptions = anfisOptions;aoptions。DisplayANFISInformation = false;aoptions。DisplayErrorValues = false;aoptions。DisplayStepSize = false;gydF4y2Ba

使用三个mf作为第一个输入(gydF4y2Ba ΔgydF4y2Ba θgydF4y2Ba ),因为它有正负两种值。使用两个mf作为距离输入。gydF4y2Ba

aoptions。InitialFIS = [3 2 2 2 2 2];gydF4y2Ba

火车gydF4y2BaforwardPhiFISgydF4y2Ba.gydF4y2Ba

forwardPhiFIS = anfis([训练数据。xn forwardPhi], aoptions);gydF4y2Ba
最小训练RMSE = 0.100129gydF4y2Ba

以类似的方式,训练前进速度控制器,gydF4y2BaforwardSpeedFISgydF4y2Ba.gydF4y2Ba

forwardSpeed = trainingData.yn(:,2);forwardSpeed(negSpeedId) = 0;forwardSpeedFIS = anfis([训练数据。xn forwardSpeed], aoptions);gydF4y2Ba
最小训练RMSE = 0.161479gydF4y2Ba

接下来,调整向后运动控制器的转向角度和速度,gydF4y2BabackwardPhiFISgydF4y2Ba而且gydF4y2BabackwardSpeedFISgydF4y2Ba,分别。在这种情况下,将正速度值的输出值设置为0。gydF4y2Ba

火车gydF4y2BabackwardPhiFISgydF4y2Ba.gydF4y2Ba

backwardPhi = trainingData.yn(:,1);backwardPhi(~negSpeedId) = 0;backwardPhiFIS = anfis([trainingData.]xn backwardPhi], aoptions);gydF4y2Ba
最小训练RMSE = 0.112362gydF4y2Ba

火车gydF4y2BabackwardSpeedFISgydF4y2Ba.gydF4y2Ba

backwardSpeed = trainingData.yn(:,2);backwardSpeed(~negSpeedId) = 0;backwardSpeedFIS = anfis([trainingData.]xn backwardSpeed], aoptions);gydF4y2Ba
最小训练RMSE = 0.0642125gydF4y2Ba

对于每个FIS,指定相应的FIS名称。gydF4y2Ba

forwardPhiFIS。Name =gydF4y2Ba“forwardPhiFIS”gydF4y2Ba;forwardSpeedFIS。Name =gydF4y2Ba“forwardSpeedFIS”gydF4y2Ba;backwardPhiFIS。Name =gydF4y2Ba“backwardPhiFIS”gydF4y2Ba;backwardSpeedFIS。Name =gydF4y2Ba“backwardSpeedFIS”gydF4y2Ba;gydF4y2Ba

接下来,火车gydF4y2BaphiFISgydF4y2Ba的前向和后向转向角值gydF4y2BaforwardPhiFISgydF4y2Ba而且gydF4y2BabackwardPhiFISgydF4y2Ba.生成输入训练数据gydF4y2BaphiFISgydF4y2Ba、评估gydF4y2BaforwardPhiFISgydF4y2Ba而且gydF4y2BabackwardPhiFISgydF4y2Ba使用规范化的输入训练数据。gydF4y2Ba

eoptions = evalfisOptions;eoptions。EmptyOutputFuzzySetMessage =gydF4y2Ba“没有”gydF4y2Ba;eoptions。NoRuleFiredMessage =gydF4y2Ba“没有”gydF4y2Ba;eoptions。OutOfRangeInputValueMessage =“没有”gydF4y2Ba;forwardPhi = evalfis(forwardPhiFIS,trainingData.xn,eoptions);backwardPhi = evalfis(backwardPhiFIS,trainingData.xn,eoptions);gydF4y2Ba

每个输入使用5个mf。在这种情况下,您可以使用更多的mf,因为gydF4y2BaphiFISgydF4y2Ba只有两个输入。gydF4y2Ba

aoptions。InitialFIS = 5;gydF4y2Ba

火车gydF4y2BaphiFISgydF4y2Ba使用生成的输入数据和规范化的输出训练数据。gydF4y2Ba

phiFIS = anfis([forwardPhi backwardPhi trainingData.yn(:,1)],aoptions);gydF4y2Ba
最小训练RMSE = 0.120349gydF4y2Ba
phiFIS。Name =gydF4y2Ba“phiFIS”gydF4y2Ba;gydF4y2Ba

同样,火车gydF4y2BaspeedFISgydF4y2Ba的正向和反向速度值gydF4y2BaforwardSpeedFISgydF4y2Ba而且gydF4y2BabackwardSpeedFISgydF4y2Ba,分别。生成输入训练数据gydF4y2BaspeedFISgydF4y2Ba、评估gydF4y2BaforwardSpeedFISgydF4y2Ba而且gydF4y2BabackwardSpeedFISgydF4y2Ba使用规范化的输入训练数据。gydF4y2Ba

forwardSpeed = evalfis(forwardSpeedFIS,trainingData.xn,eoptions);backwardSpeed = evalfis(backwardSpeedFIS,trainingData.xn,eoptions);speedFIS = anfis([forwardSpeed backwardSpeed trainingData.yn(:,2)],aoptions);gydF4y2Ba
最小训练RMSE = 0.0969036gydF4y2Ba
speedFIS。Name =gydF4y2Ba“speedFIS”gydF4y2Ba;gydF4y2Ba

构造和调优FIS树gydF4y2Ba

调优过程的下一个阶段是使用先前调优的组件FISs构造和调优模糊树。要创建FIS树,首先根据整体FIS树设计定义组件FIS之间的连接。gydF4y2Ba

连接= [gydF4y2Ba...gydF4y2Ba“forwardPhiFIS /输出”gydF4y2Ba“phiFIS / input1”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“backwardPhiFIS /输出”gydF4y2Ba“phiFIS / input2”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardSpeedFIS /输出”gydF4y2Ba“speedFIS / input1”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“backwardSpeedFIS /输出”gydF4y2Ba“speedFIS / input2”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input1”gydF4y2Ba“backwardPhiFIS / input1”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input1”gydF4y2Ba“forwardSpeedFIS / input1”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input1”gydF4y2Ba“backwardSpeedFIS / input1”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input2”gydF4y2Ba“backwardPhiFIS / input2”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input2”gydF4y2Ba“forwardSpeedFIS / input2”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input2”gydF4y2Ba“backwardSpeedFIS / input2”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input3”gydF4y2Ba“backwardPhiFIS / input3”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input3”gydF4y2Ba“forwardSpeedFIS / input3”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input3”gydF4y2Ba“backwardSpeedFIS / input3”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input4”gydF4y2Ba“backwardPhiFIS / input4”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input4”gydF4y2Ba“forwardSpeedFIS / input4”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input4”gydF4y2Ba“backwardSpeedFIS / input4”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input5”gydF4y2Ba“backwardPhiFIS / input5”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input5”gydF4y2Ba“forwardSpeedFIS / input5”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba“forwardPhiFIS / input5”gydF4y2Ba“backwardSpeedFIS / input5”gydF4y2Ba;gydF4y2Ba...gydF4y2Ba];gydF4y2Ba

构造FIS树。gydF4y2Ba

fuzzySystems = [gydF4y2Ba...gydF4y2BaforwardPhiFIS backwardPhiFISgydF4y2Ba...gydF4y2BaforwardSpeedFIS backwardSpeedFISgydF4y2Ba...gydF4y2BaphiFIS speedFIS];拳头=拳头树(fuzzySystems,连接);gydF4y2Ba

的MF和规则参数值进行微调gydF4y2Ba拳头gydF4y2Ba.为了获得更好的性能,调整各个输出的模糊系统参数。gydF4y2Ba

  • 首先,调整转向角的FIS参数。gydF4y2Ba

  • 其次,根据速度调整FIS参数。gydF4y2Ba

要为一个输出调优FIS树参数而不考虑另一个输出值,可以暂时从FIS树中删除另一个输出。gydF4y2Ba

若要调整转向角输出的FIS树,请从中删除第二个输出gydF4y2Ba拳头gydF4y2Ba获取可调的设置gydF4y2BaforwardPhiFISgydF4y2Ba,gydF4y2BabackwardPhiFISgydF4y2Ba,gydF4y2BaphiFISgydF4y2Ba.gydF4y2Ba

fisTin1 =拳头;fisTin1.Outputs(2) = [];[in,out,rule] = gettunstesettings (fisTin1,gydF4y2Ba“金融中间人”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba[gydF4y2Ba“forwardPhiFIS”gydF4y2Ba“backwardPhiFIS”gydF4y2Ba“phiFIS”gydF4y2Ba]);gydF4y2Ba

创建一个调优选项集。gydF4y2Ba

toptions = tunefisOptions;gydF4y2Ba

使用gydF4y2BapatternsearchgydF4y2Ba方法进行微调,并将最大迭代数设置为10。如果您拥有并行计算工具箱™软件,则可以通过设置gydF4y2Batoptions。UseParallelgydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba.如果没有并行计算工具箱软件,请设置gydF4y2Ba选项。UseParallelgydF4y2Ba来gydF4y2Ba假gydF4y2Ba,为默认值。gydF4y2Ba

toptions。方法=gydF4y2Ba“patternsearch”gydF4y2Ba;toptions.MethodOptions.MaxIterations = 10;gydF4y2Ba

要改进模式搜索结果,请设置方法选项gydF4y2BaUseCompletePollgydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

toptions.MethodOptions.UseCompletePoll = true;gydF4y2Ba

为了重现性,将随机数生成器种子设置为默认值。gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba)gydF4y2Ba

训练可能需要大量的计算,需要几个小时才能完成。为了节省时间,通过设置加载预训练的FIS树gydF4y2BaruntunefisgydF4y2Ba来gydF4y2Ba假gydF4y2Ba.要运行调优,可以设置gydF4y2BaruntunefisgydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

Runtunefis = false;gydF4y2Ba

调优FIS树。gydF4y2Ba

如果gydF4y2Baruntunefis fisTin1 = tunefis(fisTin1,[in;out;rule],gydF4y2Ba...gydF4y2BatrainingData.xn trainingData.yn (: 1) toptions);gydF4y2Ba其他的gydF4y2BapreTunedFIST = load(gydF4y2Ba“tunedFIST”gydF4y2Ba);fisTout1 = preTunedFIST.fisTout1;gydF4y2Ba结束gydF4y2Ba

接下来,通过首先删除速度输出和添加转向角度输出来调整其他FIS树输出。然后,从gydF4y2BaforwardSpeedFISgydF4y2Ba,gydF4y2BabackwardSpeedFISgydF4y2Ba,gydF4y2BaspeedFISgydF4y2Ba.gydF4y2Ba

fisTin2 = fisout1;fisTin2.Outputs (1) =gydF4y2Ba“speedFIS /输出”gydF4y2Ba;[in,out,rule] = gettunthesettings (fisTin2,gydF4y2Ba“金融中间人”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba[gydF4y2Ba“forwardSpeedFIS”gydF4y2Ba“backwardSpeedFIS”gydF4y2Ba“speedFIS”gydF4y2Ba]);gydF4y2Ba

调优FIS树。训练完成后,重置FIS树的输出。gydF4y2Ba

如果gydF4y2Baruntunefis rng (gydF4y2Ba“默认”gydF4y2Ba) fisTin2,[in;out;rule],gydF4y2Ba...gydF4y2BatrainingData.xn trainingData.yn (:, 2), toptions);fisTout.Outputs (1) =gydF4y2Ba“phiFIS /输出”gydF4y2Ba;fisTout.Outputs (2) =gydF4y2Ba“speedFIS /输出”gydF4y2Ba;gydF4y2Ba其他的gydF4y2Ba拳头= pretunedfist .拳头;gydF4y2Ba结束gydF4y2Ba

检查输出的个别训练误差(均方根误差)。gydF4y2Ba

err = trainingData。yn-evalfis(fisTout,trainingData.xn,eoptions); err = err.*err; rmsePhi = sqrt(mean(err(:,1)))
rmsePhi = 0.1186gydF4y2Ba
rmspeed = sqrt(mean(err(:,2)))gydF4y2Ba
rmspeed = 0.0967gydF4y2Ba

与anfi训练的模糊系统相比,性能并没有显著提高。gydF4y2Ba

自动泊车模拟gydF4y2Ba

训练数据包含有限的初始条件集。因此,调优后的FIS树在以下条件下是有效的。gydF4y2Ba

  • 汽车的前部必须最初位于前面的车位上gydF4y2Ba 21gydF4y2Ba ≤gydF4y2Ba xgydF4y2Ba fgydF4y2Ba ≤gydF4y2Ba 25gydF4y2Ba .gydF4y2Ba

  • 汽车必须与道路方向紧密对齐,即汽车的初始方向必须是gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 0gydF4y2Ba 或gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba 度。gydF4y2Ba

  • 这辆车一开始必须至少gydF4y2Ba 1gydF4y2Ba .gydF4y2Ba 5gydF4y2Ba 距离公路两侧英尺。也就是说,gydF4y2Ba dgydF4y2Ba lgydF4y2Ba egydF4y2Ba fgydF4y2Ba tgydF4y2Ba >gydF4y2Ba 1gydF4y2Ba .gydF4y2Ba 5gydF4y2Ba 英国《金融时报》和gydF4y2Ba dgydF4y2Ba rgydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba >gydF4y2Ba 1gydF4y2Ba .gydF4y2Ba 5gydF4y2Ba 英国《金融时报》。gydF4y2Ba

右侧停车gydF4y2Ba

调整后的FIS训练为从右侧正面停车(gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba Deg)道路。gydF4y2Ba

下面的结果显示了一个正面停车模拟gydF4y2Ba xgydF4y2Ba fgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 4gydF4y2Ba 英国《金融时报》,gydF4y2Ba ygydF4y2Ba fgydF4y2Ba =gydF4y2Ba 4gydF4y2Ba .gydF4y2Ba 5gydF4y2Ba 英国《金融时报》,gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 8gydF4y2Ba 0gydF4y2Ba 度。gydF4y2Ba

parkFromRight = true;Xf = 24;Yf = 4.5;Theta = 180;图simulateParking (parkFromRight fisTout、trainingData xf, yf,θ)gydF4y2Ba
停gydF4y2Ba

图中包含一个轴对象。axis对象包含39个类型为line, polygon的对象。gydF4y2Ba

在不同的初始条件下模拟停车gydF4y2Ba xgydF4y2Ba fgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba 英国《金融时报》,gydF4y2Ba ygydF4y2Ba fgydF4y2Ba =gydF4y2Ba 5gydF4y2Ba 英国《金融时报》,gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 7gydF4y2Ba 0gydF4y2Ba 度。gydF4y2Ba

parkFromRight = true;Xf = 22;Yf = 5;Theta = 170;图simulateParking (parkFromRight fisTout、trainingData xf, yf,θ)gydF4y2Ba
停gydF4y2Ba

图中包含一个轴对象。axis对象包含37个类型为line, polygon的对象。gydF4y2Ba

在这两种情况下,汽车都可以使用前后运动模式自动停车。然而,汽车不保持相等的距离值在左侧和右侧的停车位。这种行为在人类司机中很常见,他们通常不会把车停在停车位的正中央。相反,它们与两边保持安全距离。gydF4y2Ba

左侧停车gydF4y2Ba

您可以使用相同的模糊系统,从左侧正面停车(gydF4y2Ba θgydF4y2Ba ≈gydF4y2Ba 0gydF4y2Ba 度)。为此,设置gydF4y2BaparkFromRightgydF4y2Ba到假,这就是原因gydF4y2BasimulateParkinggydF4y2Ba修改输入值:gydF4y2Ba

  • 切换角偏差输入的符号gydF4y2Ba ΔgydF4y2Ba θgydF4y2Ba .gydF4y2Ba

  • 切换左边的距离输入(gydF4y2Ba dgydF4y2Ba lgydF4y2Ba egydF4y2Ba fgydF4y2Ba tgydF4y2Ba )和右边(gydF4y2Ba dgydF4y2Ba rgydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba )。gydF4y2Ba

从左侧模拟自动停车gydF4y2Ba xgydF4y2Ba fgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba 英国《金融时报》,gydF4y2Ba ygydF4y2Ba fgydF4y2Ba =gydF4y2Ba 5gydF4y2Ba .5英尺,以及gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 度。gydF4y2Ba

parkFromRight = false;Xf = 22;Yf = 5;= 0;图simulateParking (parkFromRight fisTout、trainingData xf, yf,θ)gydF4y2Ba
停gydF4y2Ba

图中包含一个轴对象。axis对象包含45个类型为line, polygon的对象。gydF4y2Ba

模拟停车的另一个初始条件gydF4y2Ba xgydF4y2Ba fgydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba 英国《金融时报》,gydF4y2Ba ygydF4y2Ba fgydF4y2Ba =gydF4y2Ba 5gydF4y2Ba .5英尺,以及gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 度。gydF4y2Ba

parkFromRight = false;Xf = 23.8;Yf = 5.2;Theta = 7;图simulateParking (parkFromRight fisTout、trainingData xf, yf,θ)gydF4y2Ba
停gydF4y2Ba

图中包含一个轴对象。axis对象包含43个类型为line, polygon的对象。gydF4y2Ba

在这种情况下,类似于右侧停车的结果,汽车遵循一个前后运动,以安全停车。gydF4y2Ba

结论gydF4y2Ba

目前模糊系统设计存在以下不足:gydF4y2Ba

  • 生成的数据只考虑了自动停车的两种运动模式。因此,自动停车系统的鲁棒性有限,不能代表人类驾驶员的所有共同技能。例如,下图显示了另一种常见的场景,驾驶员向后移动,向右转弯,从被占用的空间中腾出右边的空间。gydF4y2Ba

  • 生成的数据使用agydF4y2Ba ±gydF4y2Ba 3.gydF4y2Ba 0gydF4y2Ba 转向角度的度数限制。由此产生的高曲率半径增加了无振荡停车的难度。gydF4y2Ba

  • 本例中使用的传感器模型是一个简单的占用检测模型,其中范围值是从汽车中心径向检测的。此外,当汽车各个角落的距离数据相似时,模糊系统可以在仿真中产生意想不到的结果和局部最优值。更好的选择是对汽车两侧正常的范围数据进行建模,如下图所示。在这种情况下,汽车两侧的距离测量是相互独立的。gydF4y2Ba

  • ANFIS只金宝app支持Sugeno FISs,这可能并不总是产生光滑的控制面。gydF4y2Ba

要更新FIS树设计,可以考虑以下可能的更改。gydF4y2Ba

  • 使用Mamdani fis,它支持ANFIS之外金宝app的其他调优方法。gydF4y2Ba

  • 利用人的推理方法设计模糊推理系统的初始规则库,然后与训练数据进行调优。gydF4y2Ba

  • 使用自定义成本函数自动生成数据,并使用基于奖励的停车模拟优化停车轨迹。有关示例,请参见gydF4y2Ba利用自定义代价函数优化模糊机器人避障系统gydF4y2Ba.gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba|gydF4y2Ba

相关的话题gydF4y2Ba