2010-06-18 99 views
6

我正在與一個機器人一起工作,該機器人必須找到對象的方式,並避免遇到一些障礙物時,它必須拿起。A *探路者障礙物碰撞問題

問題在於機器人和機器人需要拾取的物體在探路者中都是一個像素寬。實際上它們更大。通常A *探路者選擇沿着障礙物的邊緣放置路線,有時會使它與它們碰撞,這是我們不希望做的。

我試圖添加一些更多的非步行領域的障礙,但它並不總是工作得很好。它仍然與障礙物碰撞,並且在不允許行走的地方添加太多點,導致它沒有可以運行的路徑。

對於如何解決這個問題你有什麼建議嗎?

編輯:

所以我做賈斯汀大號建議通過增加大量的成本在其周圍產生的folling的障礙: Grid with no path http://sogaard.us/uploades/1_grid_no_path.png

在這裏你可以看到周圍的障礙物的成本,最初的中間的兩個障礙應該看起來就像在角落的,但運行我們的探路者之後好像費用將被覆蓋:

Grid with path http://sogaard.us/uploades/1_map_grid.png

Picture that shows things found on the picture http://sogaard.us/uploades/2_complete_map.png

上面的圖片顯示了圖片上發現的東西。

Path found http://sogaard.us/uploades/3_path.png

這是路徑發現這是我們的問題也被前擁抱了障礙。

The grid from before with the path on http://sogaard.us/uploades/4_mg_path.png

而且隨着成本與地圖上的道路另一張照片。

所以我覺得奇怪的是,爲什麼A *探路者重寫這些場地成本非常高。

當它評估當前字段的打開列表中的節點以查看當前字段路徑是否比打開列表中的路徑短?

這裏是我使用的探路代碼:

Pathfinder.cs:http://pastebin.org/343774

Field.cs和Grid.cs:http://pastebin.org/343775

+0

只是爲了澄清,這是一個物理機器人嗎?你有一個機器人所在的物理場的地圖,你想通過軟件地圖A *,這樣也可以讓你的物理機器人通過物理地圖在相同的方向上移動? – 2010-06-18 11:04:23

+0

是的,這是正確的,我們有一個攝像頭懸掛在機器人上,然後我們粘貼圖像,將圖像轉換爲可喚醒且無法喚醒的地圖,然後將此地圖與開始和結束座標一起送入我們的A *。目前我們是否在障礙物周圍增加了無人漫遊的場地,但這是非常緩慢的。 – Androme 2010-06-18 12:16:21

+0

是的,DoomStone說,我們有一個攝像頭掛在障礙物,物體和機器人的路線上方的三腳架上。我們拍攝這個課程的照片,解析它,以便找到物體和障礙物以及機器人,然後嘗試從機器人到它必須拾取的物體之間建立一條路徑。因此,A *算法返回我們可以運行的每個像素,正如我所說的那樣,如果說對象位於機器人的另一側,通常會擁抱障礙物。 – Cheesebaron 2010-06-18 12:23:49

回答

3

您是否考慮過爲物體附近的像素添加漸變成本?

也許有一樣簡單的線性梯度:

C = -mx + b 

其中x是到最近的被攝體的距離,b是成本右邊界之外,並且m是所述成本模具關閉速度。當然,如果C是否定的,它應被設置爲0。

也許一個簡單的雙曲衰變

C = b/x 

其中b是右側的邊界之外的所需成本,一次。一旦達到某個最低點,就將其限制爲0。

或者,你可以使用指數衰減

C = k e^(-hx) 

其中k爲比例常數,h是衰減的速度。再次,切斷是聰明的。


第二建議

我從未施加A *到像素映射圖;幾乎總是瓷磚。

你可以嘗試大量減少你的瓷磚的「分辨率」?也許每十乘十或二十二十像素集合一個瓦片;瓦片的成本是瓦片中像素的最高成本。

此外,您可以嘗試對您用於A *的最短距離啓發式進行取值。

+0

嘗試了你的建議,我已經編輯了初始文章。 – Cheesebaron 2010-06-19 15:51:02

+0

增加了第二個建議;希望能幫助到你!:) – 2010-06-19 18:13:20

+0

我們發現了一個問題,我們的探路者在每次遇到一個新領域時都會重新計算運動成本,但是您的建議很有效,通過對障礙物周圍的領域進行評分非常高,現在看起來工作得很好。 – Cheesebaron 2010-06-20 09:02:59

2

我做了一個這樣的物理機器人。我的解決方案是每當有左轉和右轉時要向後移動一步。

alt text http://www.freeimagehosting.net/uploads/bb41eb3ba5.png

紅線是我瞭解你的問題。黑線是我爲解決問題所做的。機器人可以直線後退一步,然後右轉。

+0

您可以請詳細說明,也許用繪圖? 我的理解是,這會導致它偷工減料,這不會是一件好事。 – Cheesebaron 2010-06-18 12:59:11

+0

添加圖片。 – VOX 2010-06-19 03:56:11

+0

我們通過做一些光線追蹤來解決問題,它爲我們提供了一條更光滑,更乾淨的路徑! – Androme 2010-06-19 15:39:50

3

您可能會考慮放大考慮機器人尺寸的障礙物。你可以繞過障礙物的角落來解決阻塞問題。然後填充的間隙對於機器人無論如何擠壓都太小。

+0

這聽起來像是對我來說最簡單和最好的解決方案,比目前接受的答案更順利的增加成本。 – mafu 2010-09-17 08:50:25

+0

這個答案比我的更好。 – 2010-10-22 23:20:57