SwisTrack/示例/校準/自動順序
本示例展示瞭如何透過拍攝在競技場中移動的標記影像來以自動方式校準您的設定。請注意,這要求您擁有將標記移動到競技場中精確已知位置的機制。我們之前已經使用以下方法測試過它:
- 經過良好校準的移動機器人四處移動並使用里程計跟蹤其位置
- 經過校準的 2 軸移動系統
在本章的其餘部分,我們將描述使用 Khepera III 移動機器人的過程。將此方法改編為其他移動機器人(或其他系統)應該相當簡單。
設定您的實驗競技場,就像您要執行實驗一樣。確保相機已正確安裝在其最終位置。此外,建議在最終實驗的相同光照條件和相同標記下執行此過程。如果您在最終實驗中沒有標記,請將一個圓形標記(可以與背景很好地區分)放在 Khepera III 機器人頂部。
從 Khepera III 工具箱 中,將 odometry_goto 程式複製到機器人上。該程式使用車輪的旋轉(里程計)跟蹤機器人的位置。此外,一個簡單的控制演算法將機器人移動到任何給定的位置。確保您正確校準了 Khepera III 機器人的里程計 - 使用里程計校準不佳的過程會導致巨大誤差。在平坦的表面上,經過良好校準的 Khepera III 機器人將在 10 米後積累約 10 釐米的誤差。
還將 motor_initialize 程式複製到機器人上並執行它以初始化電機。
在 示例/校準/自動順序 資料夾中,您會找到一個名為 位置 的檔案,其中包含一系列目標點。這些點描述了一個 5x5 網格,網格點之間的間距為 50 釐米。在每個網格點上,機器人都會停止 3 秒,讓 SwisTrack 拍攝幾張照片。最後,機器人返回原點 (0, 0) 以便驗證里程計誤差。
將此檔案改編為您的競技場的大小和形狀。您也可以使用 create_position_file_grid.pl 指令碼生成這樣的檔案。
準備好位置檔案後,將其複製到機器人上。
執行 SwisTrack 並載入您用於實驗的配置檔案。如果您正在使用任何校準元件,您可以停用它。將 透過 TCP 輸出粒子 元件新增到您的處理管道。
確保您的標記在整個競技場中都能可靠地檢測到,並且沒有其他點被檢測到。稍後手動刪除點非常繁瑣且容易出錯。
請注意,SwisTrack 必須處於手動模式(即,執行 按鈕不能被按下)。
小心地將機器人放置在競技場中的 (0, 0) 位置。注意方向 - 機器人必須指向 (1, 0) 點。
改編指令碼 run_calibration.pl 和 trigger_swistrack_at_target_positions.pl。您將在這些檔案中找到說明,但您主要需要提供機器人和執行 SwisTrack 的計算機的 IP 地址。啟動
./run_calibration.pl | tee calibration_output
機器人將開始移動到第一個目標點,並在那裡等待 3 秒。在此期間,SwisTrack 將拍攝影像併發送機器人的影像位置。這些位置顯示在您的終端和 calibration_output 檔案中。
要解析 calibration_output 檔案,請鍵入
./parse_calibration_points.pl < calibration_output > matlab_calibration_output
要繪製這些點,請啟動 Matlab 並鍵入
data = load('matlab_calibration_output')
plot(data(:, 1), data(:, 2), 'bo');
最後,可以使用以下命令建立 XML 檔案:
./write_xml_file.pl < matlab_calibration_output > calibration_points.xml
...