Khepera III 工具箱/解析程序输出
Khepera III 工具箱(特别是 程序)使用 NMEA 0183 消息作为输出数据格式。NMEA 0183 是一种面向消息的通信协议,源自 GPS 接收器,对于人和计算机来说同样简单易懂。
NMEA 0183 是一种通信标准,规定了电气特性以及数据格式特性。在这里,我们只使用 NMEA 的消息格式。
一条 NMEA 消息(或语句)如下所示
$SPEED,10000,15000
消息总是以 $ 符号开头,后面跟着一个命令和一个参数列表。命令和参数之间用逗号隔开。可选地,消息包含一个尾部校验和(例如,*4D),但 Khepera III 程序没有写入此校验和。
原始的 NMEA 规范不允许命令超过 5 个字符。但是,Khepera III 工具箱没有使用此限制,而是支持更长、更明确的命令名称。
NMEA 消息流可以包含不同类型的消息,例如
$STATE,random_motion
$SPEED,10000,15000
$SPEED,11000,14000
$SPEED,12000,13000
$STATE,follow_wall
$SPEED,5000,5000
这对报告结果非常有用。
NMEA 0183 消息格式具有以下几个优点
- 它是人类可读的。
- 它易于被计算机解析,校验和(如果有)易于计算。
- 因为它使用消息起始字符 ($) 和消息结束字符 (CRLF),你可以随时拆分数据流,解析器将能够重新同步(即读取所有完整的消息)。
- 它以消息类型开头,因此允许不同类型的消息在同一个流中交织在一起。
- 它可以选择性地允许校验和,这在数据通过有损通道传输时很有用。
- 它可以使用搜索和替换转换为 CSV 文件(见下文)。
如果你有一个包含单一类型消息的文件,例如
$SPEED,10000,15000
$SPEED,11000,14000
$SPEED,12000,13000
$SPEED,5000,5000
你可以使用任何文本编辑器将其转换为 CSV。只需将$SPEED,替换为空,并保存文件。生成的可以在几乎所有程序(Matlab、Microsoft Excel 等)中加载。
除了使用文本编辑器,你还可以使用 k3-nmea-to-csv 过滤器脚本将 NMEA 消息转换为 CSV。只需将你的文件通过该脚本管道传输,并提供要提取的消息的 NMEA 命令,例如
k3-nmea-to-csv SPEED < my_nmea_file > my_csv_file
所有非 SPEED 类型的消息将被忽略。
请注意,你可以将此过滤器脚本与任何程序一起使用,以将其输出转换为 CSV。例如,
./infrared_proximity -r | k3-nmea-to-csv IRPROXIMITY
将输出红外距离传感器值作为 CSV。
NMEA 可以很容易地使用 Perl、Python、Ruby 或类似的脚本语言进行处理。示例脚本可以在 示例 部分找到。
在 模块 部分中,有一个用 C 编写的 NMEA 解析器(模块 nmea),可以用于在机器人上解析 NMEA 消息。这对于读取配置文件很有用,例如。