按照电机的排布方式分为x型:
y型:
两种不同的结构使用不同的控制方式。
“+”型的四轴飞行器因为其电机布局和两个姿态角(俯仰角和翻滚角)重合,其控制难度较小。举个例子,“+”型飞行器想要进行俯仰运动时,只需控制前后两个电机的转速,左右电机转速保持不变即可,所以其控制飞行器稳定的难度较小,相对来说易于控制。
“X”型无人机优点是控制灵活,同样是俯仰运动中,“x”型无人机需要控制四个电机;具体表现为,前两个电机转速同时增大(减小),后两个电机转速同时减小(增大)。因为其运动是四个电机转速同时变化,运动(俯仰运动)的合力来源于四个电机(“+”型只有前后两个电机提供力),所以其运动的加速度更快,运动更加灵活。但是同样,控制四个电机使飞行器稳定的难度要大于控制两个电机,所以控制难度高是“X”型无人机一个缺点。鉴于现阶段商业飞控,开源飞控都已经有很成熟的算法控制飞行器稳定飞行,且“X”型飞行器易于悬挂云台,所以市面上的四轴飞行器绝大部分都是“X”型或“H”型,很少看到有“+”型。
四轴主要靠连接桨叶的电机转动提供升力带动整个飞机飞行,此时电机的受力情况如下:
对于单个电机而言,电机外壳与机架连接,由于电磁力的作用电机转动,因此机架也受到了转动方向的反作用力,为了抵消这个反作用力,四轴飞机大多数都设计成为对称的,且处于对角的电机都使用相同类型的桨叶且转动方向相同,相邻的电机使用不同类型的桨叶转动方向不同,这样的设计抵消了因为电机转动施加在机架上的反向旋转作用力
控制四轴飞行器的目的在于稳定的控制飞行器的飞行,飞行类型有简单有复杂,常见的简单运动类型为:
同时也有复杂的运动类型
对于x结构的四轴,实现简单运动电机的出力方式。
大多数四轴的控制都是能够自稳定的,遥控器仅仅提供的是油门,行进方向等等,这是最基本的自稳定控制,为了实现自动稳定飞行,四轴需要实时监控飞行器本身的状态常见的状态数据有
等等
四轴的控制大多数采用pid算法进行控制。
四轴飞行器最常见的姿态表示是采用欧拉角来表示,分为俯仰角,偏航角和旋转角,这些角度都是相对于机体坐标系的X,Y,Z轴的角度。
传统的飞机很容易区分机头和机尾,四轴飞行器因为是对称的结构,不好区分,一般而言区分都是根据陀螺仪的放置位置来区分,一般将陀螺仪X轴或者Y轴方向视为机头,因为这个两个方向的运动都是对应于简单的俯仰运动,也就是平飞。
pitch是俯仰角,是“点头“,(在固定翼飞机中则由升降舵舵机控制)
yaw是偏航角,是‘摇头’,(在固定翼飞机中则由方向舵舵机控制)
roll是旋转角,是“翻滚”,(在固定翼飞机中则由副翼舵机控制)
对于四轴飞行器而言,由于飞行方向并不是一定要向着机头方向,因此roll和pitch角是类似的。
如果将X轴视为机头,那么X轴的角度就是pitch角,y轴的角度是roll角,反之亦然。
俯仰角一般抬头为正,低头为负数,和市面上最常见的MPU6050陀螺仪的坐标轴方向是一致的,既顺时针转动是增大角度
pid算法是一种非常常见的负反馈控制算法,当被控对象的结构和参数不能完全掌握,或者得不到精确的数学模型时,控制理论的其它技术难以采用,系统控制器的结构和参数必须依靠经验和现场调试来确定。
由于四轴飞行器的硬件形态各异,电机参数各异,因此采用PID算法来作为四轴电机控制非常普遍。
PID并不关心四轴的具体动力学参数,二手通过一个固定的pid公式和未知的参数P(比例参数),I(积分参数),D(微分参数),输入为误差项,输出为电机的运动量,根据不断的实验优化这几个参数达到最好的结果,这其实和深度学习的训练过程类似,区别就是反向传播是机器自己去调参,而PID的调参过程更需要人参与。
四轴的pid控制很多样化,常见的有:
计算过程如下:
上述角度单环PID控制算法仅仅考虑了飞行器的角度信息,如果想增加飞行器的稳定性(增加阻尼)并提高它的控制品质,我们可以进一步的控制它的角速度,于是角度/角速度-串级PID控制算法应运而生。在这里,相信大多数朋友已经初步了解了角度单环PID的原理,但是依旧无法理解串级PID究竟有什么不同。其实很简单:它就是两个PID控制算法,只不过把他们串起来了(更精确的说是套起来)。那这么做有什么用?答案是,它增强了系统的抗干扰性(也就是增强稳定性),因为有两个控制器控制飞行器,它会比单个控制器控制更多的变量,使得飞行器的适应能力更强。为了更为清晰的讲解串级PID,这里笔者依旧画出串级PID的原理框图,如图所示:
计算过程如下:
为了实现飞行的稳定和控制,电机的转速并不是单独由油门来决定,而是以油门为基准整合上空间三轴俯仰(Pitch)、翻滚(Roll)和偏航(Yaw)的控制量来决定
例如,四轴飞行器机头向下倾斜时(对应俯仰角为负数),为了达到平衡,电机 3 和电机 4 增大转速,电机 1 和电机 2 减小转速,此时俯仰控制量应该向负增大。
同理得到:
电机 1 转速 = 油门 + 俯仰 + 横滚 - 偏航
电机 2 转速 = 油门 + 俯仰 - 横滚 + 偏航
电机 3 转速 = 油门 - 俯仰 - 横滚 - 偏航
电机 4 转速 = 油门 - 俯仰 + 横滚 + 偏航
得到这个公式,最后的步骤在于PID参数的整定。
在标准的控制类书籍上PID算法是这么定义的:
这个公式是连续系统用的,软件使用的是离散的控制模型也叫0阶保持器的离散系统,就是需要把上面的公式离散化,而这个离散化的过程我们使用的是后项差分法。首先把上面的积分传递函数转化为连续的s域模型:
使用后向差分法可以得到s域到z域的映射关系:
于是可以得到:
PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。
PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来
每一项前面都有系数,这些系数都是需要实验中去尝试然后确定的,为了方便起见,将这些系数进行统一一下:
PID算法的两种形式:
位置型控制:
增量型控制:
根据控制目标寻找合适PID参数称为参数整定
参数整定是根据经验来进行寻找合适的参数:
PID参数调整口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。微分时间应加长
理想曲线两个波,前高后低四比一
一看二调多分析,调节质量不会低
若要反应增快,增大P减小I
若要反应减慢,减小P增大I
如果比例太大,会引起系统震荡
如果积分太大,会引起系统迟钝
当我们的期望并不只有一个时候,这个时候就会引入多级pid算法,举个电动飞机的例子
位置误差与期望速度在这时候才建立起的关系,注意,强调一遍,是我们主动把位置误差与期望速度联系起来的,起因是我们希望控制速度达到控制位置的效果。
只要找个合适的函数,根据误差生成合适的期望速度曲线就可以了。
我们最常使用的是什么样的曲线呢?
是不是非常熟悉。
因为这两个曲线满足合适的期望速度
的要求,同时也非常的简单。
只要是满足「合适的期望速度」的曲线都可以作为期望速度,显然如果在外环使用PID也是可以的,但是为什么实际中不这么用呢?因为添加积分(I)后,导致响应变慢,添加微分(D)容易引入噪声,只用P又简单又有效,何乐而不为呢?
到这里外环的输出终于理所应当的变成了内环的期望,但是这并不是因为这件事本就应该成立,而是通过你的设计,和真实存在的物理关系,才设计出来的合情合理的双闭环控制器。
我们再回忆一下这个控制器的设计过程
通信工程专业毕业,7年开发经验
精通c/c++
精通golang
熟悉常见的脚本,js,lua,python,php
熟悉电路基础,嵌入式,单片机
服务端开发
嵌入式开发
>gin接口代码CURD生成工具
sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。
qt .ui文件转css文件
duilib xml 自动生成绑定控件代码
协议调试器
基于lua虚拟机的的协议调试器软件 支持的协议有:
串口
tcp客户端/服务端
udp 组播/udp节点
tcp websocket 客户端/服务端
软件界面
使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上
下载地址和源码
webrtc easy demo
webrtc c++ native 库 demo 实现功能:
基于QT
webrtc摄像头/桌面捕获功能
opengl渲染/多播放窗格管理
janus meeting room
下载地址和源码
wifi,蓝牙 - 无线开关
实现功能:
通过wifi/蓝牙实现远程开关电器或者其他电子设备
电路原理图:
实物图:
深度学习验证工具
虚拟示波器
硬件实物图:
实现原理
基本性能
采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS
上位机实现功能: 采集,显示波形,存储wave文件。
参数可运行时配置
上位机:
显示缓冲区大小可调
刷新率可调节
触发显示刷新可调节
又一个modbus调试工具
最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:
1. 基于QT5
2. 基于libmodbus
3. 三方库完全跨平台,linux/windows。
开源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
版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型