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是一样的。

    最终的显示效果如下:

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

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

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

    最终的显示效果如下:

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

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

京ICP备19049723号   |   京公网安备 11010502039327号