进入一个新的智能硬件开源项目,里面的程序架构是非常关键的,说白了也就是知道文件目录的意义。主文件,控制算法,姿态算法,导航算法,传感器接口,函数定义文件,程序配置文件,特殊变量定义文件等等,这些文件都有标准的名称,很容易区分,而且这些开源程序现在也规矩多了,文件说明也写的很清楚,外国开源项目不像中国某些项目“犹抱琵琶半遮面”,不肯写说明,或者故意写很多垃圾代码。老外放在github上的都很清晰。
弄懂这些就要找准自己二次开发的方向,想多加功能?减少功能?改变算法?然后,注意了,关键:::::::从主函数入手!就算你只是改动一个小地方,也要把主函数搞清楚,然后进入相关函数,或者文件位置进行二次开发。
我还记得自己前两年改mwc改完之后,发现新版竟然跟我改的一样,自己还有些得意,这些年没改代码都有些手痒了。
一、无法解锁(黄灯闪烁)
无法解锁的原因会有多种,请按照如下步骤进行检查:
1、初始设置是否全部完成
a、机架类型选择是否正确,或者你根本就没有选择?
注意,新版本的飞控固件在默认参数情况下,需要先在mission planner中设置好机架类型后才会有各个控制通道的输出。
b、加速度计校准(如果没有校准或者上次校准不成功,解锁时姿态窗口会提示);
c、指南针校准(如果没有校准或者上次校准不成功,解锁时姿态窗口会提示);
d、遥控器校准(并且各个通道的正反向正确);
e、飞行模式设置(注意,在PosHold、Loiter模式下,如果GPS没有定位或者定位不佳,是无法解锁的)
f、电调校准(你确定你校准成功了吗?)
2、是否连接了“安全开关”,并解锁。
pixhawk飞控硬件引入了“安全开关”这个外设,飞控默认是使能安全开关的,这就需要你在使用遥控器解锁前先长按安全开关,进行初步解锁,然后再通过遥控器解锁。如果你不想用安全开关,在全部参数列表中将“BRD_SAFETYENABLE”设为“0”即可。(注意,有些参数是立即生效,有的参数是重启生效,建议为稳妥起见,进行一次重新上电 *** 作)
3、会不会是飞控已经解锁了,但是电调并没有工作。
a、会不会是你只给飞控供电了,而没有给电调供电?
b、会不会电调信号线断了?或者信号线插反了?
c、会不会是电调没有校准?
4、会不会打开了地理围栏功能,并且飞机处于地理围栏之外?
二、电台连接缓慢,或者有很大概率连接失败
APM最新版固件很少出现这个问题了,之前的固件与某些电台联合使用的时候会出现这个问题。
原因:全部参数列表中“BRD_SER1_RTSCTS”和“BRD_SER2_RTSCTS”默认是“2”,即“auto 自动”。这个两个参数控制着飞控连接电台的串口是否开启流控制(串口协议里的概念)。0表示不用,1表示用,2表示自动检测。自动检测的原理是飞控初始化的时候先默认是使用,然后收发一些数试试,如果不行,就认为不用,以前的固件这里好像有点bug,导致有时就连不上地面站了。将这两个参数设为0即可。
三、悬停掉高(或者叫定高不好,上下浮动)
定高不好,可能是由以下两个原因造成的:
1、机架震动大,飞控减震没有做到位,导致飞控Z轴加速度出现较大奇异值,从而导致飞控在某些时刻对自身速度、加速度的估计出现错误,明明飞机没有向上走,但是飞控认为飞机在快速向上走,于是控制飞机猛收油门,从而飞机猛地向下掉一下。这类问题导致的定高问题更像是飞机在向上或者向下抽动。
2、气压计受自身螺旋桨气流影响导致高度估计问题。大家一般会在气压计上加一块海绵,但其实对于大飞机这个是不够的,最好再增加2层遮挡物:一、飞控加外壳,外壳透气孔尽量小一点,如果飞控外壳四面透风就意义不大了;二、将飞控装在机身内部,并且尽量使得机身封闭(一般很难做到完全封闭,从而不影响气压计检测外界气压值),这个可能比第一条还关键。
3、如果是缓慢的高度变化,并且变化范围在0.5m以内,那么,可以认为是正常的,因为飞控对自身高度的估计主要来源于气压高度计,而气压随着气温会缓慢变化,再加上飞控旋翼气流影响以及各种测量噪声,飞控对自己的高度的估计会缓慢变化,从而导致高度控制出现漂移。如果想提高定高效果,只能考虑添加“相对高度计”,如超声波、毫米波雷达、激光测距仪等。
四、定点定不住
定点定不住,可能是由如下原因造成的:
1、确认自己已经成功切到PosHold或者Loiter模式!(你以为你切了,实际上没切,或者由于GPS、磁罗盘等问题飞控拒绝切到定点模式)一定要通过地面站看模式,反复确认;
2、GPS信号差,如果有严重遮挡,GPS定位会出现较大幅度的漂移,进而导致定点定不住;
3、遥控器有偏移值。要么你没有校准遥控器,要么不小心拨动了遥控器微调,要么温度变化导致遥控器自己行程飘了,导致摇杆处于中位时飞控收到的是向一边打杆的控制指令……
4、磁航向不正。磁罗盘没有校准,或者磁罗盘歪了,或者磁罗盘受到干扰,导致飞控对机头方向的估计与实际航向不一致,进而导致位置控制时出现刷锅飞行的情况(飞机机头指向不变,飞行轨迹呈现刷锅的感觉)。
五、刷哪种固件?PX4固件?APM固件?
首先应该明白PixHawk、PX4固件、APM固件三者的关系:
PixHawk指的是飞控硬件,相比之前大多数开源飞控使用的AVR单片机,Pixhawk飞控在硬件性能上有了很大的提升,它采用的STM32F427VIT6作为主控,32位,主频168MHz,可以说是相当的牛逼。
PX4固件和APM固件指的是软件,它们都是运行在PixHawk硬件之上的,是两种不同飞控程序。对于刷哪个固件,请看下面的对比:
1、PX4固件的源代码结构明了,对于学习飞控程序的人来说,可能入手更快一点;相比之下,APM代码略微有点复杂;但是,请注意,这里的复杂是相对而言的,根据我个人的经验来看,APM的代码比我见过的所有自己写的代码(自己写的、项目用的、实验室遗留的)相比,编写规范、命名规则、实现方法都要好非常多。 对于只是使用飞控,而不研究代码的人来讲,PX4固件在这一点上没有优势。
2、APM固件历史悠久,功能更加完善,漏洞更少,飞行更稳定(这里的稳定指的是不会因为程序漏洞导致莫名其妙地摔机);相比之下,PX4固件有点薄弱,有很多坑需要填。 对于一个无人机来讲,能稳定可靠地飞行是第一位的,如果不能稳定可靠地飞行,其余优势都是扯淡。
因此,对于只用飞控不改程序的人,我推荐刷APM固件;而对于需要改程序的人,我也推荐APM固件,但是如果是公司用户,请考虑一下APM固件和PX4固件开源协议的区别,酌情考虑(关于这一点,请注意:不要敝帚自珍,一个无人机公司的竞争优势是全方位的,既然用了开源飞控,即使你加上了自己特有的功能,在飞控代码上也不会比别人强太多。那些不会改飞控代码的竞争对手给他程序他也用不了,那些会改代码的公司也不屑于抄你)。
上述论述可能有失公允,毕竟,我是用APM的人
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)