在无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在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固件的两种飞控调试信息的输出方法,希望对大家有所帮助。
全部0条评论
快来发表一下你的评论吧 !