如何用开源飞控PIXHAWK进行二次开发

如何用开源飞控PIXHAWK进行二次开发,第1张

pixhawk一直再用来做项目,没有时间仔细研究代码,因为之前研究过一些无人机开源项目代码,其实大同小异。比如mwc,我之前曾经把里面的代码研一遍,并且进行多次开发,效果也不错。3dr的东西写的比mwc规范多了,应该是更好弄一些,我把之前研究其它开源项目的经验写一下把。

进入一个新的智能硬件开源项目,里面的程序架构是非常关键的,说白了也就是知道文件目录的意义。主文件,控制算法,姿态算法,导航算法,传感器接口,函数定义文件,程序配置文件,特殊变量定义文件等等,这些文件都有标准的名称,很容易区分,而且这些开源程序现在也规矩多了,文件说明也写的很清楚,外国开源项目不像中国某些项目“犹抱琵琶半遮面”,不肯写说明,或者故意写很多垃圾代码。老外放在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的人

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11655638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存