跳轉到內容

Khepera III 工具箱/示例/測量實際速度

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

本示例演示如何使用地面感測器實驗測量機器人的實際速度。將一張紙放在地板上,機器人以要測量的速度穿過紙張。機器人使用地面感測器檢測何時進入和離開紙張,並記錄兩個時間。由於紙張的長度是已知的,因此可以計算出實際速度。

啟動 Khepera III 機器人並確保它連線到您的計算機透過 WLAN。在以下說明中,我們假設您正在使用機器人 203。將一張白紙貼上在深色地板上,並將機器人放置在紙張前面。

motor_initializemotor_stopinfrared_proximity 程式複製到機器人上

cd Programs
k3put +203 motor_initialize motor_stop infrared_proximity

然後,將 measure_real_speed 程式從示例資料夾複製到機器人上

cd ../Examples/measure_real_speed
k3put +203 measure_real_speed

登入機器人

k3go +203

並輸入

cd your_username
./motor_initialize

以初始化電機。

在進行速度測量之前,我們需要配置進入和離開紙張時的地面閾值,以及紙張的大小。

要找出地面閾值,請輸入

./infrared_proximity

一次是機器人放在白紙上,另一次是機器人放在深色地板上。您將獲得如下結果

# On the dark floor
$IRPROXIMITY,0,12496,44,9,8,15,6,43,3,69,48,3195,3021

# On the white sheet of paper
$IRPROXIMITY,0,21438,97,29,28,52,56,127,20,120,99,3977,3973

其中每次測量中的最後兩個數字屬於地面感測器。進入紙張時使用的閾值 (--floor-threshold-on) 應該略低於在白紙上測量的值,在本例中為 3900。離開紙張時使用的閾值 (--floor-threshold-off) 應該略高於在深色地板上的測量值,在本例中為 3200。

要測試閾值是否有效,將機器人放置在紙張前面約 5 釐米處,並啟動

./measure_real_speed --speed 10000 --floor-threshold-on 3900 --floor-threshold-off 3200

機器人應該報告它何時進入和離開紙張,並在紙張後約 5 釐米處停止。如果結果不令人滿意,請調整閾值並再次測試。motor_stop 程式可能有助於在 measure_real_speed 程式未檢測到紙張邊緣的情況下停止機器人。

執行實驗

[編輯 | 編輯原始碼]

使用文字編輯器開啟 run.pl 並調整地面閾值。如果您沒有使用 A4 紙張(縱向),請調整紙張大小。

將機器人放置在紙張前面,並啟動

./run.pl

機器人現在將以不同的速度多次在正向和反向方向穿過紙張,結果儲存在同一資料夾中的名為 run_results 的檔案中。

解析結果檔案

[編輯 | 編輯原始碼]

輸入以下命令以處理結果檔案

./parse_results.pl < run_results > matlab_run_results

在 Matlab 中繪製結果

[編輯 | 編輯原始碼]

啟動 Matlab 並輸入

plot_results

除了繪製不同速度設定點的實際速度外,這還將計算並繪製速度係數,即實際速度與速度設定點的比率。

結果速度係數約為 7.1e-6 m/(s * unit),這意味著速度設定點為 10000 對應於 7.1 cm/s。

華夏公益教科書