2014-01-21 37 views
0

我執行的Monte-Carlo定位爲我的機器人,它被賦予地圖的環境和它的起始位置和方向。我的方法如下:蒙特卡洛定位的移動機器人

  1. 一致在每一步產生圍繞給定的位置500米的顆粒
  2. 然後:
    • 運動更新所有與里程計的顆粒(我的當前方法是下一頁末= oldX + odometryX(1 + standardGaussianRandom)等)
    • 使用聲納數據(公式爲每個傳感器概率* = gaussianPDF(realReading)其中高斯具有平均predictedReading)
    • 返回的粒子與最大概率作爲升分配權重給每個粒子ocation在該步驟
    • 然後新粒子的9/10從舊的根據權重和1/10圍繞預測位置

均勻採樣的再採樣現在,我寫一個模擬器機器人的環境,這裏是這個本地化如何表現:http://www.youtube.com/watch?v=q7q3cqktwZI

我非常害怕,在較長的時間內機器人可能會迷路。如果將粒子添加到更廣的區域,機器人會更容易丟失。

我期待更好的表現。有什麼建議?

+0

請不要在[多個堆棧交換站點](http://robotics.stackexchange.com/q/2337/37)上提出同樣的問題。如果您不小心問錯了網站,可以將其遷移到正確的網站。 –

+0

將其遷移到機器人 – Neo

回答

5

最大的錯誤是,你認爲權重最高的粒子是你的後路狀態。這不符合粒子濾波器的主要思想。

設定你的里程計讀數更新粒子的就是你的建議分佈。通過考慮最高權重的粒子,你完全忽略了這種分佈。如果你只是在整個狀態空間中隨機傳播粒子,然後用解釋聲納數據的一個粒子最好,那也是一樣的。你只能依靠聲納閱讀,因爲聲納數據非常嘈雜,你的估計非常糟糕。更好的方法是給每個粒子分配一個權重,對權重進行歸一化,將每個粒子狀態乘以它的權重並將它們相加得到你的後驗狀態。

對於您的resample步驟,我建議刪除圍繞預測狀態的隨機樣本,因爲它們會破壞您的提案分佈。生成隨機樣本以從失敗中恢復是合法的,但這些樣本應該分佈在整個狀態空間中,並且明確地不在當前的預測範圍內。

+0

您好!你能看看我的問題和答案嗎? http://robotics.stackexchange.com/questions/11685/markov-localization-using-control-as-an-input – Fabi