最新文�? 重整化理论应用:常规超导 利用张量网络求解二维Ising模型 薄片压电换能器的工作原理 你的下一台量子计算机,何必是计算机 m基于深度学习的QPSK调制解调系统频偏估计和补偿算法matlab仿真
机器人和控制 历史版本:
上次修改时间:
简易四轴飞行器控制原理 历史版本:
上次修改时间: 2022-02-01 22:10:27

四轴飞行器组成

结构

按照电机的排布方式分为x型:
image.png
y型:

image.png

两种不同的结构使用不同的控制方式。
“+”型的四轴飞行器因为其电机布局和两个姿态角(俯仰角和翻滚角)重合,其控制难度较小。举个例子,“+”型飞行器想要进行俯仰运动时,只需控制前后两个电机的转速,左右电机转速保持不变即可,所以其控制飞行器稳定的难度较小,相对来说易于控制。

“X”型无人机优点是控制灵活,同样是俯仰运动中,“x”型无人机需要控制四个电机;具体表现为,前两个电机转速同时增大(减小),后两个电机转速同时减小(增大)。因为其运动是四个电机转速同时变化,运动(俯仰运动)的合力来源于四个电机(“+”型只有前后两个电机提供力),所以其运动的加速度更快,运动更加灵活。但是同样,控制四个电机使飞行器稳定的难度要大于控制两个电机,所以控制难度高是“X”型无人机一个缺点。鉴于现阶段商业飞控,开源飞控都已经有很成熟的算法控制飞行器稳定飞行,且“X”型飞行器易于悬挂云台,所以市面上的四轴飞行器绝大部分都是“X”型或“H”型,很少看到有“+”型。

受力分析

四轴主要靠连接桨叶的电机转动提供升力带动整个飞机飞行,此时电机的受力情况如下:
image.png
对于单个电机而言,电机外壳与机架连接,由于电磁力的作用电机转动,因此机架也受到了转动方向的反作用力,为了抵消这个反作用力,四轴飞机大多数都设计成为对称的,且处于对角的电机都使用相同类型的桨叶且转动方向相同,相邻的电机使用不同类型的桨叶转动方向不同,这样的设计抵消了因为电机转动施加在机架上的反向旋转作用力
image.png

控制原理

控制四轴飞行器的目的在于稳定的控制飞行器的飞行,飞行类型有简单有复杂,常见的简单运动类型为:

  • 垂直运动
  • 俯仰运动
  • 旋转运动

同时也有复杂的运动类型

  • 悬停
  • 翻滚
  • 自动飞行

对于x结构的四轴,实现简单运动电机的出力方式。
image.png
大多数四轴的控制都是能够自稳定的,遥控器仅仅提供的是油门,行进方向等等,这是最基本的自稳定控制,为了实现自动稳定飞行,四轴需要实时监控飞行器本身的状态常见的状态数据有

  • x,y,z加速度速度
  • x,y,z速度
  • x,y,z角加速度
  • x,y,z角速度
  • 飞机当前的姿态角
  • 高度

等等
四轴的控制大多数采用pid算法进行控制。

姿态角的表示

四轴飞行器最常见的姿态表示是采用欧拉角来表示,分为俯仰角,偏航角和旋转角,这些角度都是相对于机体坐标系的X,Y,Z轴的角度。
传统的飞机很容易区分机头和机尾,四轴飞行器因为是对称的结构,不好区分,一般而言区分都是根据陀螺仪的放置位置来区分,一般将陀螺仪X轴或者Y轴方向视为机头,因为这个两个方向的运动都是对应于简单的俯仰运动,也就是平飞。

pitch是俯仰角,是“点头“,(在固定翼飞机中则由升降舵舵机控制)
20180718164721954.gif
yaw是偏航角,是‘摇头’,(在固定翼飞机中则由方向舵舵机控制)
20180718164845484.gif
roll是旋转角,是“翻滚”,(在固定翼飞机中则由副翼舵机控制)
20180718164921134.gif
对于四轴飞行器而言,由于飞行方向并不是一定要向着机头方向,因此roll和pitch角是类似的。
如果将X轴视为机头,那么X轴的角度就是pitch角,y轴的角度是roll角,反之亦然。
俯仰角一般抬头为正,低头为负数,和市面上最常见的MPU6050陀螺仪的坐标轴方向是一致的,既顺时针转动是增大角度
image.png

pid控制算法

pid算法是一种非常常见的负反馈控制算法,当被控对象的结构和参数不能完全掌握,或者得不到精确的数学模型时,控制理论的其它技术难以采用,系统控制器的结构和参数必须依靠经验和现场调试来确定。
由于四轴飞行器的硬件形态各异,电机参数各异,因此采用PID算法来作为四轴电机控制非常普遍。
PID并不关心四轴的具体动力学参数,二手通过一个固定的pid公式和未知的参数P(比例参数),I(积分参数),D(微分参数),输入为误差项,输出为电机的运动量,根据不断的实验优化这几个参数达到最好的结果,这其实和深度学习的训练过程类似,区别就是反向传播是机器自己去调参,而PID的调参过程更需要人参与。
image.png

四轴的pid控制很多样化,常见的有:

单角度环控制

image.png
计算过程如下:
image.png

角度-角速度环控制

上述角度单环PID控制算法仅仅考虑了飞行器的角度信息,如果想增加飞行器的稳定性(增加阻尼)并提高它的控制品质,我们可以进一步的控制它的角速度,于是角度/角速度-串级PID控制算法应运而生。在这里,相信大多数朋友已经初步了解了角度单环PID的原理,但是依旧无法理解串级PID究竟有什么不同。其实很简单:它就是两个PID控制算法,只不过把他们串起来了(更精确的说是套起来)。那这么做有什么用?答案是,它增强了系统的抗干扰性(也就是增强稳定性),因为有两个控制器控制飞行器,它会比单个控制器控制更多的变量,使得飞行器的适应能力更强。为了更为清晰的讲解串级PID,这里笔者依旧画出串级PID的原理框图,如图所示:
image.png
计算过程如下:
image.png

电机的控制

为了实现飞行的稳定和控制,电机的转速并不是单独由油门来决定,而是以油门为基准整合上空间三轴俯仰(Pitch)、翻滚(Roll)和偏航(Yaw)的控制量来决定
例如,四轴飞行器机头向下倾斜时(对应俯仰角为负数),为了达到平衡,电机 3 和电机 4 增大转速,电机 1 和电机 2 减小转速,此时俯仰控制量应该向负增大。
image.png
同理得到:
电机 1 转速 = 油门 + 俯仰 + 横滚 - 偏航
电机 2 转速 = 油门 + 俯仰 - 横滚 + 偏航
电机 3 转速 = 油门 - 俯仰 - 横滚 - 偏航
电机 4 转速 = 油门 - 俯仰 + 横滚 + 偏航

得到这个公式,最后的步骤在于PID参数的整定。

pid参数整定

在标准的控制类书籍上PID算法是这么定义的:
image.png
这个公式是连续系统用的,软件使用的是离散的控制模型也叫0阶保持器的离散系统,就是需要把上面的公式离散化,而这个离散化的过程我们使用的是后项差分法。首先把上面的积分传递函数转化为连续的s域模型:
image.png
使用后向差分法可以得到s域到z域的映射关系: image.png
于是可以得到:
image.png


image.png

pid控制原理 历史版本:
上次修改时间: 2022-10-20 16:14:57

PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。
PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来
image.png


image.png


从实现层面上来说,大部分都是在软件层面实现pid,需要在离散的时候使用,上式子可以化为:

image.png
每一项前面都有系数,这些系数都是需要实验中去尝试然后确定的,为了方便起见,将这些系数进行统一一下:

image.png


PID中三个参数,大体对应于控制系统的三个最重要的方面: - P: 对应“稳”,即稳定性,放大控制作用; - I对应“准”,消除稳态误差; - D对应“快”,对误差进行预判、做出快速反应。

xy20221020141008.gif


位置类型和增量类型PID

PID算法的两种形式:
位置型控制:
image.png
image.png
增量型控制:
image.png
image.png

参数整定

根据控制目标寻找合适PID参数称为参数整定
参数整定是根据经验来进行寻找合适的参数:

PID参数调整口诀:

参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大

曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低四比一
一看二调多分析,调节质量不会低

若要反应增快,增大P减小I

若要反应减慢,减小P增大I

如果比例太大,会引起系统震荡

如果积分太大,会引起系统迟钝

串级pid

当我们的期望并不只有一个时候,这个时候就会引入多级pid算法,举个电动飞机的例子

v2ab87feea6b4830ffadd5c5bd3c32ca99_1440w.png


飞行器的最终位置取决于电机的转动带来的升力,升力通过加速度影响速度,最后影响位置。
如果你按照图中的思路设计控制器,那就说明`你只对位置有期望`,这意味着你对升力,速度没有期望,也就意味着加速度,速度是什么都无所谓。
所以实际效果变成什么呢?`你会以一个你无所谓的加速度,和速度,到达你的期望位置。`这时候奇怪的事情发生了,到达你的期望位置时有加速度和速度,那这个就不是`到达期望位置`了,这叫`经过期望位置`。 你会发现你的对象在期望位置附近“反复横跳”,超过后,又退回去,退过了,又超过去。
这并不是因为PID参数没设置好导致的
这时候你才想起来,原来`你期望的是停在期望位置上`。 什么叫停在期望位置上?
就是到达期望位置的同时加速度与速度都为0。
因此,由于加速度我们可以自己控制,目标系统总共有两个期望,也就是速度,速度以及位置。
我们对期望速度的要求`期望速度必须能减小位置误差,且位置误差为0时,期望速度为0`。
所以我们发现这些期望速度都是与位置误差相关的且经过0点的曲线 。

image.png

位置误差与期望速度在这时候才建立起的关系,注意,强调一遍,是我们主动把位置误差与期望速度联系起来的,起因是我们希望控制速度达到控制位置的效果。


而这种控制能够被实现的本质是,「速度与位置存在我们已知的简单变化关系,即速度的积分是位置」,所以改变期望速度才能改变位置,才能减小误差。

所以合理的控制过程应该就可以设计成这样。

image.png

只要找个合适的函数,根据误差生成合适的期望速度曲线就可以了。

我们最常使用的是什么样的曲线呢?

image.png
是不是非常熟悉。 因为这两个曲线满足合适的期望速度的要求,同时也非常的简单。
只要是满足「合适的期望速度」的曲线都可以作为期望速度,显然如果在外环使用PID也是可以的,但是为什么实际中不这么用呢?因为添加积分(I)后,导致响应变慢,添加微分(D)容易引入噪声,只用P又简单又有效,何乐而不为呢?
到这里外环的输出终于理所应当的变成了内环的期望,但是这并不是因为这件事本就应该成立,而是通过你的设计,和真实存在的物理关系,才设计出来的合情合理的双闭环控制器。
我们再回忆一下这个控制器的设计过程

  1. 执行器输出无法直接控制目标物理量。
  2. 发现控制器能控制物理量的变化量(微分)。
  3. 你想了个办法,可以通过控制物理量的微分,按照某种曲线变化,从而达到间接控制目标物理量。
  4. 这个曲线必须满足两点,存在目标物理量误差的时候,应该产生因一个能减小这个误差的变化,且当没有误差的时候,变化量也应该为0。
  5. 选择最简单实用的曲线即可,所以外环选择KP。
  6. 间接控制能成功的原因是因为,执行器能改变的量,与目标物理量之间有简单的物理关系。
0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号