• matlab小车运动轨迹增量式PID控制


    1、内容简介


    481-可以交流、咨询、答疑

    2、内容说明

    PID控制器是一种基于“过去”,“现在”和“未来”信息估计的简单算法。

    常规PID控制系统原理框图如图2-1所示,系统主要由PID控制器和被控对象组成。作为一种线性控制器,它根据设定值 rm(t)和实际输出值yout(t)构成控制偏差e(t), 将偏差按比例、积分和微分通过线性组合构成控制量u(t),对被控对象进行控制。对连续时间类型,PID控制方程的标准形式为:

                        (2-1)

    图2-1 PID控制器系统原理框图

    式中:e(t) = rm(t) - yout(t),Kp为比例系数,TI为积分时间常数,TD为微分时间常数。

    离散PID控制的形式为 :

                                     (2-2)

    式中:u(k)为第k次采样时控制器的输出;k为采样序号,k=0,1,2…;e(k)为第k次采样时的偏差值;T为采样周期;e(k-1)为第(k-1)次采样时的偏差值。

    离散PID控制算法有如下3类:位置算法、增量算法和速度算法。增量算法为相邻量词采样时刻所计算的位置之差,即

                     (2-3)

    式中:,;

    从系统的稳定性、响应速度、超调量和稳态精度等各方面来考虑,、、的作

    用如下:

    比例系数的作用是加快系统的响应速度,提高系统的调度。越大,系统的响应速度越快,系统的调节精度越高,但易产生超调,甚至会导致系统不稳定。取值过小,则会降低系统的调节精度,使响应速度缓慢,从而延长调节时间,使系统静态、动态特性变坏。

      积分作用系数的作用是消除系统的稳态误差。越大,系统的静态误差消除越快,但过大,在响应过程的初期会产生积分饱和现象,从而引起响应过程的较大超调。若过小,将使系统静态误差难以消除,从而影响系统的调节精度。

      微分作用系数的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。但过大,会使响应过程提前制动,从而延长调节时间,而且会降低系统的抗干扰能力。

    3、仿真分析

    1. clc,clear,close all
    2. load('ysw.mat') % 原始数据
    3. figure,plot(ysw(:,1),ysw(:,2),'*','linewidth',2)
    4. hold on
    5. axis([-50,350,-50,550])
    6. x_pos = ysw(:,1)';
    7. y_pos = ysw(:,2)';
    8. N = length(y_pos);
    9. x_ini = x_pos(1);
    10. y_ini = y_pos(1);
    11. x_real = [];x_real(1) = x_ini;
    12. y_real = [];y_real(1) = y_ini;
    13. error_x = zeros(1,N);
    14. error_y = zeros(1,N);
    15. for i = 2:N
    16. x_ini = x_real(end);
    17. y_ini = y_real(end);
    18. [x_real1,y_real1,error_x1,error_y1] = calculate(x_pos(i),y_pos(i), x_ini, y_ini);
    19. error_x(i) = error_x1;
    20. error_y(i) = error_y1;
    21. x_real = [x_real x_real1];
    22. y_real = [y_real y_real1];
    23. end
    24. time = 1:N;
    25. figure,plot(x_pos,y_pos,'r',x_real,y_real,'*b','linewidth',2);
    26. xlabel('x');ylabel('y');
    27. grid on;axis([-50,350,-50,550])
    28. legend('实际位置','位置跟踪');
    29. figure;plot(time,error_x,'r',time,error_y,'b','linewidth',2);
    30. xlabel('time(s)');ylabel('error');
    31. grid on
    32. title('X,Y跟踪误差')

     

     

    4、参考论文


     

  • 相关阅读:
    【C++】从零开始的CS:GO逆向分析1——寻找偏移与基址的方法
    你读过哪些让你醍醐灌顶的 Java 代码?
    计算机毕业设计ssm社区疫情防控系统3j56g系统+程序+源码+lw+远程部署
    100天精通Python(数据分析篇)——第63天:Pandas使用自定义函数案例
    go语言基础之变量
    代码签名证书如何申请
    Shell脚本2
    0x2C动态定义数据标识符服务
    vue3回退页面不刷新解决
    黑客(网络安全)技术速成自学
  • 原文地址:https://blog.csdn.net/qingfengxd1/article/details/126208105