2010-05-25 81 views
11

我有一個充滿障礙的領域,我知道他們在哪裏,我知道機器人的位置。使用路徑尋找算法,我計算機器人遵循的路徑。通過路徑引導機器人

現在我的問題是,我正在引導機器人從網格到網格,但這會產生一個不太平滑的運動。我從A開始,將鼻子轉到B點,直到我到達B點,沖洗並重復,直到達到最終點。

所以我的問題是:在這樣的環境下使用什麼樣的技術來獲得平滑的運動?

機器人有兩個輪子和兩個電機。通過反向旋轉電機來改變電機的方向。

編輯:我可以改變電機的速度基本上機器人是一個arduino加ardumoto,我可以提供0-255之間的任何方向上的電機值。

+2

如果你想要做的是平滑的運動,試圖計算樣條曲線的路徑應遵循 – 2010-05-25 14:15:41

+0

@steven其實這就是我想要的,但我沒有線索是如何將曲線映射到電機速度。 – 2010-05-25 14:24:10

+0

這將是一個基於沿當前軌跡的曲線斜率的比率;基本上,一條直線的車輪與發動機的動力比爲1:1,左右分別爲0:1和1:0。因此彎曲的圈數是分數,因此向左輕微轉動可能是0.75:1。 – 2010-05-25 14:33:24

回答

8

您需要針對差動驅動機器人的反饋線性化。這個document在2.2節解釋它。我已經包括以下主要部分:

爲 項目所需模擬的機器人是二FF erential驅動機器人 有界速度。由於 是非完整的,因此鼓勵學生使用反饋線性化將 從其算法中的運動控制輸出 轉換爲控制不同的驅動機器人的 。所述 變換如下:

Transformation

其中,v,ω,Xÿ是線性的, 角,和運動速度。 L 是一個與機器人的輪距尺寸成比例的設定長度。

+0

謝謝!想想我會在這裏重新發布,而不是鏈接到緩存副本。 – Jacob 2010-05-26 13:50:31

1

我對這個問題的初步想法(我在工作中很不能花太多時間):

這取決於你想要或需要您的角落是(這將取決於有多少距離有多緊張你路徑查找器可以從障礙物中提供給您)

考慮到機器人的寬度,您可以根據每個車輪的速度計算轉彎半徑。假設你想盡可能快地走,並且打滑不是問題,那麼你總是將外輪保持在255,並將內輪減小到能夠提供所需轉彎半徑的速度。

給定您的路徑上的任何特定轉彎角度以及您將使用的轉彎半徑,您可以計算出您將減慢內側車輪的距離。

5

一個控制算法我有很好的結果,是pure pursuit。基本上,機器人試圖移動到機器人前方固定距離的路徑上。所以當機器人沿着路徑移動時,前視點也會前進。該算法通過將可能的路徑建模爲弧來補償非完整性約束。

更大的前視距離將創造更平滑的運動。然而,較大的前視距離會導致機器人切角,從而可能與障礙物碰撞。您可以通過實現稱爲矢量場直方圖(VFH)的反應控制算法的想法來解決此問題。 VFH基本上推動機器人遠離關閉的牆壁。雖然這通常使用某種測距傳感器,但您可以推斷出障礙物的相對位置,因爲您知道機器人姿態和障礙物位置。

0

優化方法是處理這種問題的一種非常通用的方法。

使用您計算的路徑作爲通用非線性優化算法(您的選擇!)的輸入,其成本函數由回答軌跡與輸入軌跡的緊密程度以及遵守非完整約束組成,以及任何其他限制,你想強制執行(例如遠離障礙)。優化算法也可以用從原始軌跡構建的軌跡來初始化。

Marc Toussaint的機器人課程筆記是這種類型的方法很好的來源。具體見第7講: http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/