精华内容
下载资源
问答
  • 这篇论文讲述了智能驾驶方向纵向控制算法,侧重与卡车类的纵向算法
  • 汽车自动驾驶纵向控制技术的研究.pdf
  • 为提高车辆自动驾驶系统的运动性能, 基于模糊逻辑和滑模控制理论设计了一种车辆纵向和横向运动综合控制系统。该控制系统通过对前轮转向角度、发动机节气门开度、制动液压及主动横摆力矩进行协调控制, 使车辆能够以...
  • 模型预测控制系列讲解(一):抛砖引玉(自动驾驶车辆纵向控制实例)1.说明2.模型预测控制实现2.1预测模型构建2.2性能指标要求及设计2.3根据性能指标要求重构预测模型2.4根据预测模型预测Np时域内系统输出2.5约束...

    1.说明

    首先通过一个简单的基于恒加速度(CA)车辆运动学模型MPC控制算法,引出模型预测控制,可以对模型预测控制有提个初步的感性的认知,具体模型预测控制思想,实现方式,实现步骤,定量分析,定性分析,性能指标设计以及参数整定等等后续会持续更新相关内容,可以先按照该篇模型先行仿真,感受模型预测控制。

    2.模型预测控制实现

    2.1预测模型构建

    恒加速度(CA)模型(高中物理),已经离散化后的线性模型:
    { v k + 1 = v k + a k T d k + 1 = d k + v k T + 1 2 a k T 2 \begin{gathered} \begin{cases} v_{k+1} = v_{k}+a_{k}T\\ d_{k+1}=d_{k}+v_{k}T+\frac{1}{2}a_{k}T^2\\ \end{cases} \end{gathered} {vk+1=vk+akTdk+1=dk+vkT+21akT2
    其中:
      v k \ v_k  vk k k k时刻车辆速度,
      v k + 1 \ v_{k+1}  vk+1 k + 1 k+1 k+1时刻车辆速度,
      a k \ a_k  ak k k k 时刻车辆加速度,
      d k \ d_k  dk k k k 时刻车辆位置,
      d k + 1 \ d_{k+1}  dk+1 k + 1 k+1 k+1时刻车辆位置,
      T \ T  T 为 采样时间。
    将上述模型写成矩阵形式:
    { x k + 1 = A x k + B u k y k + 1 = C x k \begin{gathered} \begin{cases} x_{k+1} = Ax_{k}+Bu_{k}\\ y_{k+1}=Cx_{k}\\ \end{cases} \end{gathered} {xk+1=Axk+Bukyk+1=Cxk
    其中:
      x k = [ d k , v k ] T \ x_k=[d_k,v_k]^T  xk=[dk,vk]T,为状态向量,
      u k = a k \ u_k=a_k  uk=ak,为控制量,
      y k = [ d k , v k ] T \ y_k=[d_k,v_k]^T  yk=[dk,vk]T,为输出向量,
      A , B , C \ A,B,C  A,B,C分别为状态矩阵,控制矩阵,输出矩阵。
    由上述模型可以求得A,B,C:

      A = [ 1 , T ; 0 , 1 ] \ A = [1,T;0,1]  A=[1,T;0,1]

      B = [ T 2 2 ; T ] \ B = [\frac{T^2}{2};T]  B=[2T2;T]

      C = [ 1 , 0 ; 0 , 1 ] \ C = [1,0;0,1]  C=[1,0;0,1]

    2.2性能指标要求及设计

    在设计性能指标的时候考虑因素:
    1.输出与期望偏差尽可能小,反映系统跟随能力
    2.尽量对控制量的突变情况进行约束,所以采用控制增量来约束
    具体性能指标形式如下:
      J ( k ) = ∑ i = 1 N p ∣ ∣ y r e a l ( k + i / k ) − y d e s ( k + i / k ) ∣ ∣ Q _ b a s e 2 + ∑ i = 0 N c − 1 ∣ ∣ Δ u ( k + i / k ) ∣ ∣ R _ b a s e 2 \ J(k) = \sum_{i =1}^{Np}||y_{real}{(k+i/k)}-y_{des}{(k+i/k)}||^2_{Q\_{base}}+\sum_{i=0}^{Nc-1}||\Delta u{(k+i/k)}||_{R\_{base}}^2  J(k)=i=1Npyreal(k+i/k)ydes(k+i/k)Q_base2+i=0Nc1Δu(k+i/k)R_base2
    性能指标的选取与实际需求有着非常紧密的联系,通常会先选择性能指标,再根据性能指标来决定预测模型的选取或者建立。

    2.3根据性能指标要求重构预测模型

    根据性能指标,将预测模型重构成含有控制增量的方式,重构方法:待定系数法,具体形式如下:
    ξ k + 1 = A t r a n ξ k + B t r a n Δ u k y k = C t r a n ξ k \xi_{k+1}=A_{tran}\xi_{k}+B_{tran}\Delta u_{k}\\y_{k}=C_{tran}\xi_{k} ξk+1=Atranξk+BtranΔukyk=Ctranξk

    Δ u k = u k − u k − 1 \Delta u_{k} = u_{k}-u_{k-1} Δuk=ukuk1
    ξ k = [ d k , v k , a k − 1 ] T \xi_k=[d_k,v_k,a_{k-1}]^T ξk=[dk,vk,ak1]T
    可以求得 A t r a n A_{tran} Atran B t r a n B_{tran} Btran C t r a n C_{tran} Ctran
    A t r a n = [ 1 , T , T 2 / 2 ; 0 , 1 , T ; 0 , 0 , 1 ] A_{tran} =[1,T,T^2/2;0,1,T;0,0,1] Atran=[1,T,T2/2;0,1,T;0,0,1]
    B t r a n = [ T 2 / 2 ; T ; 1 ] B_{tran}=[T^2/2;T;1] Btran=[T2/2;T;1]
    C t r a n = [ 1 , 0 , 0 ; 0 , 1 , 0 ] C_{tran}=[1,0,0;0,1,0] Ctran=[1,0,0;0,1,0]
    性能指标可以写的更紧凑:
    J ( k ) = ∣ ∣ Y ( t ) − Y d e s ( t ) ∣ ∣ Q 2 + ∣ ∣ Δ u ( t ) ∣ ∣ R 2 J(k) = ||Y(t)-Y_{des}(t)||_Q^2+||\Delta u(t)||_R^2 J(k)=Y(t)Ydes(t)Q2+Δu(t)R2
    其中:
    Y ( t ) = [ y T ( k + 1 / k ) , y T ( k + 2 / k ) , . . . , y T ( k + N p / k ) ] T Y(t)=[y^T(k+1/k),y^T(k+2/k), ... ,y^T(k+Np/k)]^T Y(t)=[yT(k+1/k),yT(k+2/k),...,yT(k+Np/k)]T
    Y d e s ( t ) = [ y d e s T ( k + 1 / k ) , y d e s T ( k + 2 / k ) , . . . , y d e s T ( k + N p / k ) ] T Y_{des}(t)=[y_{des}^T(k+1/k),y_{des}^T(k+2/k), ... ,y_{des}^T(k+Np/k)]^T Ydes(t)=[ydesT(k+1/k),ydesT(k+2/k),...,ydesT(k+Np/k)]T
    Δ u ( t ) = [ Δ u T ( k ) , Δ u T ( k + 1 ) , . . . , Δ u T ( k + N c − 1 ) ] T \Delta u(t)=[\Delta u^T(k),\Delta u^T(k+1), ... ,\Delta u^T(k+Nc-1)]^T Δu(t)=[ΔuT(k),ΔuT(k+1),...,ΔuT(k+Nc1)]T
    Q Q Q的对角线上的元素为 Q b a s e ( k + 1 ) , Q b a s e ( k + 2 ) , . . . Q b a s e ( k + N p ) Q_{base}(k+1),Q_{base}(k+2), ... Q_{base}(k+Np) Qbase(k+1)Qbase(k+2),...Qbase(k+Np)
    R R R的对角线上的元素为 R b a s e ( k ) , R b a s e ( k + 1 ) , . . . , R b a s e ( k + N c − 1 ) R_{base}(k),R_{base}(k+1), ... ,R_{base}(k+Nc-1) Rbase(k),Rbase(k+1),...,Rbase(k+Nc1)
    具体实现大家可以亲自推导一遍,在推导过程用分块矩阵去做,以预测时域和控制时域来分块,便于推导和理解。

    2.4根据预测模型预测Np时域内系统输出

    预测时域Np内的系统输出可以在当前状态下通过预测模型得到,并且只与当前状态 x ( k ) x(k) x(k)和未来控制时域Nc的控制量 u ( k ) , u ( k + 1 ) , . . . , u ( k + N c − 1 ) u(k),u(k+1),...,u(k+Nc-1) u(k),u(k+1),...,u(k+Nc1)有关,而未来Nc时域的控制量又可以由前一时刻的控制量 u ( k − 1 ) u(k-1) u(k1) Δ u ( k ) , Δ u ( k + 1 ) , . . . , Δ u ( k + N c − 1 ) \Delta u(k),\Delta u(k+1),...,\Delta u(k+Nc-1) Δu(k),Δu(k+1),...,Δu(k+Nc1)来计算的来,具体推导大家可以亲手试着推导一遍,更容易理解其中的变换过程,这里就不再进行推导。
    用紧凑型来表示:
    Y ( t ) = Φ ξ k + Θ Δ u ( t ) Y(t)=\Phi \xi_k+\Theta\Delta u(t) Y(t)=Φξk+ΘΔu(t)
    其中, Y ( t ) , ξ k , Δ u ( t ) Y(t),\xi_k,\Delta u(t) Y(t),ξk,Δu(t)上面已经列出,重点是 Φ , Θ \Phi,\Theta Φ,Θ的计算,可以选取Np和Nc都小一点,推导一下,规律很好找,由于公式编辑是在太过耗时,这里不再展开,大家可以在代码中看到具体形式,或者参考北理工出版的《无人驾驶车辆模型预测控制》。

    2.5约束条件设计

    约束条件,根据被控量物理属性,控制过程的舒适性等等来设计,具体如何设计会在后续详细分一章节来展开。
    首先,对控制量的约束:
    u m i n ( t ) < = u ( t ) < = u m a x ( t ) u_{min}(t)<= u(t)<=u_{max}(t) umin(t)<=u(t)<=umax(t)
    u ( t ) = [ u T ( k ) , u T ( k + 1 ) , . . . , u T ( k + N c − 1 ) ] T u(t)=[u^T(k),u^T(k+1), ... ,u^T(k+Nc-1)]^T u(t)=[uT(k),uT(k+1),...,uT(k+Nc1)]T
    再次,对控制增量的约束:
    Δ u m i n ( t ) < = Δ u ( t ) < = Δ u m a x ( t ) \Delta u_{min}(t)<= \Delta u(t)<=\Delta u_{max}(t) Δumin(t)<=Δu(t)<=Δumax(t)
    Δ u ( t ) = [ Δ u T ( k ) , Δ u T ( k + 1 ) , . . . , Δ u T ( k + N c − 1 ) ] T \Delta u(t)=[\Delta u^T(k),\Delta u^T(k+1), ... ,\Delta u^T(k+Nc-1)]^T Δu(t)=[ΔuT(k),ΔuT(k+1),...,ΔuT(k+Nc1)]T
    具体限制值代码中会给出,由于求解变量为控制增量,所以需要将约束条件转换成只含有控制增量的表达式:
    Δ U m i n ( t ) < = Δ U ( t ) < = Δ U m a x ( t ) U m i n ( t ) < = A c Δ U ( t ) + U ( k − 1 ) < = U m a x ( t ) \Delta U_{min}(t)<=\Delta U(t)<=\Delta U_{max}(t)\\U_{min}(t)<=A_{c}\Delta U(t)+U(k-1)<=U_{max}(t) ΔUmin(t)<=ΔU(t)<=ΔUmax(t)Umin(t)<=AcΔU(t)+U(k1)<=Umax(t)
    其中所有含有大写U都是Nc控制时域内的对应值,都是Nc*size(u)的列向量
    U ( k − 1 ) U(k-1) U(k1)为Nc长度的列向量与 u ( k − 1 ) u(k-1) u(k1)的克罗内克积,
    A c A_c Ac为下三角元素全为1, N c ∗ N c Nc * Nc NcNc的对角矩阵与 I N u I_{Nu} INu的克罗内克积。
    A c Δ U ( t ) + U ( k − 1 ) A_{c}\Delta U(t)+U(k-1) AcΔU(t)+U(k1)目的就是由未来Nc个时刻的控制增量和上一时刻的控制量来计算未来Nc个时刻的控制量。

    2.6整理化简性能指标为标准二次规划形式

    就是将前面的性能指标通过矩阵的性质,化简为标准的二次规划形式,就可以使用quadprog来求解,大家可以通过matlab的帮助文档来获得二次规划函数quadprog的实际使用方法,以及参数传递,文档中会有标准二次规划的说明。

    	% 性能指标转化为标准二次规划系数矩阵
    	H = 2 * (Theta' * Q * Theta + R);
    	H = (H + H')/2;
    	f = (2*(Phi * kesi - y_ref)' * Q * Theta)';
    

    这里是转换结果,推导过程大家可以体验一下,后续我会把手动推导的过程以图片的形式贴上来。

    3.仿真结果

    仿真的数据输入是根据CA(横加速度)模型,根据采样时间,以一个恒定的加速度来计算出期望速度和期望位置,给入模型预测控制,简单的仿真曲线,大概可以反应控制效果,具体可以修改其中的权值,预测时域以及控制时域来优化控制效果。
    速度跟随曲线:
    在这里插入图片描述
    位置跟随曲线:
    在这里插入图片描述
    如果输入期望值直接给入阶跃值,效果又如何?造成这样的原因是什么,在不改变期望输入的情况下,怎么解决?我会在接下来的更新过程中说明一些解决方案。这也是需要加速度规划和不需要加速度规划的问题,其实这两种情况我们实际应用中是都会遇到的,之后我会详细为大家说明。

    4.总结

    这个只是使用非常简单的预测模型,没有太多复杂处理,只用来大家体验下模型预测控制的实现,对MPC有一个初步的认知。
    接下来会展开来讲模型预测控制的相关原理,思想方式,不同的实现方式,简单的稳定性分析,定量以及定性的分析等等。会在后续介绍中,介绍已经经过RCP(快速原型)验证的基于MPC的ACC(自适应巡航)控制算法,详细介绍性能指标的选取,参数的调节等等。

    5.S_Function代码(后续会更新C/C++代码)

    下面附MPC的S_Function代码:
    该代码是在Matlab2018b中开发

    function MPC_long_control(block)
    % Level-2 MATLAB file S-Function
    % 基于恒加速度汽车纵向模型的模型预测控制
    	setup(block);
    % endfunction
    function setup(block)
    
    	% Register number of ports
    	block.NumInputPorts  = 4;
    	block.NumOutputPorts = 2;
    
    	% setup port properties to be inherited or dynamic
    	block.SetPreCompInpPortInfoToDynamic;
    	block.SetPreCompOutPortInfoToDynamic;
    
    	% Override input port properties
    	block.InputPort(1).Dimensions = 1;
    	block.InputPort(1).DatatypeID = 0;    % double
    	block.InputPort(1).Complexity = 'Real';
    	block.InputPort(1).DirectFeedthrough = false;
    	block.InputPort(1).SamplingMode = 'Sample';
    
    	block.InputPort(2).Dimensions = 1;
    	block.InputPort(2).DatatypeID = 0;    % double
    	block.InputPort(2).Complexity = 'Real';
    	block.InputPort(2).DirectFeedthrough = false;
    	block.InputPort(2).SamplingMode = 'Sample';
    
    	block.InputPort(3).Dimensions = 1;
    	block.InputPort(3).DatatypeID = 0;    % double
    	block.InputPort(3).Complexity = 'Real';
    	block.InputPort(3).DirectFeedthrough = false;
    	block.InputPort(3).SamplingMode = 'Sample';
    
    	block.InputPort(4).Dimensions = 1;
    	block.InputPort(4).DatatypeID = 0;    % double
    	block.InputPort(4).Complexity = 'Real';
    	block.InputPort(4).DirectFeedthrough = false;
    	block.InputPort(4).SamplingMode = 'Sample';
    
    	% Override output port properties
    	block.OutputPort(1).Dimensions = 1;
    	block.OutputPort(1).DatatypeID = 0;    % double
    	block.OutputPort(1).Complexity = 'Real';
    	block.OutputPort(1).SamplingMode = 'Sample';
    
    	block.OutputPort(2).Dimensions = [1,2];
    	block.OutputPort(2).DatatypeID = 0;    % double
    	block.OutputPort(2).Complexity = 'Real';
    	block.OutputPort(2).SamplingMode = 'Sample';
    
    	% Register parameters
    	block.NumDialogPrms = 2;
    	block.DialogPrmsTunable = {'Tunable','Tunable'};
    
    	block.SampleTimes = [-1,0];
    	block.SimStateCompliance = 'DefaultSimState';
    
    	block.RegBlockMethod('PostPropagationSetup', @DoPostPropSetup);
    	block.RegBlockMethod('InitializeConditions', @InitializeConditions);
    	block.RegBlockMethod('Outputs', @Outputs);
    	block.RegBlockMethod('Update', @Update);
    
    % end setup
    function DoPostPropSetup(block)
    	% 系统状态变量设置
    	% 状态变量个数设置
    	block.NumDworks = 2;
    
    	block.Dwork(1).Name            = 'd_rel';
    	block.Dwork(1).Dimensions      = 1;
    	block.Dwork(1).DatatypeID      = 0;    %double
    	block.Dwork(1).Complexity      = 'Real';
    	block.Dwork(1).UsedAsDiscState = true;
    
    	block.Dwork(2).Name            = 'v_rel';
    	block.Dwork(2).Dimensions      = 1;
    	block.Dwork(2).DatatypeID      = 0;    %double
    	block.Dwork(2).Complexity      = 'Real';
    	block.Dwork(2).UsedAsDiscState = true;
    
    % end DoPostPropSetup
    function InitializeConditions(block)
    	% 初始化设置
    	global U;    % 控制量
    	U = 0;
    	block.Dwork(1).Data = block.DialogPrm(1).Data;
    	block.Dwork(2).Data = block.DialogPrm(2).Data;
    
    % end InitializeConditions
    
    function Outputs(block)
    	% 输出函数
    	global U;
    	Ts  = 0.01;   % 采样周期
    	Np  = 50;     % 预测时域
    	Nc  = 50;     % 控制时域
    	Row = 10;     % 松弛因子
    	Nx  = 2;      % 状态量个数
    	Nu  = 1;      % 控制量个数
    	No  = 2;      % 输出量个数
    
    	% 控制期望值计算以及转换
    	y_des = [block.InputPort(1).Data, block.InputPort(2).Data]';    % 期望输出向量
    	y_ref = kron(ones(Np, 1), y_des);                               % 预测时域内各时刻期望输出
    
    	% 预测状态方程状态向量计算
    	vector_x = [block.Dwork(1).Data, block.Dwork(2).Data]';              % 原始状态方程状态向量
    	Kesi_cell = cell(2, 1);
    	Kesi_cell{1,1} = vector_x;
    	Kesi_cell{2,1} = U;
    	kesi = cell2mat(Kesi_cell);                                   % 预测状态方程状态向量
    
    	% 初始状态方程矩阵以及输出矩阵
    	A = [1,Ts;0,1];
    	B = [(Ts^2)/2,Ts]';
    	C = eye(2);
    
    	% 变换后状态方程系数矩阵
    	A_tran_cell = cell(2,2);
    	B_tran_cell = cell(2,1);
    	C_tran_cell = cell(1,2);
    	A_tran_cell{1,1} = A;
    	A_tran_cell{1,2} = B;
    	A_tran_cell{2,1} = zeros(Nu,Nx);
    	A_tran_cell{2,2} = eye(Nu);
    	B_tran_cell{1,1} = B;
    	B_tran_cell{2,1} = eye(Nu);
    	C_tran_cell{1,1} = C;
    	C_tran_cell{1,2} = zeros(No,1);
    	A_tran = cell2mat(A_tran_cell);
    	B_tran = cell2mat(B_tran_cell);
    	C_tran = cell2mat(C_tran_cell);
    
    	% 系统预测输出系数矩阵
    	Phi_cell    = cell(Np,1);
    	Theta_cell  = cell(Np,Nc);
    	for i = 1:Np
    		Phi_cell{i,1} = C_tran*(A_tran^i);
    		for j = 1:Nc
    			if j <= i
    				Theta_cell{i,j} = C_tran*A_tran^(i-j)*B_tran;
    			else
    				Theta_cell{i,j} = zeros(No,Nu);
    			end
    		end
    	end
    	Phi   = cell2mat(Phi_cell);
    	Theta = cell2mat(Theta_cell);
    
    	% 性能指标权系数矩阵
    	Q_base = [1,0;0,1];    % No*No的对角矩阵,输出误差基准加权矩阵
    	R_base = 1;            % Nu*Nu的对角矩阵,控制量加权基准矩阵,此处为控制增量加权基准矩阵
    	Q = eye(Np);
    	R = eye(Nc);
    	Q = kron(Q,Q_base);    % 预测时域内输出误差权矩阵
    	R = kron(R,R_base);    % 控制时域内控制增量权矩阵
    
    	% 性能指标转化为标准二次规划系数矩阵
    	H = 2 * (Theta' * Q * Theta + R);
    	H = (H + H')/2;
    	f = (2*(Phi * kesi - y_ref)' * Q * Theta)';
    
    	% 约束条件
    	A_c  = tril(ones(Nc*Nu));
    	Ut   = kron(ones(Nc,1),U);
    	umin = -5;                        % 控制量最大值,此处为加速度最小值
    	umax = 2;                         % 控制量最小值,此处为加速度最大值
    	delta_umin = -0.05;               % 控制增量最小值
    	delta_umax = 0.05;                % 控制增量最大值
    	U_min = kron(ones(Nc,1),umin);
    	U_max = kron(ones(Nc,1),umax);
    	delta_Umin = kron(ones(Nc,1),delta_umin);
    	delta_Umax = kron(ones(Nc,1),delta_umax);
    	lb = delta_Umin;
    	ub = delta_Umax;
    
    	% 不等式约束系数矩阵
    	A_con_cell = {A_c;-A_c};
    	b_con_cell = {U_max - Ut;-U_min + Ut};
    	A_con = cell2mat(A_con_cell);
    	b_con = cell2mat(b_con_cell);
    
    	% 二次规划求解
    	options = optimset('Algorithm','');
    	[X,fval,exitflag] = quadprog(H,f,A_con,b_con,[],[],lb,ub,[],options);
    
    	% 控制量计算
    	delta_u = X(1);
    	U = U + delta_u;
    	u_ctr = U;
    
    	block.OutputPort(1).Data = u_ctr;
    	block.OutputPort(2).Data = [u_ctr, delta_u];
    
    % end Outputs
    function Update(block)
    	% 状态更新
    	block.Dwork(1).Data = block.InputPort(3).Data;
    	block.Dwork(2).Data = block.InputPort(4).Data;
    
    % end Updata
    

    补充1:性能指标转化成标准二次规划推导过程(手动推导)

    这个推导过程看似复杂,经常在这会劝退很多人,实则掌握了它的本质,则就相对简单很多,要有一种持之以恒的信念!

    性能指标: J ( k ) = ∣ ∣ Y ( t ) − Y d e s ( t ) ∣ ∣ Q 2 + ∣ ∣ Δ u ( t ) ∣ ∣ R 2 J(k) = ||Y(t)-Y_{des}(t)||_Q^2+||\Delta u(t)||_R^2 J(k)=Y(t)Ydes(t)Q2+Δu(t)R2

    输出预测方程: Y ( t ) = Φ ξ k + Θ Δ u ( t ) Y(t)=\Phi \xi_k+\Theta\Delta u(t) Y(t)=Φξk+ΘΔu(t)

    标准二次规划形式:

    min ⁡ x   1 2 x T H x + f T x s t . { A x ⩽ b A e q ⩽ b e q l b ⩽ x ⩽ u b \begin{gathered} \min_{x}\ \frac{1}{2}{x^T}Hx+f^Tx \\ st.\begin{cases} Ax\leqslant{b}\\ Aeq\leqslant{beq}\\ lb\leqslant{x}\leqslant{ub} \end{cases} \end{gathered} xmin 21xTHx+fTxst.AxbAeqbeqlbxub
    目标是将性能指标化简为标准二次规划形式。
    推导过程中用到的矩阵运算性质:
    { ( A B ) T = B T A T ( A ± B ) T = A T ± B T A B C = A ( B C ) = ( A B ) C A ( B + C ) = A B + A C ( B + C ) A = B A + C A \begin{gathered} \begin{cases} (AB)^T=B^TA^T\\ (A\pm{B})^T=A^T\pm{B}^T\\ ABC = A(BC)=(AB)C\\ A(B+C)=AB+AC\\ (B+C)A=BA+CA\\ \end{cases} \end{gathered} (AB)T=BTAT(A±B)T=AT±BTABC=A(BC)=(AB)CA(B+C)=AB+AC(B+C)A=BA+CA
    当A矩阵为对称矩阵或者A为一个实数,则有:
      A T = A \ A^T =A  AT=A
    这个性质在推导过程中及其重要,尤其是它的不同表现形式,如   M = A B \ M = AB  M=AB,如果我们知道M为对称矩阵或者M为实数,则会有:
    M = M T = ( A B ) T = B T A T \begin{gathered} M =M^T=(AB)^T=B^TA^T \end{gathered} M=MT=(AB)T=BTAT
    下面是手动推导过程:
    推导过程手动推导过程。

    补充2:性能指标转化成标准二次规划推导过程(公式编辑)

    这里采用公式编辑来跟清晰的展现转化过程。
    \begin{split}J(k)&=||Y(t)-Y_{des}(t)||2_{Q}+||\Delta{u}(t)||2_{R}\&=(Y(t)-Y_{des}(t)){T}Q(Y(t)-Y_{des}(t))+\Delta{u}T(t)R\Delta{u}(t)\&=YT(t)QY(t)+Y_{des}T(t)QY_{des}(t)-2Y_{des}T(t)QY(t)+\Delta{u}T(t)R\Delta{u}(t)\&=(\Phi\xi_k+\Theta\Delta{u}(t))TQ(\Phi\xi_k+\Theta\Delta{u}(t))+Y_{des}T(t)QY_{des}(t)-2YT_{des}(t)Q(\Phi\xi_k+\Theta\Delta{u}(t))+\Delta{u}T(t)R\Delta{u}(t)\&=(\Phi\xi_k)TQ(\Phi\xi_k)+(\Theta\Delta{u}(t))TQ(\Theta\Delta{u}(t))+2(\Phi\xi_k)TQ(\Theta\Delta{u}(t))-2Y_{des}(t)TQ(\Phi\xi_k)-2Y_{des}(t)TQ(\Theta\Delta{u}(t))+\Delta{u}T(t)R\Delta{u}(t)\&=(\Phi\xi_k)TQ(\Phi\xi_k)+\Delta{u}T(t)(\ThetaTQ\Theta)\Delta{u}(t)+2((\Phi\xi_k)T-YT_{des}(t))Q(\Theta\Delta{u}(t))-2YT_{des}(t)Q(\Phi\xi_k)+\Delta{u}^T(t)R\Delta{u}(t)\&=\Delta{u}T(t)(\ThetaTQ\Theta+R)\Delta{u}(t)+2(\Phi\xi_k-YT_{des}(t))Q\Theta\Delta{u}(t)+(\Phi\xi_k)TQ(\Phi\xi_k)-2Y^T_{des}(t)Q(\Phi\xi_k)\end{split}

    其中 ( Φ ξ k ) T Q ( Φ ξ k ) (\Phi\xi_k)^TQ(\Phi\xi_k) (Φξk)TQ(Φξk) 2 Y d e s T ( t ) Q ( Φ ξ k ) 2Y^T_{des}(t)Q(\Phi\xi_k) 2YdesT(t)Q(Φξk),不含有优化变量 Δ u ( t ) \Delta{u}(t) Δu(t),这两项可以看作是常数项,对优化不产生影响,比如要求 f ( x ) f(x) f(x)的最小值:
    min ⁡ x   f ( x ) = f 1 ( x ) + a \begin{gathered} \min_{x}\ f(x)=f_1(x)+a \end{gathered} xmin f(x)=f1(x)+a
    式中 a a a为常数项,那么 f ( x ) f(x) f(x)取的最小值的时候就是 f 1 ( x ) f_1(x) f1(x)取得最小值的时候。
    所以最后的性能指标就可以简化为:
    J ( k ) = Δ u T ( t ) ( Θ T Q Θ + R ) Δ u ( t ) + 2 ( Φ ξ k − Y d e s ( t ) ) T Q Θ Δ u ( t ) J(k)=\Delta{u}^T(t)(\Theta^TQ\Theta+R)\Delta{u}(t)+2(\Phi\xi_k-Y_{des}(t))^TQ\Theta\Delta{u}(t) J(k)=ΔuT(t)(ΘTQΘ+R)Δu(t)+2(ΦξkYdes(t))TQΘΔu(t)
    对照上边的标准二次规划,可以得到其系数:
    H = 2 ( Θ T Q Θ + R ) f = ( 2 ( Φ ξ k − Y d e s ( t ) ) T Q Θ ) T H=2(\Theta^TQ\Theta+R)\\ f = (2(\Phi\xi_k-Y_{des}(t))^TQ\Theta)^T H=2(ΘTQΘ+R)f=(2(ΦξkYdes(t))TQΘ)T
    从而实现了从性能指标到标准二次规划的化简。

    展开全文
  • 自动驾驶技术(1)--控制工程篇概述

    千次阅读 多人点赞 2019-07-26 19:13:23
    自动驾驶的「大脑」——控制工程篇 《中国人工智能系列白皮书-智能驾驶 2017》 智能汽车控制架构设计 智能驾驶汽车通过搭载先进的车载传感器、控制器和数据处理器、执行机构等装置,借助车联网和 V2X 等现代移动...

     

    自动驾驶的「大脑」——控制工程篇

    《中国人工智能系列白皮书-智能驾驶 2017》

    智能汽车控制架构设计

        智能驾驶汽车通过搭载先进的车载传感器、控制器和数据处理器、执行机构等装置,借助车联网和 V2X 等现代移动通信与网络技术实现交通参与物彼此间信息的互换与共享,从而具备在复杂行驶环境下的传感感知决策规划、控制执行等功能,以实现安全高效舒适节能的自动或智能行驶。智能驾驶汽车代表了汽车技术和产业化的重要发展方向,也是未来汽车技术创新的主流趋势。

        智能驾驶系统基于环境感知技术对车辆周围环境进行感知,并根据感知所获得的信息,通过车载中心电脑自主地控制车辆的转向和速度,使车辆能够安全、可靠地行驶,并到达预定目的地。无人驾驶是汽车智能化追求的终极目标,是信息通信等先进技术在汽车上的深度应用,体现了更便捷、更简单的人车交互方式,是对人的更大程度的「解放」。它将在减少交通事故、提高运输效率、完成特殊作业、国防军事应用等领域发挥至关重要的作用。

     

    智能驾驶的关键技术是环境感知技术和车辆控制技术,其中环境感知技术是无人驾驶汽车行驶的基础,车辆控制技术是无人驾驶汽车行驶的核心,包括轨迹规划和控制执行两个环节,这两项技术相辅相成共同构成智能驾驶汽车的关键技术,其系统组成如图 4-1 所示。

    智能驾驶的整个流程归结起来有三个部分:

    • 首先,是通过雷达、像机、车载网联系统等对外界的环境进行感知识别

    • 然后,在传感感知融合信息基础上,通过智能算法学习外界场景信息,规划车辆运行轨迹,实现车辆拟人化控制融入交通流中

    • 其次,跟踪决策规划的轨迹目标,控制车辆的油门、刹车和转向等驾驶动作,调节车辆行驶速度、位置和方向等状态,以保证汽车的安全性、操纵性和稳定性。

        如果能够默契地进行,那么整个智能驾驶流程就算完成了。因此研究自动驾驶的控制技术变得具有十分重要的意义。

    因此,智能驾驶的系统将驾驶认知形式化,利用驾驶认知的图表达语言,设计通用的智能驾驶软件架构。在这一架构中,智能决策模块并不直接与传感器信息发生耦合,而是基于多传感器的感知信息、驾驶地图和车联网通信等先验信息综合形成的驾驶态势完成自主决策。智能驾驶试验平台软件的架构如图 4-2 所示,平台软件运行流程:

    • 多传感器信息处理模块,由驾驶认知的图表达语言统一输出构成驾驶态势实时信息;

    • 驾驶地图的信息,则根据车辆实时位置及朝向,映射到驾驶态势中,与驾驶态势实时信息融合,形成全面反映当前驾驶态势的公共数据池;

    • 车联网通信信息,利于 V2X 系统使得车与车、车与基站之间能够通信互联,获得周边交通流实时路况、路口标识、交通灯标示信息以及来自外部云服务器的超视距路况信息;

    • 决策控制模块,以这行驶环境信息数据池为基础,综合考虑交通规则、驾驶经验、全局路径等先验知识,完成决策

        此外,融合了实时信息与先验知识的行驶环境信息数据池,也能够帮助传感器信息处理模块确定感兴趣区域、帮助定位模块提高定位准确性、帮助驾驶地图模块及时更新先验信息,提升智能驾驶的性能。

        智能汽车的软件架构将决策控制与传感器的感知信息解耦,增加或减少一路或几路传感器、改变传感器型号或安装位置,不再对决策控制直接造成影响。整个软件架构只需做很少的改动,甚至完全不需要调整,就可以在不同试验平台上方便的进行移植。

    []自动驾驶控制核心技术组成

        智能驾驶汽车的车辆控制技术旨在环境感知技术的基础之上,根据决策规划出目标轨迹,通过纵向和横向控制系统的配合使汽车能够按照跟踪目标轨迹准确稳定行驶,同时使汽车在行驶过程中能够实现车速调节车距保持换道超车等基本操作。

        自动驾驶控制的核心技术是车辆的纵向控制和横向控制技术:

    • 纵向控制,即车辆的驱动与制动控制;

    • 横向控制,即方向盘角度的调整以及轮胎力的控制

        实现了纵向和横向自动控制,就可以按给定目标和约束自动控制车运行。所以,从车本身来说,自动驾驶就是综合纵向和横向控制。

        但要真正实现点到点的自动驾驶运行,车辆控制系统必须获取道路和周边交通情况的详细动态信息和具有高度智能的控制性能。完善的交通信息系统和高性能、高可靠性的车上传感器及智能控制系统是实现自动驾驶的重要前提。由于点到点自动驾驶的难度,人们提出首先实现自动驾驶路段的概念,即在路况简明的高速公路段开辟可自动驾驶路段,进入这种路段可以启动白动驾驶,出这个路段时再转人手操纵。由于道路条件和车上控制系统性能的限制,目前考虑的自动驾驶结构几乎都是手动自动可转换的。

        自动驾驶控制技术需要在智能驾驶汽车上配置各种对应的系统才能实现其复杂的功能,目前包络车道保持系统 LKA、自适应巡航控制系统 ACC、自动泊车系统、紧急制动和卫星导航系统等:

    • 车道保持系统 LKA:使汽车遵循道路标志和声音警告并在车辆开始偏移车道时调整方向,保证汽车沿着目标车道线行驶。

    • 自适应巡航控制系统 ACC:使汽车和前而的车辆始终保持一个安全的距离,确保无人驾驶汽车的安全性。

    • 自动泊车系统 AP:使无人驾驶汽车能够顺利地实现在停车位的倒入和离开。

    • 紧急制动系统 AEB:使汽车在遇到紧急情时能够充分有效制动,同时使无人驾驶汽车处于人类的监视和控制范围之内。

    车辆纵向控制

     

        车辆纵向控制是在行车速度方向上的控制,即车速以及本车与前后车或障碍物距离的自动控制。巡航控制和紧急制动控制都是典型的自动驾驶纵向控制案例。这类控制问题可归结为对电机驱动、发动机、传动和制动系统的控制。各种电机-发动机-传动模型、汽车运行模型和刹车过程模型与不同的控制器算法结合,构成了各种各样的纵向控制模式,典型结构如图 4-3 所示。

        此外,针对轮胎作用力的滑移率控制是纵向稳定控制中的关键部分。滑移率控制系统通过控制车轮滑移率调节车辆的纵向动力学特性来防止车辆发生过度驱动滑移或者制动抱死,从而提高车辆的稳定性和操纵性能。制动防抱死系统(Aantilock Brake System)简称 ABS,在汽车制动时,自动控制制动器制动力的大小,使车轮不被抱死,处于边滚边滑(滑移率在 20% 左右)的状态,以保证地面能够给车轮提供最大的制动作用力值。一些智能滑移率控制策略利用充足的环境感知信息设计了随道路环境变化的车轮最有滑移率调节器,从而提升轮胎力作用效果。

        智能控制策略,如模糊控制、神经网络控制、滚动时域优化控制等,在纵向控制中也得到广泛研究和应用,并取得了较好的效果,被认为是最有效的方法。而传统控制的方法,如 PID 控制和前馈开环控制,一般是建立发动机和汽车运动过程的近似线形模型,在此基础上设计控制器,这种方法实现的控制,由于对模型依赖性大及模型误差较大,所以精度差、适应性差。从目前的论文和研究的项目看,寻求简单而准确的电机-发动机-传动、刹车过程和汽车运动模型,以及对随机扰动有鲁棒性和对汽车本身性能变化有适应性的控制器仍是研究的主要内容。

        目前应用的系统如巡航控制、防碰撞控制,都是自主系统,即由车载传感器获取控制所需信息,而往往缺乏对 V2X 车联网信息的利用。在智能交通环境下,单车可以通过 V2X 通讯信息系统获得更多周边交通流信息以用于控制。在纵向控制方面,可利用本车及周边车辆位置、当前及前方道路情况、前车操纵状态等信息实现预测控制,达到提高速度减小车间距的同时保证安全,即达到安全、高效和节能的目的。

    车辆横向控制

    车辆横向控制指垂直于运动方向上的控制,对于汽车也就是转向控制。目标是控制汽车自动保持期望的行车路线,并在不同的车速、载荷、风阻、路况下有很好的乘坐舒适性和稳定性。

    车辆横向控制主要有两种基本设计方法:

    • 一种是基于驾驶员模拟的方法;

    • 另一种是给予汽车横向运动力学模型的控制方法。

    基于驾驶员模拟的方法:

    • 一种策略是使用较简单的运动力学模型和驾驶员操纵规则设计控制器;

    • 另一策略是用驾驶员操纵过程的数据训练控制器获取控制算法。

        基于运动力学模型的方法要建立较精确的汽车横向运动模型,典型模型是所谓单轨模型,或称为自行车模型,也就是认为汽车左右两侧特性相同。

     

        横向控制系统基本结构如图 4-4。控制目标一般是车中心与路中心线间的偏移量,同时受舒适性等指标约束。

        针对低附着路面的极限工况中车辆横摆稳定控制是车辆横向控制中的关键部分。传统操纵稳定性控制思路,如电子稳定性控制系统(ESP)[46][47] 和前轮主动转向系统(AFS)[48][49] 等,控制分布的轮胎作用力和前轮转向,通过利用轮胎附着力和降低轮胎利用率来提高车辆稳定性。大多数文献沿袭冗余驱动的控制分配框架,通过改变内外侧轮胎驱/制动力差异的方法,增加单侧驱/制动转矩,并相应减小另一侧驱/制动转矩的方式为整车产生一个附加的横摆转矩来改善车辆转向动态特性,以保证车辆的横摆稳定性行驶安全性

     

        电子控制技术电气化的发展给汽车底盘技术的突破带来了革命性的契机,也使得汽车的整体集成控制成为可能。同时在智能网联的交通环境下,单车可以通过自身环境传感、定位导航和 V2X 通讯信息系统获得更多周边交通流信息以用于横向控制,以利于提前感知道路危险(图 4-5),提高智能驾驶的安全性。

    []自动驾驶控制方法

    • 传统控制方法

        传统的汽车控制方法主要有:PID 控制模糊控制最优控制滑模控制(预测模型控制MPC)等,这些算法应用都较为广泛。

    PID 控制

        PID 控制器(比例-积分-微分控制器),由比例单元 P、积分单元 I 和微分单元 D 组成。通过 Kp、Ki 和 Kd 三个参数的设定。PID 控制器主要适用于基本上线性、且动态特性不随时间变化的系统。PID 是以它的三种纠正算法而命名的。这三种算法都是用加法调整被控制的数值,其输入为误差值(设定值减去测量值后的结果)或是由误差值衍生的信号。

    模糊控制

        模糊逻辑控制策略(Fuzzy Logic Control Strategy)简称模糊控制(Fuzzy Control),其本质是一种计算机数字控制技术,集成了模糊理论、模糊集合论、模糊语言变量和模糊逻辑推理等。与经典控制理论相比,模糊逻辑控制策略最大的特点是不需要准确的数学公式来建立被控对象的精确数学模型,因此可极大简化系统设计和数学建模的复杂性,提高系统建模和仿真控制的效率。

        模糊控制系统在建模过程中,利用人类积累的相关知识和生活经验进行推理,模拟人类大脑处理复杂事件的过程,进而产生相应的控制思想,控制思想经过编译成为控制策略。模糊逻辑控制策略由工程人员的控制思路和实践经验积累编译而成,具有较佳的鲁棒性、适应性以及容错性。其主要由定义模糊变量模糊变量模糊化定义规则库推理决策逆模糊化五个环节组成。

    最优控制

        最优控制理论是变分法的推广,着重于研究使控制系统的指标达到最优化的条件和方法。为了解决最优控制问题,必须建立描述受控运动过程的运动方程给出控制变量的允许取值范围,指定运动过程的初始状态目标状态,并且规定一个评价运动过程品质优劣的性能指标。

        通常,性能指标的好坏取决于所选择的控制函数和相应的运动状态。系统的运动状态受到运动方程的约束,而控制函数只能在允许的范围内选取。同时,最优控制的实现离不开最优化技术。最优化技术是研究和解决如何将最优化问题表示为数学模型以及如何根据数学模型尽快求出其最优解这两大问题。

    滑模控制

        在系统控制过程中,控制器根据系统当时状态,以跃变方式有目的地不断变换,迫使系统按预定的“滑动模态”的状态轨迹运动。变结构是通过切换函数实现的,特别要指出的是,通常要求切换面上存在滑动模态区,故变结构控制又常被称为滑动模态控制。

    []智能控制方法

        相对于传统的控制方法,智能控制方法主要体现在对控制对象模型的运用和综合信息学习运用上,主要有基于模型的控制神经网络控制深度学习方法等,目前这些算法已逐步在汽车控制中广泛应用。

    基于模型的控制

    基于模型的控制 , 一般称为模型预测控制(Model Predictive Control,MPC),又可称为滚动时域控制(Moving Horizon Control,MHC)和后退时域控制(Receding horizon control,RHC),它是一类以模型预测为基础的计算机优化控制方法,在近些年来被广泛研究和应用的一种控制策略。

        基本原理可概括为:在每个采样时刻,根据当前获得的当前测量信息,在线求解一个有限时域的开环优化问题 1,并将得到的控制序列的第一个元素作用于被控对象,在一个采样时刻,重复上述过程,再用新的测量值刷新优化问题并重新求解。在线求解开环优化问题获得开环优化序列是模型预测控制与传统控制方法的主要区别。预测控制算法主要由预测模型、反馈校正、滚动优化、参考轨迹四个部分组成,最好将优化解的第一个元素(或第一部分)作用于系统。

    神经网络控制

        神经控制是研究和利用人脑的某些结构机理以及人的知识和经验对系统的控制。利用神经网络,可以把控制问题看成模式识别问题,被识别的模是映射成「行为」信号的「变化」信号。神经控制最显著的特点是具有学习能力。它是通过不断修正神经元之间的连接权值,并离散存储在连接网络中来实现的。它对非线性系统和难以建模的系统的控制具有良好效果。

        一般情况下,神经网络用于控制系统有两种方法:一种是用其建模,主要利用神经网络能任意近似任何连续函数和其学习算法的优势,存在前馈神经网络和递归神经网络两种类型;另一种是直接作为控制器使用。

    深度学习方法

        深度学习源于神经网络的研究,可理解为深层的神经网络。通过它可以获得深层次的特征表示,免除人工选取特征的繁复冗杂和高维数据的维度灾难问题。 深度学习在特征提取与模型拟合方面显示了其潜力和优势。对于存在高维数据的控制系统,引入深度学习具有一定的意义,近年来, 已有一些研究关注深度学习在控制领域的应用。

        目前较为公认的深度学习的基本模型包括基于受限玻尔兹曼机(Restricted Boltzmann machine,RBM)深度置信网络(Deep belief network,DBN)基于自动编码器(Autoencoder,AE)的堆叠自动编码器(Stacked autoencoders, SAE)、卷积神经网络(Convolutional neural networks,CNN)[6]、递归神经网络(Recurrent neural networks,RNN)。

        无人驾驶系统需要尽量减少人的参与或者没有人的参与,深度学习自动学习状态特征的能力使得深度学习在无人驾驶系统的研究中具有先天的优势。如何充分利用和发挥深度学习在无人驾驶系统中的优势并发展深度学习在内的无人驾驶系统控制是目前的研究方向。

     

    展开全文
  • 电传飞机纵向自动驾驶控制律设计.pdf
  • 使用simulink搭建的车辆控制的一个模型,主要用于自动驾驶控制部分的仿真,能够跟随轨迹按设定的车速行驶。
  • 自动驾驶(二)---------PID控制调节

    万次阅读 2019-07-18 09:22:14
    PID其实就是指比例,积分,微分控制。其实很简单哦 err(t) 比例,指当前状态和目标状态之间的偏差,第二项 偏差的积分,第三项 偏差的变化率 水缸有8L水,目标控制到10L,同时每秒钟放出不定量的水,如何...

    男神:https://me.csdn.net/AdamShan

    PID其实就是指比例,积分,微分控制。其实很简单哦

                                      PID控制算法公式

        err(t)  比例,指当前状态和目标状态之间的偏差,第二项 偏差的积分,第三项 偏差的变化率

     

        水缸有8L水,目标控制到10L,同时每秒钟放出不定量的水,如何保证一直10L水。

    1. 比例控制算法

       现在有8L水,目标10L,有2L的偏差。加水: U(t) = kp * (10-8) 这里的kp是系数

    2.积分控制算法

       如果测量水位有问题,一直只能放到9.5L,有稳态误差,加入积分项,消除稳态误差

                       u=kp*error+ ki∗∫∗∫error 

    3. 微分控制算法

       如果水位在9.9 ,还往里加水,容易加多了,加到10.1,容易引起震荡,加入变化率,慢慢加,这一项一般是负相关

                                   这里写图片描述

       PID C++代码:https://blog.csdn.net/qq_28773183/article/details/79524766

     

    展开全文
  • 自动驾驶中,车辆控制是基础,以什么指标来测评就显的很关键,以下是Apollo 车辆控制评测分析指标,可以在此基础上做裁剪,来满足自己自动驾驶车辆控制的需求。 序号 参数 名称 说明 平均控制性能相关参数...

    自动驾驶中,车辆控制是基础,以什么指标来测评就显的很关键,以下是Apollo 车辆控制评测分析指标,可以在此基础上做裁剪,来满足自己自动驾驶车辆控制的需求。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    序号参数名称说明
    平均控制性能相关参数
    控制器平均效果(即统计平均误差)统计参数
    重点反映控制误差在全程中的(统计意义上的)平均效果
    1station_err_std
    纵向位置误差率
    描述规划控制过程中,纵向位置误差均方根
    2station_err_std_harsh纵向位置误差率
    (大加速度)
    描述轨迹规划纵向加速度大于1m/s2时,纵向位置误差率
    3speed_err_std纵向速度误差率描述规划控制过程中,纵向速度误差平方根
    4speed_err_std_harsh纵向速度误差率
    (大加速度)
    描述轨迹规划纵向加速度大于1m/s2时,速度误差均方根
    5lateral_err_std横向位置误差率转向过程中,车辆横向位置误差的均方根
    6lateral_err_std_harsh横向位置误差率
    (大轨迹曲率)
    描述转向过程中,规划轨迹曲率大于0.05 (1/m),横向误差的均方根
    7lateral_err_rate_std横向线速度误差率
    (大轨迹曲率)
    描述转向过程中,横向线速度误差的均方根
    8lateral_err_rate_std_harsh横向线速度误差率描述转向过程中,规划轨迹曲率大于0.05 (1/m),横向线速度误差的均方根
    9heading_err_std航向误差率航向误差均方根
    10heading_err_std_harsh航向误差率
    (大轨迹曲率)
    规划轨迹曲率大于0.05 (1/m),航向误差均方根
    11heading_err_rate_std航向角速度误差率航向角速度误差均方根
    12heading_err_rate_std_harsh航向角速度误差率
    (大轨迹曲率)
    规划轨迹曲率大于0.05 (1/m),航向误差均方根
    峰值控制性能相关参数控制器峰值效果
    (即最大误差)
    统计参数
    重点反映控制误差在全程中的峰值
    (与预设阈值比较)
    13station_err_peak最大纵向位置误差率最大纵向位置误差占阈值1m的比例
    14speed_err_peak最大速度误差率最大纵向速度误差占阈值0.5m/s的比例
    15lateral_err_peak最大横向位置误差率最大横向位置误差占阈值0.5m的比例
    16lateral_err_rate_peak最大横向线速度误差率最大横向线速度误差占阈值0.5m/s的比例
    17heading_err_peak最大航向角误差率最大航向角误差占阈值0.523rad(即30°)的比例
    18heading_err_rate_peak最大航向角速度误差率最大航向角速度误差占阈值0.523rad/s(即30°/s)的比例
    19ending_station_err_trajectory_0终点纵向位置误差当规划线路达到终点时,最终纵向位置误差占阈值1m的比例(注意,对于停车入库/道边停车等开放空间场景会基于动作分解后的各段trajectory_0, trajectory_1, trajectory_2, …, 分别生成参数)
    20ending_lateral_err_trajectory_0终点横向位置误差当规划线路达到终点时,最终横向位置误差占阈值0.5m的比例(开放空间场景下结果如上解释)
    21ending_heading_err_trajectory_0终点航向角误差当规划线路达到终点时,最终航向角误差占阈值**0.523rad/s(即30°/s)的比例(开放空间场景下结果如上解释)
    体感评估相关参数体感较差的加速度占比重点反映与体感紧密相关的指标超标(与预设合适体感区间比较)次数占比
    22acc_bad_sensation终点航向角误差纵向加速度大于4m/s2的次数在全程统计数据中的占比
    23jerk_bad_sensation终点航向角误差纵向加加速度大于2m/s3的次数在全程统计数据中的占比
    24lateral_acc_bad_sensation体感较差的横向加速度占比横向加速度大于4m/s2的次数在全程统计数据中的占比
    25heading_acc_bad_sensation体感较差的航向角角加速度占比航向角的角加速度大于π rad/s2的次数在全程统计数据中的占比
    26heading_jerk_bad_sensation体感较差的航向角占比航向角的角加加速度大于π/2 rad/s3的次数在全程统计数据中的占比
    控制使用度相关参数各项控制操作使用量统计参数重点反映控制模块发出命令、使用时间等指标的使用度
    27throttle_control_usage油门控制使用率油门控制指令均方根
    28throttle_control_usage_harsh油门控制使用率
    (大加速度)
    加速度大于1m/s2的油门控制指令均方根
    29brake_control_usage刹车控制使用率刹车控制指令均方根
    30brake_control_usage_harsh刹车控制使用率
    (大加速度)
    加速度大于1m/s2的刹车控制指令均方根
    31steering_control_usage转向控制使用率转角控制指令均方根
    32steering_control_usage_harsh转向控制使用率
    (大加速度)
    加速度大于1m/s2的转角控制指令均方根
    33total_time_usage控制模块计算时间平均比例控制模块实际消耗计算时间占每个控制时间周期的比例(平均值)
    34total_time_peak控制模块计算时间峰值比例控制模块实际消耗计算时间占每个控制时间周期的比例(最大值)
    35total_time_exceeded_count控制模块计算时间超限次数占比控制模块实际消耗计算时间超过控制时间周期的次数在在全程统计数据中的占比
    车辆检测校准参数利用数据测算校准车辆特征的相关参重点反映对于车辆底盘、定位模块特征值的测算或校准
    36throttle_deadzone_mean油门无效区间油门踏板平均响应范围(油门命令高于此区间,油门机械系统才开始响应)
    37brake_deadzone_mean刹车无效区间刹车踏板平均响应范围(刹车命令高于此区间,刹车机械系统才开始响应)
    38pose_heading_offset_std航行角校准误差率利用位置变化趋势计算航向角,并与定位模块提供的航向角做差,所得角误差(除以π所得比例)的均方根
    39pose_heading_offset_peak最大航行角校准误差率利用位置变化趋势计算航向角,并与定位模块提供的航向角做差,所得角误差(除以π所得比例)的最大值
    控制事件统计参数特殊控制事件的相关参数重点反映全程出现的特殊控制事件如重新规划、控制错误等的统计,以及综合性能评估
    40replan_trajectory_count重新规划次数占比因误差过大造车的路线重新规划的次数,在全程统计数据中的占比
    41control_error_code_count控制错误次数占比出现控制错误(error code)的次数, 在全程统计数据中的占比
    42weighted_score综合性能评分(仅供参考)综合抽取控制效果、体感用度、特殊控制时间等重要参数,并加权后的权值得分

    其他,可参考Apollo的 “control_profiling_online_cn.md”这个文档。

    展开全文
  • 基于模型预测控制自动驾驶汽车纵向跟踪控制
  • 考虑时滞的协作式自动驾驶车队的纵向控制方法.pdf
  • 控制实际上是无人驾驶汽车实现自动移动的方式。在控制中,通过转向、加速和制动来运行目标轨迹。PID控制是一种简单而强大的控制算法,线性二次调节器和模型预测控制是另外两种类型的控制器,它们更复杂,但也更强大...
  • 基于模糊自整定PID的履带车辆自动驾驶系统纵向车速控制.pdf
  • 一种面向自动驾驶汽车的非线性纵向级联控制策略.pdf
  • 纵向静不稳定火箭弹过载控制自动驾驶仪设计.pdf
  • 关于自动驾驶车辆控制

    千次阅读 2020-08-16 17:58:21
    目录 1. 本文目的 ...本文主要目的在于解析自动驾驶控制,以及几种典型的应用控制方法,部分方法小编并没有经过实战,若有笔误,请多指出。 2. 自动驾驶控制原理 2.1 控制自动驾驶中的位置
  • 自动驾驶技术研发对于“安全第一”的追求是毋庸置疑的,但是这中间可能就忽视了舒适性。 因此,今天给大家分享的是,自动驾驶研发如何在兼顾安全性的同时,保证乘客体验的舒适。往细一点说,就是如何通过优化算法在...
  • 自动驾驶规划&控制常用方法

    千次阅读 2019-08-28 16:55:28
    PID,比例积分微分,本科学控制的同学肯定比较熟悉,自动控制原理等课程有讲解 模糊控制,感觉比较玄学,我没见过应用场景. 最优控制,有能量最优,时间最优,等方案 滑模控制,我也没有见过 模型预测控制,MPC...
  • 纵向控制是控制车辆的速度,本课程里面是介绍了PID,这个太常用了,就不说了。横向控制是控制车辆的转向角,我自己对课程里介绍的方法不太熟悉,所以主要关注横向控制部分。 运动学模型 首先是车辆的运动学模型,...
  • 控制】PID和LQR

    2021-06-11 16:06:41
    基于PID和LQR的自动驾驶横纵向控制 1.三个坐标系 2.车辆运动学方程(适用于低速、大小转角均可) 3.车辆动力学方程(高/低速、小转角、 a y ​) 一、基于LQR的横向控制 1.车辆动力学横向误差状态方程 2.连续方程的...
  • 自动驾驶-PID控制

    千次阅读 2019-06-26 03:09:47
    自动驾驶控制车辆是指使用方向盘,刹车,油门将车开到目的地。控制车辆的算法一般称为控制器,PID控制器是最常见,最基础的控制器之一,PID控制器是Proportion Integration Differentiation 的缩写,由英文名...
  • matlab学习自动驾驶(1)横向控制例程-Lareral Control Tutorial Lareral Control Tutorialmatlab学习自动驾驶(1)横向控制例程-Lareral Control Tutorial前言一、概述二、Lateral controller3.场景创建4.运行模型...
  • 车辆纵向控制 车辆横向控制 自动驾驶控制方法 智能汽车控制架构设计 智能驾驶汽车通过搭载先进的车载传感器、控制器和数据处理器、执行机构等装置,借助车联网和 V2X 等现代移动通信与网络技术实现交通参与物...
  • 车辆控制:自动驾驶需要用电信号控制车辆的转向、制动、油门 系统,其中涉及到车辆地盘的线控改装,目前在具备自适应巡航、紧 急制动、白动泊车功能的车上可以直接借用原车的系统,通过CAN总 线控制而不需要过度改装 ...
  • 无人驾驶控制

    千次阅读 2018-10-19 11:37:48
    智能驾驶汽车的车辆控制技术旨在环境...自动驾驶控制的核心技术是车辆的纵向控制和横向控制技术。纵向控制,即车辆的驱动与制动控制;横向控制,即方向盘角度的调整以及轮胎力的控制。实现了纵向和横向自动控制,就...
  • 尽管轨迹跟踪在自动驾驶中起着最重要的作用,但是在某些驾驶场景下处理轨迹跟踪控制与ESP之间的耦合仍然具有挑战性。 开发了具有两个自由度的车辆模型,包括车辆横向运动和偏航运动。 基于所提出的模型,车辆轨迹被...
  • 在这里直接附上知乎链接:走进自动驾驶横向控制,你需要这篇超长综述 - 美团无人配送的文章 - 知乎 https://zhuanlan.zhihu.com/p/46377932
  • 对于计算机系的同学来说,关于自动驾驶这块最难以理解的部分就是自动控制算法这块。虽然在大学的时候,自己也选修过过程控制和运动控制,甚至也用matlab仿真过传递函数,用单片机实现过由传递函数转换过来的差分...
  • 要更深入地了解纵向控制,请阅读以下教科书中的第 5 章(第 123-150 页): R. Rajamani,“纵向控制简介”,载于:车辆动力学和控制,机械工程系列,https ????/link.springer.com/chapter/10.1007%2F0-387..
  • 根据飞机自动驾驶仪的结构和工作原理,并结合飞机运动方程,得到自动飞行控制律后对其进行仿真研究。仿真结果表明,用经典控制理论设计的飞机纵向和横侧 向控制律都能较为真实地仿真出 A320 自动驾驶的运动效果。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,916
精华内容 766
关键字:

自动驾驶纵向控制