跳轉到內容

Khepera III 工具箱/解析程式輸出

來自華夏公益教科書,開放的書籍,開放的世界

Khepera III 工具箱(特別是 程式)使用 NMEA 0183 訊息作為輸出資料格式。NMEA 0183 是一種面向訊息的通訊協議,源自 GPS 接收器,對於人和計算機來說同樣簡單易懂。

NMEA 0183 訊息

[編輯 | 編輯原始碼]

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 的優勢

[編輯 | 編輯原始碼]

NMEA 0183 訊息格式具有以下幾個優點

  • 它是人類可讀的。
  • 它易於被計算機解析,校驗和(如果有)易於計算。
  • 因為它使用訊息起始字元 ($) 和訊息結束字元 (CRLF),你可以隨時拆分資料流,解析器將能夠重新同步(即讀取所有完整的訊息)。
  • 它以訊息型別開頭,因此允許不同型別的訊息在同一個流中交織在一起。
  • 它可以選擇性地允許校驗和,這在資料透過有損通道傳輸時很有用。
  • 它可以使用搜索和替換轉換為 CSV 檔案(見下文)。

使用文字編輯器將 NMEA 訊息轉換為 CSV

[編輯 | 編輯原始碼]

如果你有一個包含單一型別訊息的檔案,例如

$SPEED,10000,15000
$SPEED,11000,14000
$SPEED,12000,13000
$SPEED,5000,5000

你可以使用任何文字編輯器將其轉換為 CSV。只需將$SPEED,替換為空,並儲存檔案。生成的可以在幾乎所有程式(Matlab、Microsoft Excel 等)中載入。

使用 k3-nmea-to-csv 將 NMEA 訊息轉換為 CSV

[編輯 | 編輯原始碼]

除了使用文字編輯器,你還可以使用 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

[編輯 | 編輯原始碼]

NMEA 可以很容易地使用 PerlPythonRuby 或類似的指令碼語言進行處理。示例指令碼可以在 示例 部分找到。

在機器人上解析 NMEA

[編輯 | 編輯原始碼]

模組 部分中,有一個用 C 編寫的 NMEA 解析器(模組 nmea),可以用於在機器人上解析 NMEA 訊息。這對於讀取配置檔案很有用,例如。

華夏公益教科書