APM飞控固件的两种输出调试信息的方法

描述

在无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在APM固件中有如下两种常用的输出调试信息的方法:

一、使用Mavlink的“STATUS TEXT”帧来发送调试信息

这个Mavlink帧的ID号为253,内部包含了50个字节的定长数据段,也就是说我们使用这个帧最多一次只能输出50个字节的字符。其调用方法如下:

gcs().send_text(MAV_SEVERITY_CRITICAL, "NFCY test! %.2f", 1.234f);

其中第一个参数定义的是要发送的数据的紧急程度,如果定义的是“MAV_SEVERITY_CRITICAL”,则要显示的信息会同时在MissionPlanner的姿态窗口和消息窗口中显示。这个函数后面两个参数的用法与C语言中的printf是一样的。

最终的显示效果如下:

APM

二、使用“hal.console->printf”来发送调试信息

相对于第一种方法,这种方法在效率和灵活性上更接近C语言的printf,其输出直接发送到飞控USB虚拟出的串口上,因此一般直接用串口调试助手查看其输出。其用法示例如下:

hal.console-  >printf("\\n\\n NFCY test! %.2f \\n\\n", 1.234f)

最终的显示效果如下:

APM

由上图可知,这种输出方法更接近平常我们用的单片机串口调试方法,但是由于默认情况下USB接口虚拟出的串口同时也输出Mavlink帧(至少有1Hz的Mavlink心跳帧),二者混在一起,看起来比较麻烦。不过可以通过关闭Mavlink输出来解决。

以上就是APM固件的两种飞控调试信息的输出方法,希望对大家有所帮助。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分