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 訊息。這對於讀取配置檔案很有用,例如。