跳轉到內容

Khepera III 工具箱/工具箱/指令碼

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

Khepera III 工具箱中的指令碼資料夾包含一系列指令碼,簡化了與 Khepera III 機器人或機器人艦隊的互動。這些指令碼簡化了常見的和經常使用的任務,例如將檔案複製到機器人上,設定 SSH 公鑰身份驗證或關閉機器人。罕見和複雜的任務始終可以使用 ssh、scp 等命令直接執行。


使用指令碼和獲取幫助

[編輯 | 編輯原始碼]

所有指令碼都以字母 k3... 開頭。因此,如果您在 bash shell 中輸入 k3,然後按兩次 tab 鍵,所有指令碼都會被列出。這對那些您不每天使用的指令碼特別有用。此外,所有指令碼在使用 -h 選項呼叫時都會列印簡短的幫助文字,例如:

k3put -h

選擇機器人

[編輯 | 編輯原始碼]

大多數指令碼需要您指定要使用的機器人。這在命令列中透過 +... 引數完成。有四種方法可以選擇機器人

  • 透過機器人 ID,例如:+203(它轉換為 IP 地址 192.168.141.203)
  • 透過機器人 ID 範圍,例如:+203-205(與以下命令相同+203 +204 +205)
  • 透過 IP 地址,例如:+192.168.141.203
  • 透過機器人或艦隊的名稱,例如:+bob(它在環境變數 K3_BOB 中查詢 IP 地址或機器人 ID)

一個特殊的機器人是 '+usb',它始終轉換為 192.168.1.2,即透過 USB 連線的機器人的地址。

使用機器人艦隊

[編輯 | 編輯原始碼]

如果您經常使用整個機器人艦隊,最好給這個艦隊起一個名字,並將其定義為環境變數。例如,如果您使用機器人 203、204、209、210、211 和 212,請將以下行新增到您的 .bashrc 檔案中

export K3_MYFLEET=+203 +204 +209-212

並重新載入該檔案 (source ~/.bashrc)。從現在起,您可以使用 +myfleet 作為指令碼引數來選擇這些機器人。例如,要將 infrared_proximity 程式複製到這些機器人上,請鍵入

k3put +myfleet infrared_proximity

可用指令碼列表

[編輯 | 編輯原始碼]

核心指令碼

[編輯 | 編輯原始碼]

以下指令碼經常使用

指令碼 描述和示例
k3put 將檔案複製到您的機器人艦隊。在程式資料夾中,您只需提供資料夾名稱,指令碼會自動在該資料夾內查詢二進位制檔案。
k3put +203 +204 battery motor_* motion_*
k3get 將檔案從您的機器人複製到 PC。檔案被放置在 PC 上名為 k3-ROBOTIP 的資料夾中。這些資料夾會在必要時自動建立。如果目標檔案存在,它將毫不留情地被覆蓋!
k3get +203 +204 my_measurements

這將建立兩個資料夾 k3-192.168.141.203k3-192.168.141.204,並將兩個機器人的 my_measurements 複製到各自的資料夾中。

k3go 透過 SSH 連線到一個機器人,並開啟一個互動式 shell。
k3go +203
k3run 在所有機器人上執行命令,並可選地將輸出儲存在 PC 上名為 k3-ROBOTIP 的資料夾中。例如,您可以透過鍵入以下命令記錄兩個機器人上的 10 次紅外距離測量結果:
k3run +203 +204 -o my_infrared_measurements -e my_stderr - /root/your_username/infrared_proximity -r 10

這將建立兩個資料夾 k3-192.168.141.203k3-192.168.141.204,並將程式的輸出儲存到這些資料夾中名為 my_infrared_measurements 的檔案。與k3get一樣,現有目標檔案將毫不留情地被覆蓋。請注意,程式在所有機器人上並行啟動。但是,程式執行沒有同步,即一個機器人可能會在另一個機器人之前啟動程式。啟動時間的差異主要取決於 WLAN 通道,通常在 10-100 毫秒的範圍內,但如果 WLAN 通道負載過重或阻塞,則可能達到幾秒鐘。如果您啟動的程式沒有自動退出,可以使用 k3kill 停止它們。

k3halt 透過在每個機器人上執行 halt 命令來關閉機器人。
k3halt +203 +204
k3ping 連續 ping 一個機器人,例如:
k3ping +203

或報告多個機器人是否存活,透過傳送 3 個 ping 資料包

k3ping +203 +204
k3kill 停止所有機器人上的正在執行的程式。
k3kill +203 +204 infrared_proximity

開發指令碼

[編輯 | 編輯原始碼]

以下指令碼用於開發新程式和模組

指令碼 描述和示例
k3-create-program 在計算機上建立新程式。
k3-create-program my_new_program

請注意,此指令碼不與任何機器人互動。有關更多資訊,請檢視程式開發部分

k3-create-module 在計算機上建立新模組。
k3-create-module my_new_module

請注意,此指令碼不與任何機器人互動。有關更多資訊,請檢視模組開發部分

管理指令碼

[編輯 | 編輯原始碼]

以下指令碼有助於完成一些管理任務,並且不太常用

指令碼 描述和示例
k3-ssh-keysetup 在機器人上新增您的 SSH 金鑰。
k3-ssh-keysetup +203 +204
k3-erase-userfiles 擦除您在所選機器人的資料夾 (/root/your_username)
k3-erase-userfiles +203 +204

可選地,可以指定使用者名稱來刪除這些資料夾,而不是您在機器人上的資料夾

k3-erase-userfiles another_username +203 +204
k3-diskusage 報告每個機器人的磁碟使用情況。
k3-diskusage +203 +204

篩選指令碼

[編輯 | 編輯原始碼]

以下指令碼將程式輸出轉換為另一種格式

指令碼 描述和示例
k3-nmea-to-csv 將特定型別(命令)的 NMEA 訊息轉換為 CSV(逗號分隔值)格式。
k3-nmea-to-csv IRPROXIMITY < my_nmea_file > my_csv_file

程式輸出解析部分中可以找到更詳細的描述

華夏公益教科書