Khepera III 工具箱/示例/繪製電池電壓
此示例演示瞭如何記錄電池電壓隨時間變化,並在之後使用 Matlab 繪製它。
啟動 Khepera III 機器人,並確保它連線到您的計算機透過 WLAN 或 USB。在以下文字中,我們假設您的機器人透過 USB 連線。如果您使用 WLAN,只需替換+usb由+RobotID(例如+203).
將 *battery* 程式複製到機器人上
cd Programs k3put +usb battery
您現在基本上已經準備好了。但是,為了測試一切是否正常,登入到您的 Khepera III 機器人
k3go +usb
並輸入
cd your_username ./battery
這應該列印類似於以下內容的內容
$BATTERY,0,7.8372,-0.4445,-0.4453,0.0000,76.0000,26.0000
此 NMEA 訊息中的第二個數字 (7.8372) 報告了電池電壓,以伏特 (V) 為單位,通常在 8.2 V(充滿電的電池)和 6.6 V(幾乎沒電的電池)之間。
我們現在將每秒測量一次電池電壓,並將訊息記錄到計算機上。請注意,您的機器人需要在整個實驗過程中保持與計算機的連線。
在您的計算機上,輸入以下內容
k3run +usb -o battery_measures "/root/your_username/battery -r -w 1000000"
請注意,此指令碼將在後臺啟動程式並立即返回。樣本將儲存在 *k3-192.168.1.2/battery_measures* 檔案中,而不是列印在終端中。(*k3-192.168.1.2* 資料夾由k3run 指令碼自動建立。)
要檢視當前正在儲存的內容,您可以“tail”該檔案
tail k3-192.168.1.2/battery_measures
這將列印輸出檔案的最後 10 行。您甚至可以使用 **-f** 選項來跟蹤測量值
tail -f k3-192.168.1.2/battery_measures
在機器人上,您可以透過輸入以下內容來檢查 *battery* 程式是否正在執行
ps
它列出了所有正在執行的程序。
如果您的機器人正在電池上執行,則電池電壓會下降,直到下降到大約 6.6 V 以下,此時執行 Linux 的 KoreBot 板會崩潰。此時,記錄將自動停止。
如果您希望在機器人崩潰之前停止記錄,您可以透過在機器人上終止 *battery* 程序來手動完成此操作
killall battery
如果您輸入
ps
現在,*battery* 程序應該已經消失。
如果您的機器人沒有在實驗過程中連線到計算機,您可以透過輸入以下內容(在機器人上)將樣本儲存到機器人上
./battery -r -w 1000000 > battery_measures
或者,如果您想同時列印樣本
./battery -r -w 1000000 | tee battery_measures
要終止測量,只需按 Ctrl-C。
要從機器人下載測量結果,請在您的計算機上輸入以下內容
k3get +usb battery_measures
請注意,機器人上的磁碟空間非常有限(只有大約 1 MB 是空閒的)。確保您始終在實驗後下載測量結果,並在機器人上刪除檔案(rm battery_measures)。可以使用以下命令查詢可用磁碟空間df -h.
您可以使用 **-r** 選項(連續測量)執行 *battery* 程式,也可以在每次想要測量電壓時啟動 *battery* 程式,並且每次只進行一次測量。如果您想要在實驗之前/之後進行測量,或者測量之間的時間間隔更長(例如,每 10 分鐘一次),這將非常有用。
要實現這一點,最好編寫一個簡短的指令碼,透過執行以下行,該指令碼會不時地啟動電池程式
ssh root@192.168.1.2 "/root/your_username/battery" >> battery_measures
可以在此示例的資料夾中找到示例指令碼(*measure_alternative2.pl*)。
*battery_measures* 檔案包含 NMEA 0183 記錄,我們需要從中提取當前電壓。這可以使用提供的指令碼 *parse_battery_voltage.pl*(Perl)或 *parse_battery_voltage.py*(Python)之一來完成。這兩個指令碼是等效的——選擇您喜歡的任何一個。我們在這裡將堅持使用 Perl 版本。
以以下方式啟動指令碼
./parse_battery_voltage.pl < battery_measures > matlab_battery_voltage
*matlab_battery_voltage* 檔案現在每行包含一個數字,表示相應測量的電壓。
現在,啟動 Matlab 並輸入
plot_battery_voltage
這是一個非常簡單的 Matlab 指令碼 (m 檔案),它載入 *matlab_battery_voltage* 檔案並繪製曲線。