首页 > 编程知识 正文

穿越机 pid,伯莱塔px4风暴

时间:2023-05-05 10:18:34 阅读:148276 作者:3738

实际上,下面列出的视频网络地址是无效的。

摘录: https://blog.csdn.net/msq 19895070/article/details/78781735

无人机系统PX4视频教程:飞行PID参数调节阿木实验室2017-12-12 14:57:16 9501收藏53

专栏: APM/PIX调试文章标签: PIXHAWK PIX飞控编码PID参数调试无人机

版权

调试PID参数一直是个令人头疼的问题,这里给您接下来的教程!

整篇文章(建议在PC上观看。 手机的排版有问题。 )视频教程下载到:

链接: http://pan.baidu.com/s/1bptl6BP密码:2zbe

获取更多免费资料和技术咨询,请搜索微信公众号:阿木实验室

官方网站: www.amovauto.com

PIXHAWk无人机PID参数调试示例

PID参数在控制领域一直是一项工程工作,理论比较简单,但参数标定确实困难。

本课程是为了指导PIXHAWK的PID参数调试。 具有软件仿真和实时视频效果,理论与实践相结合。

PID一言以蔽之,通过PID算法计算的控制量被赋予驱动器,达到维持某种状态的目的。 该控制量的多少直接影响系统能否快速稳定地维持这一状态。 例如,我们往杯子里倒水,要求正好满了。 一开始杯子是空的,所以我们倒水的倾斜力很大,水很快就倒到杯子里,但是随着水的满,我们的倒水倾斜力变小。 如果不能很好地把握这个倾斜的力,水就会溢出来。 该PID算法计算该水注的倾斜力,随着时间和水的装满,动态调整该水注的倾斜力。 杯子空的时候加快到水,增加注入口,杯子快满了的时候,缩小注入口,防止水溢出。

让我们先看一下PID算法的代码:

PID的流程简单到不能再简单了,用误差信号控制被控量,而控制器本身是比例、积分、微分三个环节的加法。 在此,在(时刻t )

1 .输入量为rin(t );

2 .输出量为rout(t );

3 .偏差量为err(t )=rin(t ) t )-rout(t ) t;

1 .说明反馈控制的原理,从上一节的框图中可以看出,PID控制实际上是偏差的控制过程

2 .偏差为0时,比例环节不起作用,只有存在偏差时,比例环节才起作用。

3 .积分环节主要用于消除静差,静差是指系统稳定后输出值与设定值之差,积分环节实际上是偏差累计的过程,将累计的误差加到原系统中抵消系统引起的静差。

4 .另一方面,微分信号会反应偏差信号的变化规律或变化趋势,并根据偏差信号的变化趋势进行超前调节,提高了系统的快速性。

步骤1 :定义PID变量结构。 代码如下所示。

struct _pid{

浮动设置速度; //定义设定值

浮动加速; //定义实际值

浮动错误; //定义偏差值

float err_last; //定义以前的偏差值

float Kp,Ki,Kd; //定义比例、积分、微分系数

浮动卷; //定义电压值(控制致动器的变量)

浮动集成; //定义积分值

(PID;

控制算法所需的参数由一个结构体统一定义,便于以后使用。

步骤2 :初始化变量。 代码应与以下内容类似: 以速度控制为例。

void PID_init (

打印(PID _ init begin (n ) );

pid.SetSpeed=0.0; //设定的速度

pid.ActualSpeed=0.0; //传感器检测的实际速度

pid.err=0.0; //误差初始化

pid.err_last=0.0; //之前误差量

pid.voltage=0.0; //PID输出量

pid.integral=0.0; //PID误差积分项

pid.Kp=0.2; //PID比例因子

pid.Ki=0.015; //PID微分系数

pid.Kd=0.2; 打印(PID _ init end (n ) ); //PID积分系数

}

统一初始化变量,特别是Kp、Ki、Kd三个参数,可以针对调试中要求的控制效果进行调整

节这三个量直接进行调节。

  

第三步:编写控制算法,代码如下:

 

Float PID_realize()

{

  pid.SetSpeed = speed;

  Pid.err = pid.SetSpeed - pid.ActualSpeed;//计算误差项

  Pid.integral+=pid.err;//计算误差积分项

Pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pi

d.err_last);

  pid.err_last=pid.err;

  pid.ActualSpeed=pid.voltage*1.0;

return pid.ActualSpeed;

}

PID的控制规律为:       

 

 

 

1.说明一下反馈控制的原理,通过上一节的框图不难看出,PID 控制其实是对偏差的控制过程;

 

2.如果偏差为 0,则比例环节不起作用,只有存在偏差时,比例环节才起作用。

 

3.积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。

 

4.而微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。

 

对于PID讲我们用以下原则:

a.在输出不振荡时,增大比例增益P。(增大P可以快速到稳定)  
b.在输出不振荡时,减小积分时间常数Ti。(积分过大容易超调)  
c.在输出不振荡时,增大微分时间常数Td。(微分项是预测误差变化率,越接近设定目标,越要减少PID输出,来增加系统的快速性)

 

PIXHAWK的PID参数调试: 

 

PIXHAWK采用串级PID的方式,外环是控制角度,内环是控制角速度。因为内环更直接作用于电机,所以我们调试PIXHAWK的PID,一般只用调试内环的PID即可(角速度)。

 

 

图上我们可以看出内环PID更接近于电机输出,我们在调试PIXHAWK飞控的时候也是先调节内环角速度PID

 

                     

1:微分调节的现象

我在采用默认PID参数的时候,发现四轴无人机恢复稳定比较慢,有震荡现象。以下是微分作用的PID系统图表:

微分过小系统响应速度快,但是产生有衰减振荡。微分过大系统响应速度变慢。

微分D过小在接近设定目标值的时候会产生较大的过充和少量的振荡,但是会衰减。我们采用默认参数出现了衰减的振荡,就是微分D太小,我们增大微分D就可以解决。

  

2:比例调节的现象

 

 

 

 

我们发现比例系数过大会导致系统系统响应很快,更有可能导致系统振荡失调,如果发现飞机振荡很厉害,没有衰减,一定是比例系数过大的原因。

 

3:积分调节的现象

 

积分过大也会产生振荡失调,因为积分是误差的累积。

 

总结:系统有衰减振荡,有可能是D(微分过小)或者的I(积分过大)。

      系统有振荡越来越大,直到系统不受控制,有可能是P值过大。

      在系统默认的PID参数上做调节,逐步修改参数,看试飞效果。

      可以适当让微分过冲,增加响应的快速性。

 

注意!!! 一切PID参数的调试都是基于电调行程校准通过,桨和电机,电调匹配的基础之上。如果飞机飞起来就侧翻(没校准好传感器和电调),或者已解锁就起飞(桨和电机不匹配)。这类飞机都飞不起来的问题,调试PID参数是没有意义的,切记! 调试PID参数是基于飞机飞行的有点不稳,但是基本可以飞行的基础之上!

 

这部分的参考网站

http://www.stmcu.org/module/forum/thread-601133-1-1.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。