ardupilot新增加自定义的LOG日志
环境描述
1.ardupilot软件版本:copter-4.2.2
2.编辑软件:VS code
3.编译软件:Cygwin64
4.地面站:Missionplanner
添加步骤
这里我们以日志中的是DU32为参考进行自定义日志的写入和查看。
1.打开LOG.cpp文件,DU32在Log.cpp中的数据结构体为log_Data_UInt32t,所以我们在搜索框输入log_Data_UInt32t点搜索:
在三个cpp文件中有调用,本人用的是copter,所以打开对应的log.cpp文件,然后仿照结构体log_Data_UInt32t,添加自己的数据结构体log_Data_test,结构体如下:
struct PACKED log_Data_test {
LOG_PACKET_HEADER;
uint64_t time_us;
float data1;
float data2;
};
然后仿照Log_Write_Data()新建一个函数给结构体赋值
void Copter::Log_Write_Log_test()
{
if (should_log(MASK_LOG_ANY)) {
struct log_Data_test pkt = {
LOG_PACKET_HEADER_INIT(LOG_DATA_TEST_MSG),
time_us : AP_HAL::micros64(),
data1 : 1,
data2 : 15
};
logger.WriteCriticalBlock(&pkt, sizeof(pkt));
}
}
添加LOG_DATA_TEST_MSG在define.h中定义
Log_Write_Log_test函数在copter.h中声明:
在const struct LogStructure Copter::log_structure[]数组中添加在日志中显示的名字、类型及单位,如下:
{ LOG_DATA_TEST_MSG, sizeof(log_Data_test),
"TEST", "Qff", "TimeUS,Data1,Data2", "s--", "F--" },
具体参数描述在LogStructure.h中有定义:
然后找到Log_Write_Data()函数调用的地方,在coper.cpp线程one_hz_loop()中,将我们新建的函数Log_Write_Log_test();,放在里面调用。
编译,这里我用的飞控板是自制的,具体编译流程,自行百度
下载
打开日志记录,运行一段时间,下载日志,打开查看就可以看到我们的测试数据在里面已经显示。
如有问题,请留言谈论。