使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

(接上篇 使用PX4FLOW的pixhawk悬停模式疑难杂症(一)驱动安装以及固件烧写)

        3、博主遇到的第三个问题是“BAD OPTFLOW HEALTH”。这个问题也是我在调试过程中遇到的最难的问题。

使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

         官网的教程:PX4FLOW Optical Flow Camera Board — Copter documentation(该链接内容以下称作官网教程一)、Optical Flow Sensor Testing and Setup — Copter documentation(该链接内容以下称作官网教程二)。

        按照官网教程一,很容易实现参数的配置,但进行到下一步,即官网教程二时,博主就遇到了“BAD OPTFLOW HEALTH”的问题,且参数opt_m_x和opt_m_y始终为0,并不是像官网教程二中所说的“non-zero opt_m_x, opt_m_y and an opt_qua values”。这个问题博主啃了很久,最终找到了解决的办法。

        首先,要注意一个细节。虽然PX4FLOW模块上长着一个声呐测距模块,但是英语稍微好一点的朋友可以读懂,PX4FLOW根本就没有使用这个模块,然而依据光流的原理,需要有一个测距模块作辅助测量,所以没有测距,无人机是无法实现悬停的。而且官网教程一这个“Warning”中也写道,让你去买一个额外的测距。所以当你看到有些博客说他自己没有配测距,光靠PX4FLOW最后就实现悬停了,博主认为是很不可信的。

使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

         那么如何选择额外的测距模块呢,请参考此链接:Rangefinders (landing page) — Copter documentation

        在此博主和大家分享在此处走的一个小弯路。这个链接里面列出了十几种测距模块,我选择了其中几个在商店中搜索,发现价格都不菲。碰巧的是当时博主手头正好有一个HC-SR04模块,是博主之前做别的科创比赛用剩下的,就按照这个链接HC-SR04 Sonar Rangefinder — Copter documentation里的指示去配置,但最后没有成功,sonarrange没有数。

使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

         但是这个时候博主有了一个新发现,“BAD OPTFLOW HEALTH”没了! opt_m_x和opt_m_y也有数了!当时博主十分惊喜,因为这证实了光流要有数据必须配额外的测距模块,说明方向对了。然而问题并没有完全解决,因为测距模块没有数,然后博主就到ardupilot论坛里寻求帮助。(在此向大家推荐这个论坛:ArduPilot Discourse。涉及到与ardupilot有关的很专业的问题,只上百度搜是搜不到那么深的,论坛里或许就会有人遇到和你一样的问题,也会有技术大牛的解答)博主在论坛的众多帖子里获得了启发,意思大概是,这个模块太老了,性能也不好,应当换一个。最后博主选择了性价比比较高的Benewake TFmini,价格200多RMB。

使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

         按照这个教程:Benewake TFmini / TFmini Plus lidar — Copter documentation。博主成功配置了该测距模块,最终成功使sonarrange和opt_m_x、y都有了数,于是,就可以进行到官网教程二中的进一步调试了。

        在此,博主还想提一个点。其实官网教程一中也提到了unhealthy的问题:

使用PX4FLOW的pixhawk悬停模式疑难杂症(二)BAD OPTFLOW HEALTH

        在此提出的方法是修改BRD_BOOT_DELAY,然后可能在参数表里找不到这个参数。这个是由于固件版本的问题,版本较低的固件,像3.4.X,就没有这个参数,博主本来也用的这个固件,后来索性换了固件,直接烧到目前最新版的4.0.7,查找参数就有了。不过博主觉得这个参数修改前后没啥区别,最主要的问题还是要有测距模块。

        如果此时,还是会有“BAD OPTFLOW HEALTH” 的报错,可能还有一个原因,请听下篇分解。

 

上一篇:iphone编程 EXE_BAD异常


下一篇:11. 缺页中断处理概述