写在前:2021年9月下旬开始摸索px4飞控的二次开发,从C++零基础到第一个修改算法后的版本稳定运行,大概用了2个月,从12月初改用新版本px4源码到现在又过去了约1个月,期间踩了各种各样的坑,可以说历尽坎坷,一言难尽。网上能查到的还好办,参考-尝试即可,头疼的是实际中还遇到很多搜遍全网都没有的奇奇怪怪问题,有些都不知从何下手。在此简要记述经过摸索基本解决了的问题和方法,以备忘和分享。可能有些问题是由于我的基础太过薄弱,大神勿笑,如果我的理解有误,请多指教。
1.对空值判断语句错误使用,导致循环输出结果为空
px4 V1.12.3版本中,有许多对空值NAN的操作,并且一个数学表达式中,如果一个值为空,则最终结果也为空,这就导致自己写的一个循环输出结果始终未空。要解决这个问题就需要判断一个值是否为空,如果是,就把该值设为0。首先我是这样写的
float a;
if(a==NAN){a=0;}
自以为写的没问题,但输出始终为空的问题并未解决,头疼了许久。
后来才知道,要比较一个变量是否是空,不能用类似a==NAN这样的语句,因为空不与自身相等。要实现判断一个变量是否是空,可以用全局函数IsNan(),比如可以这样写
float a;
if(IsNan(a)){a=0;}
即实现了如果a是空,则将a赋为零的功能。