单向拓扑结构下异构车辆排的分布式模型预测控制研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

该文提出一种面向具有单向拓扑和先验未知期望设定点的异构车辆队列的分布式模型预测控制(DMPC)算法。小队中的战车(或节点)是动态解耦的,但受空间几何体的约束。仅依靠相邻节点的信息为每个节点分配一个局部开环最优控制问题,其中通过惩罚预测轨迹和假设轨迹之间的误差来设计成本函数。结合这种惩罚,提出了一种基于相等的终端约束来确保稳定性,它强制预测范围内每个节点的终端状态等于其相邻状态的平均值。通过使用局部成本函数之和作为李雅普诺夫候选者,证明了这种DMPC的渐近稳定性可以通过对成本函数的权重的显式充分条件来实现。乘用车仿真证明了所提出的DMPC的有效性。

近年来,自动驾驶汽车的队列行驶受到了相当大的关注[1]-[7]。这种关注主要是由于其具有显着有利于道路运输的潜力,包括提高交通效率,增强道路安全性和降低燃料消耗[1],[2]。小队控制的主要目标是确保组中的所有车辆以相同的速度移动,同时在任何连续的跟随者之间保持预先指定的距离[5]-[7]。

关于排控制的最早实践可以追溯到 1980 年代的 PATH 计划,其中介绍了传感器和执行器、控制架构、分散控制和字符串稳定性方面的许多知名主题 [5]。从那时起,人们讨论了关于排控制的许多其他问题,例如间距策略的选择[6],[7],通信拓扑的影响[8]-[10],以及动态异质性的影响[11][12]。近年来,在多智能体共识控制的框架下提出了一些先进的排控制定律[13]-[17]。它们中的大多数采用线性动力学和线性控制器来方便理论完整性,并且不考虑输入约束和模型非线性。一些值得注意的例外是[14]和[17],其中通信拓扑被假定在范围上受到限制。然而,由于执行器饱和和动力总成系统中涉及的一些显着非线性,例如发动机、传动系统和空气阻力 [18]、[19],输入约束和模型非线性确实存在于更准确的问题表述中。 此外,随着DSRC和VANET等车对车通信的快速部署[20],各种类型的通信拓扑正在出现,例如,前身双前身(TPF)型和多PF型[21][22]。考虑到拓扑结构的多样性,排控制的新挑战自然而然地出现,特别是当以系统和集成的方式考虑各种拓扑时。

该文基于模型预测控制(MPC)框架,同时考虑非线性动力学和拓扑多样性,提出了一种创新的编队控制方案。传统上,MPC用于单智能体系统,其中控制输入是通过数值优化有限水平最优控制问题获得的,其中非线性和约束都可以显式处理[23]。该技术已被许多工业应用所接受,例如热能控制[24],防撞[18],车辆稳定性[25]和能源管理[26]。这些MPC中的大多数都是以集中方式实现的,其中所有控制输入都是通过假设所有状态都是已知的来计算的[18],[24]-[26]。在考虑涉及多辆车的实际编队系统时,由于收集所有车辆信息的限制和计算大规模优化问题的挑战,集中实现是不合适的。在本文中,我们提出了一种针对异构车队的分布式MPC(DMPC)综合方法,该方法仅依靠其相邻车辆的信息为每辆车分配一个局部最优控制问题。

最近,已经提出了几种用于动态耦合或解耦多智能体系统的DMPC方案[27]-[30]。渐近稳定性通常是通过使用一致性约束来建立的,例如,新计算的最佳轨迹与先前计算的最佳轨迹之间的不匹配必须有界[27],[28]。最近关于DMPC的全面综述可以在[31]中找到。然而,大多数现有的DMPC算法只关注具有共同设定点的系统稳定,假设所有代理先验地知道所需的平衡信息。对于战车排,这样的公共设定点对应于领导者的状态。但是,假设所有追随者都可以与领导者通信是不切实际的,这意味着并非所有追随者都知道排中所需的设定点。本文旨在解决DMPC框架下具有先验未知期望设定点的车辆队列的控制问题。该领域现有的大多数MPC工作都依赖于自适应巡航控制(ACC)[32],[33]的问题表述,其中问题表述中仅涉及两辆车。 ACC合作案件存在一些扩展,涉及多辆车[14],[34]。然而,[14]和[34]中的这种处理也直接将两个连续的车辆带入问题表述中,它们仅适用于有限类型的通信拓扑,即PF型和前导跟随(PLF)类型。

该文提出一种针对具有单向拓扑和先验未知期望设定点的异构排的DMPC算法。本文的贡献体现在两个方面:1)所提出的DMPC算法不需要所有节点先地知道所需的设定点,与以前的许多研究相比是一个显着的改进[27]-[30]和2)我们的发现不仅明确强调了通信拓扑在稳定整个排系统方面的重要性, 但也扩展了 [14] 和 [34] 中的结果以适应任何任意单向拓扑。具体来说,一个小队被视为一组车辆,这些车辆是动态解耦的,但通过空间几何和通信拓扑相互交互。在一个排中,只有直接与领导者沟通的追随者知道所需的设定点。在所提出的DMPC下,仅依靠相邻车辆的信息为每个跟随者分配一个局部开环最优控制问题,其中预测轨迹和假设轨迹之间的误差受到惩罚。提出一种基于相邻平均值的终端约束,强制每个节点的终端状态等于其相邻节点的状态平均值。我们使用局部成本函数的总和作为李雅普诺夫候选者,并证明了在单向拓扑下,通过对成本函数权重的显式参数条件可以实现渐近稳定性。

📚2 运行结果

部分代码:

%% vehicle seven
    tic
    Vehicle_Type = [Mass(7),R(7),g,f,Eta,Ca(7),Tao(7)];                 % the vehicle parameters : Mass,R,g,f,Eta,Ca(i),Tao, 
    X0 = [Postion(i-1,7),Velocity(i-1,7),Torque(i-1,7)];                % the vehicle variable in the last time
    Pd = zeros(Np+1,1);  Vd = zeros(Np+1,1);                      % 共Np+1个点,注意下角标,i-1 代表上一时刻的状态, i代表当前需要优化求解的状态
    Xdes = [Pd,Vd];  % Udes = Td;                                       % 第一辆车的期望行为
    Xa = [Pa(:,7),Va(:,7)];                                             % 自己预期的行为,传递给下一辆车
    Xnfa = [Pa(:,6) - d, Va(:,6)];                                               % 1:为上一时刻的状态
    Xnffa = [Pa(:,5) - 2*d, Va(:,5)];
    
    u0 = ua(:,7);   % 起始搜索点    
    A = [];b = []; Aeq = []; beq = [];                                       % 没有线性约束
    lb = Torquebound(7,1)*ones(Np,1); ub = Torquebound(7,2)*ones(Np,1);      % 控制量上下界              
    Pnp = (Xnfa(end,1)+Xnffa(end,1))/2; Vnp = (Xnfa(end,2)+Xnffa(end,2))/2;   % 终端约束
    Xend(i,7) = Pnp; Vend(i,7) = Vnp; Tnp = (Ca(7)*Vnp.^2 + Mass(7)*g*f)/Eta*R(7);
    % MPC 优化求解
    [u, Cost(i,7), Exitflg(i,7), output] = fmincon(@(u) Costfunction1( Np, Tim_step, X0 ,u, Vehicle_Type,Q3,Xdes,R3,F3,Xa,G3,Xnfa,Xnffa), ...
        u0, A, b, Aeq, beq, lb, ub, @(u) Nonlinearconstraints(Np, Tim_step, X0, u, Vehicle_Type,Pnp,Vnp,Tnp),options); 
    
    % 车辆往前走一步
    U(i,7) = u(1);
    [Postion(i,7),Velocity(i,7),Torque(i,7)] = VehicleDynamic(U(i,7),Tim_step,Postion(i-1,7),Velocity(i-1,7),Torque(i-1,7),Mass(7),R(7),g,f,Eta,Ca(7),Tao(7));
    
    % 这个地方需要注意,下一阶段的assumed state, 在t+1时刻预测Np自身的状态
    Temp = zeros(Np+1,3);
    Temp(1,:) = [Postion(i,7),Velocity(i,7),Torque(i,7)];
    ua(1:Np-1,7) = u(2:Np);
    for j = 1:Np-1
        [Temp(j+1,1),Temp(j+1,2),Temp(j+1,3)] = VehicleDynamic(ua(j,7),Tim_step,Temp(j,1),Temp(j,2),Temp(j,3),Mass(7),R(7),g,f,Eta,Ca(7),Tao(7));
    end

    ua(Np,7) = (Ca(7)*Temp(Np,2).^2 + Mass(7)*g*f)/Eta*R(7);
    [Temp(Np+1,1),Temp(Np+1,2),Temp(Np+1,3)] = VehicleDynamic(ua(Np,7),Tim_step,Temp(Np,1),Temp(Np,2),Temp(Np,3),Mass(7),R(7),g,f,Eta,Ca(7),Tao(7));
    Pa_next(:,7) = Temp(:,1);
    Va_next(:,7) = Temp(:,2);

    toc

    
    %% 跟新交换数据矩阵
    Pa = Pa_next;
    Va = Va_next;
       
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值