什麼是里程計?
在像 Robo-Rat 競賽這樣的搜尋和檢索挑戰中,機器人瞭解自己的位置至關重要。知道你在哪裡可能看起來並不困難,但正如你將看到的,它實際上可能非常困難。人們可以使用他們敏銳的視覺、長期記憶和對周圍環境的意識來定位自己。然而,機器人天生並不具備這些複雜的能力,特別是您將在本課程中開發的那些機器人。里程計是機器人用來定位其周圍環境的一種技術。
什麼是里程計?
里程計是指使用運動感測器測量機器人相對於給定位置的位置變化。例如,如果一個機器人直線向前移動,並且知道其車輪的直徑,它可以透過計算車輪旋轉次數來確定它已經移動了多遠。機器人的驅動輪通常配備有軸編碼器,每個旋轉產生預定的脈衝數。這些脈衝由 CPU 計數,CPU 可以計算出行駛的距離。
示例
想象一個機器人在車輪或腿部關節上裝有旋轉編碼器。在向前移動一段時間後,它會停下來詢問它已經移動了多遠。如果它知道車輪的直徑並且可以測量車輪旋轉了多遠,它就可以計算出距離。
里程計也常用於火車運營。當火車位於兩個固定感測器之間時,通常使用里程計來確定火車的相對位置,而穿過軌道上的固定感測器通常會為火車提供其絕對位置。
用途
里程計可以與位置估計器一起使用,以提供更好的估計。
由於機器人足夠穩定以能夠識別地標,因此它們被用於在受限區域進行測繪。
當沒有其他來源可用時,有幾種情況除了里程計之外沒有其他導航資料可用。
侷限性
儘管里程計是移動機器人常用的一種位置感測器,但它也存在一些缺點。由於它是一種累積測量,因此任何感測誤差都會隨著時間的推移而加劇。為了避免錯誤的顯著累積,機器人可能需要偶爾使用其他感測器來識別其精確位置。
移動機器人應用中的一個關鍵問題是車輛的精確定位。為了實現自主導航,機器人必須持續瞭解其位置。因此,研究人員和工程師建立了許多方法和系統用於移動機器人定位,包括輪式里程計、雷射/超聲波里程計、GPS、GNSS、慣性導航系統 (INS) 和視覺里程計 (VO)。
里程計誤差可能是由以下原因造成的:
- 車輪直徑測量錯誤
- 具有不同車輪直徑的多輪驅動系統
- 使用驅動軸編碼器時脈衝計數出現問題
- 里程計處理速度慢(僅考慮累積計數,不考慮動態計數差異)。
里程計的工作原理

上圖顯示了差動驅動機器人的兩條可能的運動路徑(每個輪子由單獨的電機驅動)。編碼器值位於輪子旁邊。在左圖中,機器人沿直線移動,確保編碼器值始終相同。然而,右邊的機器人遵循蛇形路徑。當綠色輪編碼器讀數為 80 而紅色輪編碼器讀數為 40 時,機器人正在向右轉彎。
然而,即使機器人在遵循 S 形曲線時行駛了更長的距離,機器人最終位置的編碼器讀數也相同,因為它們大於左側的讀數。這是因為機器人隨後向左轉彎。如果您的控制程式僅考慮最終位置的編碼器,它會認為機器人沿直線移動。這就是為什麼緩慢的編碼器處理會導致錯誤的原因。除非您的機器人機械地保證沿直線移動,否則您應該儘快處理里程計資訊。
如何減少里程計誤差
- 窄輪距車輛更容易出現方向錯誤。
- 同步驅動架構提供了更精確的里程計。
- 用於里程計的車輪應薄且不可壓縮。
- 承載相當大一部分重量的轉向輪容易滑動。
結論
總而言之,里程計是跟蹤機器人絕對位置的過程。運動演算法可以使用此資訊來驅動到位置或轉向絕對角度。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP