基于PID型迭代学习控制的列车自动驾驶速度控制研究

1、 迭代学习控制

(1)迭代学习控制的基本原理

   迭代学习控制(Iterative Learning Control,ILC)的思想最初由日本学者Uchiyama于1978年提出,于1984年由Arimoto等人做出了开创性的研究。这些学者借鉴人们在重复过程中追求满意指标达到期望行为的简单原理,成功地使具有强耦合非线性多变量的工业机器人快速高精度地执行轨迹跟踪任务。其基本做法是:对于一个在有限时间区间内执行轨迹跟踪任务的机器人,利用前一次或前几次操作时测得的误差信息修正控制输入,使得该重复任务在下一次操作过程中做得更好。如此不断重复,直至在整个时间区间内输出轨迹跟踪期望轨迹,如图2所示。

2 迭代学习控制的基本原理

迭代学习控制适合于具有重复运动性质的被控对象,通过迭代修正达到某种控制目标的改善。迭代学习控制方法不依赖于系统的精确数学模型,能在给定的时间范围内,以非常简单的算法实现不确定性较高的非线性强耦合动态系统的控制,并高精度跟踪给定期望轨迹,因而一经推出,就在运动控制领域得到了广泛的运用。

(2)迭代学习控制的基本结构

3.3高速列车PID型迭代学习控制器设计

当其迭代到第 k 次时,ATO 系统算法为:

4 基于MATLAB的仿真及分析

clear all;clc;

% 目标轨迹生成  仿真时长101个点,迭代次数N次
N           = 30;%迭代次数
dt          = 1;%采样间隔
t           = 0:dt:15;
t1          = 0:98:1470;
[~, N_t]    = size(t);

% 参数初始化 - N行,代表N次迭代;N_t列,代表每次仿真时长为N_t个时间点
u         = zeros(N, N_t); %控制量
y         = zeros(N, N_t); %系统输出
y_d       = zeros(1, N_t); %期望输出
e         = zeros(N, N_t); %与期望的偏差
s         = zeros(N, N_t);
max_e     = zeros(N, 1); %量化评估-最大误差

% 期望轨迹与系统初始状态
for j = 1:N_t
    if t(j) <= 4
        y_d(j) = 2 * j - 2;
    elseif t(j) > 4 && t(j) <= 6
        y_d(j) = 8;
    elseif t(j) >= 7 && t(j) <= 8
        y_d(j) = 6;
    elseif t(j) >= 9 && t(j) <= 10
        y_d(j) = 8;
    elseif t(j) > 10
        y_d(j) = 30 - 2 * j + 2;
    end
end
figure(4)
plot(t, y_d, 'Color', 'k'); % y_d 的颜色指定为黑色
% 迭代过程
for k = 1:N
    % 第k次控制过程
    integral = 0;
    for i = 1:N_t - 1
        % 计算位移量*
        s(k, i+1) = y(k, i)*dt + s(k, i);
	    if s(k, i) >= 38.5 && s(k, i) < 51.35
    	    theta = 0.096;
	    elseif s(k, i) >= 90.75 && s(k, i) < 94.85
    	    theta = 0.0724;
	    else
    	    theta = 0;
	    end

        % 系统模型
        y(k, i+1) = -0.0166*y(k, i)^2 - 0.228*y(k, i)-7.75 + u(k, i) + y(k, i) - 9.8 * theta;
        %y(k, i+1) = y(k, i) / (1 + y(k, i)^2) + u(k, i)^3;%从第二个时间点开始
        if y(k, i+1)>100
            y(k, i+1)=100;
        end
        e(k, i+1) = y_d(i+1) - y(k, i+1);%计算所有时间点对应的误差
        %控制量更新
        %控制量更新 PID 控制
        if e(k, i+1)>100
            e(k, i+1)=100;
        end
        integral = integral + e(k, i+1) * dt;
        derivative = (e(k, i+1) - e(k, i)) / dt;
        u(k+1, i) = u(k, i) + 0.5 * e(k, i+1) + 0.01 * integral + 0.05 * derivative;
    end
    max_e(k) = max(e(k, :));
    X = ['第', num2str(k), '次迭代——最大误差为', num2str(max_e(k))];
    disp(X)
    if k>=4 && k <= 30
        figure(17)
        subplot(1, 1, 1);
        plot(t1, y(k, :)*10); 
        hold on;
        xlabel('t/s');
        ylabel('y/(m/s)');
        pause(0.4);
    end
    if k == 30
        figure(18)
        subplot(1, 1, 1);
        plot(t1, u(k, :)*10); 
        hold on;
        xlabel('t/s');
        ylabel('u/(m/s)');
        pause(0.4);
    end
end
figure(2)
plot(1:N, max_e(:, 1))
xlabel('迭代次数 k');
ylabel('e/(m/s)');
figure(4)
plot(t1, y_d*10, 'Color', 'k'); % y_d 的颜色指定为黑色
xlabel('t/s');
ylabel('y_d/(m/s)');
本人资源全部来自互联网,仅供学习参考、交流之用,请及时删除,如果喜欢副本内容请购买正版。 迭代学习控制 孙明轩 第一章 迭代学习控制系统 1、1 迭代学习控制系统概论 1、2 迭代学习控制过程的... 1、3 简单实例 第二章 线性系统的迭代学习控制 2、1 D 学习律 2、2 PID 学习律 2、3 正则线性系统的迭代... 2、4 非正则线性系统的迭... 2、5 P 学习律 2、6 最优学习律 2、7 基于脉冲响应的学习律 第三章 非线性系统的迭代学习控制 3、1 高阶学习律 3、2 滤波器学习律 3、3 模算法学习律 3、4 模参考学习律 3、5 非线性时滞系统的迭... 3、6 非正则非线性系统的... 第四章 鲁棒迭代学习控制 4、1 PID 遗忘因子学习律 4、2 P 遗忘因子学习律 4、3 选择学习算法 4、4 鲁棒收敛性 4、5 高增益反馈学习律 4、6 反馈-前馈迭代学习控... 4、7 非正则系统的反馈-前... 第五章 任意固定初态下的迭代学习控制 5、1 D 学习律的极限轨迹 5、2 PD 学习律的极限轨... 5、3 带有初始误差修正的... 5、4 其它形式的学习律 5、5 非正则系统的迭代学... 5、6 高阶非正则系统的迭... 第六章 迭代学习控制系统的 2-D 分析 6、1 Roesser 模 6、2 正则线性离散系统的... 6、3 非正则线性离散系统... 6、4 含初始修正的学习律 6、5 线性时滞系统的迭代... 第七章 迭代学习辨识 7、1 迭代学习辨识的表述 7、2 系统初态已知时的迭... 7、3 鲁棒迭代学习辨识 7、4 系统初态未知时的迭... 7、5 外弹道气动系数辨识 第八章 迭代学习控制的回顾与展望 8、1 研究现状 8、2 研究方向 附录 迭代学习控制理论的数学基础 A、1 Bellman-Gronwall 引... A、2 差分不等式 A、3 向量函数的微分中值... A、4 向量与矩阵的范数 A、5 λ范数 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值