以在内部传感器中添加记录滤波前后数据的消息块为例。在其他地方加入日志也是类似的,根据具体需求变化。
一、声明定义消息体(AP_InertialSensor/LogStructure.h)
其中,
LOG_TEST_MSG是消息类型,需要在AP_Logger/LogStructure.h中的LogMessages结构体中定义。(该枚举类型最大值不能超过255,即消息类型不能超过255种)
log_TEST是承载数据的消息结构体。根据具体情况定义。
"TEST"是最终显示在LOG中的消息名。
"QBffffffB"是数据类型,具体含义可见AP_Logger/LogStructure.h
"TimeUS,N,x,y,z,x_flt,y_flt,z_flt" 是消息体中每一个变量显示的名字。
"s#EEEooo-" 是每一个变量的单位
"F-000000-"是当量,每个变量对应乘以某一个倍数。
注意:
1."TEST"这个字段的字符不能超过四个,否则在日志中显示不出来这个消息块。
2.双引号"Time,I ... "中的内容不能太长,否则在日志中无法显示
二、定义一个调用的函数
我在AP_InertialSensor/AP_InertialSensor.h中声明了一个函数Write_TEST_Raw_Filtered,用来调用AP::logger().WriteBlock();
在AP_InertialSensor/AP_InertialSensor_Logging.cpp中定义了该函数。
注意:pkt{}中的gyro_x等变量是在log_TEST结构体中定义的,命名要一致
三、在合适的位置调用
我在AP_InertialSensor/AP_InertialSensor_Backend.cpp中的_notify_new_gyro_raw_sample()函数中调用
四、实验结果
编译下载运行,查看日志。
发现右下角多了一个TEST消息体,里边记录的便是陀螺仪滤波前后的数据啦