开源飞控算法
1. 多轴Pixhawk飞控与大疆NAZA比较
Naza-M 特性
All In One设计
先进的姿态稳定算法
多种飞行控制模式/智能切换
GPS模块扩展/精准定位悬停
智能方向控制
失控保护模式
低电压保护
掰杆启动模式
掰杆停止模式
S-Bus和PPM接收机支持
支持的多旋翼类型
云台增稳
远程调参和固件升级扩展
2. 怎么自制一个四旋翼的飞行器
我总结四轴飞行器 主要几种玩法吧:
1.玩硬件
2.玩软件
3.玩组装
4.玩遥控
现在的小四轴可玩性很强,放在口袋里,掏出手机遥控,想飞就飞了。
如果是用arino 的开源飞控那就主要是调试参数,学习下姿态算法神马的
大四轴可以玩高大上的航拍 玩定高定点
arino 的开源四轴:
MultiWii
如果LZ也想玩硬件的话,用STM32做四轴是个不错的选择
crazyflie:Bitcraze德国MK:MikroKopter • Home
匿名四轴:不思带你【从零开始】做四轴!!!(强势整理搬运版)圆点博士:圆点博士微型四轴飞行器我的开源四轴:四轴文章列表 从零做四轴飞行器
3. 如何用开源飞控PIXHAWK进行开发
想快速开发一个飞控,那首先要做的是了解apm的各种参数配置,了解每个参数的影响和起作用的代码功能块,用apm适配自己的机型还是需要修改,优化,和裁剪。正如克里斯安德森说希望APM做无人机行业的安卓,但是安卓的性能也只能是差强人意,比无人机行业的IOS大疆创新来说还差很多。
飞控行业或者研究领域应用,例如开发测绘手机app,无人机送快递等等(倾向于demo性质)...这种应用不需要做一个飞控,首先大概了解飞控的原理,然后只要掌握apm的控制数据协议即可。
发烧级的爱好者或者开发者,迫切的想要了解apm的大部分算法和逻辑,这个真的需要较长的时间,大致的思路就是:底层驱动-》传感器数据和物理意义-》姿态解算-》PID控制器-》飞行模式切换-》参数调优(包含gps悬停刹车什么的很细但是影响手感和性能的参数)初学只是去看apm而不是自己动手去做很难搞懂,建议还是自己做飞控,哪怕复制apm部分功能代码,做飞控的学习顺序和读飞控一样,但对于apm这样一个系统工程相对来说模块更分立。
4. adrc为什么常用于无人机控制
因为ADRC在无人机领域的热度很高,其算法性能优异,比PID略好,先进的控制算法如果根据其特点,找到合适的控制回路应用,效果十分不错的。
ADRC的解决办法就是:
安排一个过渡过程,将阶跃变化变得柔和。
设计非线性控制率。
设计扩张状态观测器ESO,估计反馈数据和干扰。
TD主要安排一个柔和的目标值输入,这样避免了PID算法快速响应与超调的矛盾。PID中,要想响应快速,必须增大P项,而增大到一定程度,又会有超调。
NLSEF的话,主要是解决一个“小误差大增益,大增益小误差”的问题,比如开源飞控arpilot中采用的sqrt控制器就是一个P控制的变型。
工作原理:
跟踪微分器的作用是安排过渡过程,给出合理的控制信号,解决了响应速度与超调性之间的矛盾。扩展状态观测器用来解决模型未知部分和外部未知扰动综合对控制对象的影响。虽然叫做扩展状态观测器,但与普通的状态观测器不同。
5. 无人机飞控类别
四轴之所以能够流行起来,全仰仗于飞控技术的提升。飞控是飞机的大脑,它基本上就是一块集成了很多传感器的大脑。它接收飞手发送的指令,并通过控制马达让飞机达到预期姿态。几乎所有的飞控都内置惯性导航系统IMU.一些高级的点飞控还会内置气压传感器和电子指南针。除了内置的传感器以外,飞控还可以外接很多其他外围设备,比如GPS、LED、雷达等。接下来我将教大家如何选择无人机飞控。
选择飞控固件
固件就是在硬件上跑的飞控软件,一般情况的不同的硬件对应有不同的固件,但是有些流行的固件也可以同时兼容好多种硬件。比较流行的固件有 Betaflight、PX4、Cleanflight、KISS、Raceflight 等。
由于飞控理论相对来说相对来说还是开放的,很多固件也都是开源的,所以对于本身飞行算法来说其实并没有什么好烂之分。在选择的时候主要考虑固件的成熟度,扩展能力,以及上位机配套软件的便利性。由于每个固件的上位机软件区别还是比较大的,所以有一定的学习成本需要考虑进去。
如果你不知道怎么选的话这里有个建议就是,单纯飞穿越机选择Betaflight,如果想深入学习飞控算法并在将来尝试进行飞控开发,选择PX4。
处理器
[图]
2/9
选择处理器
这里的处理器指的是飞控 上面主MCU,飞控的MCU一般会选择stm32系列,所以会有F1, F3, F4 and F7等。 目前来说F1的性能已经不太够用了,现在主流的是F3和F4的MCU,当然高端点的飞控就直接上F7了,尤其是PX4的高级飞控。
3/9
选择接口
这里说的接口主要说的是可以外接外围设备的接口,一般有UART、IIC、SPI等。接口的数量受所选的MCU所限制,最终由硬件电路决定留出多少接口,有些飞控为了减少板子尺寸并没有把所有可用的接口给预留出来。下表是每种MCU可以支持的串口数量。
F1F3F4F72 UART’s3-5 UART’s3-6 UART’s7+ UART’s
接口数量决定了可以外接多少个外围设备,可以根据实际情况进行选择。
另外,SPI能够达到的速度比IIC好高,IIC最大只能达到4KHz。而且SPI是全双工的,所以在SPI和
4/9
选择惯性导航芯片
典型的惯性导航芯片可参考下表
IMU支持的通讯协议最大的采样频率MPU6000SPI, i2c8KMPU6050i2c4KMPU6500SPI, i2c32KMPU9150*i2c4KMPU9250*SPI, i2c32KICM20602SPI, i2c32KICM20608SPI, i2c32KICM20689SPI, i2c32K
*其中MPU9150 相当于MPU6050加AK8975指南针,而MPU9250相当于MPU6500加AK8975。
目前来说,使用最广泛的是MPU6000,虽然说它的采样频率只有8kHz,但是它的抗噪鲁棒性很好,一般不推荐使用MPU6500和MPU9250,它们虽然采样频率很快但是采样出来的数据噪声也很高。
采样频率本身是个双刃剑,如果在干净的电源下面,采样频率越高,数据越平滑。但是如果是带有电调和马达干扰的电源下面,采样频率过高并不能带来好处,数据可能比低采样频率采出来的数据更糟糕。
有些飞控会单独把惯性导航模块外置,然后垫个海绵垫进行缓冲。如果没有外置的话,最好在飞控安装的时候将整个飞控安装在海绵垫上面。
[图]
5/9
选择功能模块
飞行控制算法是飞控的基本功能,但是还有很多其他的功能也很值得考虑。
6/9
选择OSD
OSD能将飞行信息显示在FPV屏幕上,比如电池电压,飞行时间。摄像头将图像数据传入飞控,飞控会将飞行信息跟图像数据融合并一并发给图传,图传可以将带有OSD的信息发回FPV显示器显示。有些还可以支持通过OSD调整参数。
7/9
选择电流计
飞控能够通过电流计能够计算出当前剩余的电量,这比单单测量电池电压要好的多。它能更准确的让你留出降落时间。
8/9
选择黑盒子
黑盒子听起来高达上,其实这里只是一个SD卡,飞控可以把飞行数据写到SD卡上方便后面的分析。这个对于调节PID来说是特别有用的。
9/9
选择安装尺寸
安装尺寸在写机架的时候也有聊到过,主要是为了保证飞控能够准确的安装在飞机上。
通用的飞控尺寸有 30.5×30.5mm, 20x20mm和16x16mm等. 5寸浆或者更大的机架一般使用30.5×30.5mm的飞控,更小点的使用20x20mm的飞控,而16x16mm也在100mm以下的机架上流行起来了。
[图]
注意事项
如果有帮助到你的麻烦点个赞。
6. 请问Pixhawk是比较好的开源飞控板了吧是否支持自己编写飞控代码还是指支持PID调参而已呢
apm系列里顶级的了。
里面预置了PID的飞控程序,可以只调参就能飞,
但作为开源飞控,当然也可以自己编程。
性能做一般的飞控肯定够用,其实性能跟你写算法的能力也相关。
详细的东西,你可以去相关论坛里逛逛问问。
BTW:你是Michael Dou·bi?
7. 四旋翼飞控里 为什么一定要用四元数用欧拉角不一样吗 就算用四元数也是将四元数转化为欧拉角进
四元数多是用在中间环节,在最终的PID输出的时还是用的欧拉角。
我认为造成这个现象的根本原因是抄袭!!对,就是抄袭。
通过6轴或者9轴融合姿态角的算法有两种,这两种我记得没错的话是英国人开发的(国籍可能记错了),并开源了,国内的那些没有研发能力的团体和个人就是用的这个算法,而那个算法的中间环节均为四元数,输出是欧拉角。
我也是没有研发能力的个人,所以也不能透彻理解这个转换的意义,猜测可能是像拉式变换或者傅立叶一样,通过一种域的变换使计算过程简便,也就是三维的'复数域',再可能是通过四元数防止计算过程中出现超过欧拉角表示范围的问题。四元数在旋转合成方面会方便一些,计算量也少于欧拉角,但是!姿态算法里根本没有四元数的旋转合成。
国内的开源的四轴代码都是这样,还有以前看的一个开源代码开始还是开源的,后来还有限制了,就那破代码,也就开发者自己还觉得不错了。
这些代码没有核心的姿态算法的开发能力,就在传感器的数据上'下功夫',就是被玩坏的滤波器,MWC用的滑动均值滤波、互补滤波简单明了,可靠有效,但是我们的开发者不这么认为,不用上椭圆滤波器,多阶低通滤波器,卡尔曼滤波这些复杂的算法就是低端的体现,浮点运算随心情写,也不管用不用的上,能用浮点绝不定点,这都还好,反正他们用的芯片完成他们的代码就是用大炮打蚊子,有的是资源没用,双精度都算的过来。
其中我最受不了的就是他们的卡尔曼滤波了,那个叫卡尔曼?天启者 卡尔玛吧。那都什么算法啊,有什么用,定义个QR就开始计算了,几个矩阵就高大上了,完全的低通性能,就是抑制dv/dt,确实给信号的波动减少了同时也把传感器的中高频信号给过滤掉了,这个可以,问题是中高频都滤掉了,控制频率给提到400+hz是什么意思,信号带宽给限制到了100hz,再把控制频率给升高,有什么用?有什么用?
说的这些都是我能看到源码的算法,当然有很多没有公开源码的好的算法,国内的牛人很多很多,只是他们专注于卖套件,谁都想把自己的劳动有回报,也不会公开,就是这个情况。
开源的国内代码就是这个质量,别想有什么突破,心态就是这样,别想短时间内有突破。
废话说了一堆也没解决你疑惑,实在抱歉。
8. 学无人机,哪个培训机构好
根据目前相关法律要求,空载大于 7.5kg 的飞行器,需要持证进行飞行,其他机型暂未规定。目前官网销售的消费级无人机,均不到 7.5kg ,直接在民航网站实名登记即可。
国内无人机飞行员认证有以下三类:UTC认证、 AOPA 认证、 ASFC 认证。如果想学习更多的无人机知识,或者想往职业方向发展,可以进入进行慧飞学院了解。
慧飞无人机应用技术培训中心,是全球无人机领军企业——DJI 大疆创新的全资子公司,为客户提供无人机培训服务。慧飞采用国内首个专注于无人机应用技能的UTC培训体系,该体系由中国航协通航分会与中国成人教育协会联合推出。分为航拍、植保、巡检、测绘、安防五大专业,让客户将先进的无人机技术应用在工作中,获得领先的效率、安全性与成果。慧飞在近年来陆续为新华社、中央人民广播电台、国家电网、南方电网、各地公安局等数十家大型企业提供员工培训服务。
9. 如何用开源飞控Pixhawk进行二次开发
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,
如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;
另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁