当前位置:   article > 正文

四轴无人机-飞行控制原理(PID)_姿态控制pid 光纤陀螺

姿态控制pid 光纤陀螺

 控制目标:

1、稳定/平衡 【最核心】:四旋翼微型飞行器的控制就是以地理坐标系为参考,做三维飞行姿态控制。控制目标是使其在 无动作指令时保持稳定悬停状态,有动作指令 时有效完成指定动作。

2、准确

3、快速

4、鲁棒

控制方法:

对于四轴飞行器平衡控制中,四个电机的转速并不是完全直接由遥控油门来决定,而是结合姿态控制指令和外部扰动综合了PID姿态控制输出算出来的。

飞行员只要将他想要的四轴整体动作(升降、三轴旋转)告诉飞控,飞控通过算法计算评估当前姿态与目标姿态的偏差,再通过这些偏差来修正四个电机的动作。

往深一步思考,遥控器如何控制了无人机:

四路使用:油门+三个姿态角(这也是PID控制系统中的几个控制对象;四路备用:

往深一步思考,电机具体是怎么控制的?

由四轴飞行力学可知,控制无人机的的平衡飞行

== 把四个电机的转向和转速 控制好

== 因4 路 PWM 驱动 4 个 NMOS 管来控制 4 个电机。

==最终是控制好四路PWM占空比和方向

再回味上面一段话,飞行员发出具体期望 角度/量 (升降、三轴旋转)的指令到飞控,那么就有了飞控通过算法计算评估当前姿态与目标姿态的偏差,再通过这些偏差来修正四个电机的动作。

PID控制理论

单级PID

 

串级PID

 PID算法学习:

PID算法 - 从入门到实战!_哔哩哔哩_bilibili来自 “23电赛特训班 (小黑、小强、菠萝)” 录课,本期是由小黑主讲的PID算法,首先用生活中和电赛中的例子带大家直观了解什么是PID,然后用浅显的语言讲解PID的数学表达式及其含义(重要),并用代码来实现,最后总结实际使用中PID的各类组合和调参技巧,并通过讲解平衡小车的代码和调参来运用于实践。内容如下:一、PID是什么?1. 开环和闭环2. 闭环控制的实现方式二、什么时候要用到PID, 视频播放量 43013、弹幕量 292、点赞数 2330、投硬币枚数 1581、收藏人数 6880、转发人数 256, 视频作者 _WNNN, 作者简介 ,相关视频:通俗易懂的 PID 控制算法讲解,PID控制从入门到精通,PID控制算法精讲,进国赛了,可以发了,【平衡小车PID】直立环+速度环完整调参过程 (开源),PID控制指令,第11讲:PID控制器算法代码分析,快速入门Simulink的PID仿真,只用PID?加上前馈解决95%的问题!,智能小车制作教程(基于stm32)https://www.bilibili.com/video/BV1iP411x71X/?vd_source=f443c8140671d1c361aa817ad1193312icon-default.png?t=N7T8https://www.bilibili.com/video/BV1iP411x71X/?vd_source=f443c8140671d1c361aa817ad1193312

开环/闭环控制

开环:系统输出不反馈,输入不会受到输出的影响

温度水壶:是一个最简单的闭环系统,达到设定稳定,输入会被切断;并非PID,PID时随动系统控制(连续函数方式,而不时简单的阶跃函数)

PID数学表达公式

PID三种算法物理意义理解

 Ek   就是 控制偏差;

对于P算法,比例算法;当前时刻系统误差越大,P算法贡献就越大,系统响应越剧烈,随着系统误差的减小,P算法贡献逐渐减小趋近于0;

对于D算法,微分算法,在dt时间内,如果系统响应缓慢的话,误差的差值就很小,阻尼就感受到很小。

对于 I算法:积分算法,数学上是误差曲线与坐标轴围成的面积,一个误差和的曲线,消除稳态误差

无人机定高调节---PID模拟调参网站

Webpack App (rossning92.github.io)https://rossning92.github.io/pid-simulation/

PID算法例子理解

四轴PID算法学习之一理解PID控制的理论-CSDN博客四轴PID算法学习前言一、什么是PID二、 PID是怎么控制的比例控制积分控制微分控制三、PID应用前言PID控制算法在控制领域应用的非常广泛,在四轴飞行器的开发中为了保证姿态稳定在大多数情况下采用的也是PID算法,我在学习四轴之前也接触过PID,但是对它的理解总是不够深刻,因此最近也查了一些资料把自己的理解写下来。一、什么是PID简单来说,我们为什么要用PID控制呢?因为当我们在做实验或...https://blog.csdn.net/bty156/article/details/104563505?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%9B%9B%E8%BD%B4%E6%97%A0%E4%BA%BA%E6%9C%BApid%E6%8E%A7%E5%88%B6&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-104563505.142^v94^chatsearchT3_1&spm=1018.2226.3001.4187

PID调参

考虑现在你用一根手指来快速达到二轮小车的平衡状态;

【急先锋】首先就是P算法,发现快倒了,倒的比较多,就要施加个力触碰下。反馈传感器就是眼睛,你的大脑里只有简单的P算法,输入就是你的手指。

然后,你发现每次都要用手指左一下,右一下,尽管可能具体平衡态越来越近了,但是很慢,还需要不断左右碰。

【稳重的谋将】然后,你就想到了再上一根手指,这根手指在发现P算法手指用力过大的时候,做个反作用阻尼力,抵消过冲。 

调参顺序:P D I,I不一定用的上;我们希望达到的调参效果是,P快速响应,发现P快速响应有过冲风险时,D又能审时度势出力,防止超调。

PID控制:

四轴单级PID单角度姿态控制

无人机的飞行姿态控制,我们的控制对象是无人机的三个角度。每个角度都考虑用一个PID环去控制,最终作用到执行机构上的还是四路电机的PWM信号。

四轴单级PID姿态控制

同理,三个角度。(三个角度的控制,最终作用到四路电机的PWM控制效果是线性叠加)

串级PID控制

主要是在角度控制的基础上,增加了角速度控制。期望姿态角与姿态结算出来的角度进行角度PID控制,输出的角度值,是离散型数据。又因为w(角速度)=a(角度)/t(时间)。所以可以认为输入的也是角速度。于是就实现了外环PID值作为内环PID的期望值目的。再结合陀螺仪比较精准的采集角速度的原理。内环的角速度控制可以保证飞行器测量值迅速的达到期望值。

这样一来就大大缓解了单角度环控制,由于飞机的电机转速与升力不成正比而出现的失衡(比如说在目标位置前后,左右偏移),跟随滞后等等问题。
————————————————
原文链接:https://blog.csdn.net/qq_60521516/article/details/123704887

PID计算结果的动力分配

PID计算的结果最终是要输出给电机的,所以我们要将三个姿态角的控制输出正确的分配给四个电机。顺时针开始,从第四象限开始,依次是M1,M2,M3,M4四个电机。(注意上面给的参考图片,左下侧是机头方向)

  1. 实现左右横滚运动的时候:(Roll)
  2. 需要M1,M4的转速增大。M2,M3电机的转速减少。(或者反着来,运动方向相反)并且为了使得飞行的稳定性。输出的增量和减少量是一致:
  3. MOTOR1 += + pidRateX.out
  4.  
  5. MOTOR2 += - pidRateX.out
  6.  
  7. MOTOR3 += - pidRateX.out
  8.  
  9. MOTOR4 += + pidRateX.out
  1. 实现前后俯仰运动的时候:(Pitch)
  2. 需要M3,M4的转速增大。M1,M2电机的转速减少。(或者反着来,运动方向相反)同样的为了使得飞行的稳定性。输出的增量和减少量是一致:
  3. MOTOR1 += - pidRateY.out
  4.  
  5. MOTOR2 += - pidRateY.out
  6.  
  7. MOTOR3 += + pidRateY.out
  8.  
  9. MOTOR4 += + pidRateY.out
  1. 实现偏航运动的时候:(Yaw)
  2. 需要M2,M4的转速增大。M1,M3电机的转速减少。(或者反着来,运动方向相反)同样的为了使得飞行的稳定性。输出的增量和减少量是一致:
  3. MOTOR1 += -pidRateZ.out;
  4.  
  5. MOTOR2 += + pidRateZ.out;
  6.  
  7. MOTOR3 += - pidRateZ.out;
  8.  
  9. MOTOR4 += + pidRateZ.out ;

将三个式子加和:

  1. MOTOR1 += + pidRateX.out - pidRateY.out -pidRateZ.out;
  2.  
  3. MOTOR2 += - pidRateX.out - pidRateY.out + pidRateZ.out;
  4.  
  5. MOTOR3 += - pidRateX.out + pidRateY.out - pidRateZ.out;
  6.  
  7. MOTOR4 += + pidRateX.out + pidRateY.out + pidRateZ.out;

关于上面式子中的做一点说明:pidRateX.out这个应该是一个四维向量

————————————————
版权声明:本文为CSDN博主「Xiao |」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_60521516/article/details/123704887

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/111890?site
推荐阅读
相关标签
  

闽ICP备14008679号