MOOS程序解析记录(6)pLogger
最近在使用数据记录的时候,发现了自己对于PLogger并不是很熟悉,很多语法规则并不是很懂,于是便升起了记录一下该模块的心思,虽然这个模块并不能算多重要,但是在针对航行数据记录以及处理时没有它是万万不行的。
简介一下其主要作用: pLogger进程旨在记录MOOS会话的活动。 它可以配置为记录任意数量MOOS变量的一小部分或每次发布。它是一个重要的MOOS工具,这在任务后的分析、数据收集和任务后的重播方面是非常重要的。
文章目录
基本格式
上图便是log进行记录时的基本格式了,其中varname表示变量的名称,period是在记录给定变量是所设置的最小时间间隔。例如,如果varname = INS YAW和period = 0.2,那么即使变量以20Hz发布,它也只会以5Hz记录。可选项NOSYNC作为一个标志位,表明该变量不应该记录在同步日志(synchronous logs)中。可选项MONITOR也是一个可选项,可选的MONITOR标志告诉pLogger,如果这个变量没有至少每10秒记录一次,就发送一个通知。(主要是用来监视变量是否正常记录)。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Logging Session
对于每个日志会话,日志记录器将创建一个新目录,并将所有记录的文件放在该目录中。这些文件通常是一个日志文件、一个slog文件、一个系统日志文件、一个任务文件(moos文件)的副本,还有一个hoof文件(如果pHelm正在运行)(MOOS-IVP中则是behavior文件)。可以通过将变量LOGGER_RESTART发布到MOOSDB来创建新的日志会话。这样在实际实验过程中,可以将用遥控器操作时的记录表和实际执行任务时的记录表区分开来。
二、Log File Types
Log文件有两种类型,一种是alog文件类型(asynchronous),另外一种是slog文件类型(synchronous)接下来来讨论一下这两种文件类型。
1.Synchronous Log Files
上图为开启同步记录的格式,需要在配置块中进行填写,填写true开启同步记录,后面的period可以对记录周期进行设置,设置为0,则是按照最小周期进行记录。同步记录生成一个数字数据表。文件中的每一行都对应一个时间间隔。表中的每一列表示给定变量随时间的广泛演变。行与行之间的时间(以及是否需要同步日志记录)由period指定。
如下图所示,该图即为同步时间记录,其中某一时刻某些变量如果没有值,那么会记录为NaN格式。
2.Asynchronous Log Files
异步日志记录是彻底的。该机制被设计成能够将每个增量记录到moodb。使用期间变量可使特派团设计者避开这一最终限制,并以最高频率记录变量。异步日志记录的关键属性可以列举如下:
1 同时记录字符串和数字数据。
2 以列表格式记录数据-每行一个通知。
3 只有当变量被写入时才会产生条目。
异步日志文件被设计成与回放工具一起使用(例如uPlayback或其他目的构建的可执行文件)。尽管字符串和数字数据的处理会给程序的复杂性增加一点开销,但是在任务结束后的重放/再处理过程中,能够减缓、停止和加速时间所带来的实用程序收益是巨大的。(uPlayback后续有时间再进行学习研究)其格式为:
产生的数据记录表如下图所示:
二、System Log File
ylog这是第三种记录文件的类型,此消息仅包含包含在MOOS_SYSTEM和MOOS_DEBUG消息中的数据。这两种消息都可以通过编辑CMOOSApp::MOOSDebugWrite类来在MOOSapp 中进行编写,可以应对app不同的报错情况。
1.Dynamic Logging Configuration
关于动态变量的记录,有一些变量是在某些app开始运行之后才会产生的,如果要记录这些动态变量,那么使用到下面的语法:
其结构和格式跟上面的语法类似,这里就不详细进行解读了,记录的数据将会被存储到异步数据记录文件中去(alog),但是动态日志记录使得每一行在结束时会出现未知的列数,为了使得数据读取时的顺利,可以在配置块中增加约束条件:
这里为运行时请求的变量保留了30列。当日志记录器接收和处理动态请求时,这些未声明的列将被使用,直到没有剩下任何列。此时,任何未来的动态日志请求仍将被接受,但已记录的变量不会出现在slog文件中(它们当然会出现在/italog文件中)。无人认领的插槽将被标记为DYNAMIC X,直到认领为止,并且总是有NaN条目。
2.Specifying Log File Names and Locations
指定文件名称和位置:每次日志记录器启动时,它都会在日志根目录中创建一个新目录(如果需要的话),并在该目录中执行日志记录。pLogger在日志文件配置方面非常灵活,由以下变量控制。
GlobalLogPath:这是一个文件作用域变量(即不在任何进程配置块中)。如果它出现在任务文件中,则它指定将在其中创建日志文件的根目录。
Path:这指定了根日志目录,但只在没有设置GlobalLogPath时使用(参见上面)
File:这是给记录文件(alog/slog和ylog)的文件名。
FileTimeStamp:如果将此设置为true,则每个记录的文件(以及创建的包含目录)的名称将是file变量和时间戳的连接。如果FileTimeStamp为false,则每次运行日志记录器时,它将写入同一组日志文件并销毁原始内容。这是设计好的;在开发时,不要让无用的日志文件占用机器上更多的空间,这通常是有用的。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。