首先 - 我已經通過類似的前瞻性的問題看,但他們並沒有解決我的問題,這是沒有重複的(我希望)。
我正在用Arduino Nano來構建和編程機器人,它應該可以解決迷宮問題。它被放置在迷宮中的某個地方,然後必須找到一件物品。下一次它應該直接進入該項目(它不一定是最短的路,但不允許死路一條)。
沒有必要知道整個迷宮因爲只要他有一個辦法,該項目是好的。正如我所說,我不需要最短的路。
迷宮是2D,我只是把黑色磁帶上的白色表和機器人應該使用線傳感器跟隨線。
有沒有其他傳感器來定位自己。首先,我想到了製作一個2D陣列,迷宮中的每個領域都是一個領域。但是由於它只是一個普通的線傳感器,機器人並不知道一條直線是一個還是兩個字段,整個事情都不起作用。
我也試過DFS或類似的東西,但在這裏類似的問題。迷宮是圓形的,機器人應該怎麼知道節點已經被找到了,它是一樣的?
如果有人有想法,這將是很好的!如何繪製迷宮作爲機器人?
2
A
回答
0
雖然方向有點模糊,但可以通過使用決定。決定必須是可重現的。它可以通過一個類來表示:
public class Decision {
boolean[] directions = new boolean[2]; // 0 = left, 1 = straight, 2 = right
// at least 2 of them should be true or it is no decision
int path; // 0-2 to mark the current path
}
創建的決策堆棧。
如果只有一個開頭(後面不計,並在以後處理)可能的方向,再往前走,直到你遇到的第一個決定。
推棧上所有可能的方向決定。
設置
path
第一種可能的方向和移動的方式。如果你結束了另一項決定:繼續在3
如果您發現該令牌:中止,你發現了沒有死角可再生方式。
如果這是一個死衚衕:返回到先前的決策節點(第一個一回的方式),並與6
繼續流行的決定,並嘗試下一個可能的方向(設置新路徑和推動決策),並在5
繼續除非你已經嘗試了所有的方向,然後搬回另一項決定,並與6
繼續。如果沒有(在特殊情況下,上面提到的更多的決定,我們一開始就走錯了方向):繼續前進,直到你遇到第一個決定並繼續這意味着你需要另一個布爾變量來表明你是否應該在開始時向右後退。
從
left
回來時你必須要小心,並且想嘗試straight
接下來你必須左轉,不要直行。所以有一點計算涉及。
如果您在開始時以錯誤的方式開始,該算法對於循環形式的決策有問題。我認爲這可以通過設置一個上邊界來逃脫,例如如果您還沒有找到令牌並且遇到了30個決策節點(向前),那麼您可能正在繞圈運行,因此請回頭開始,現在不要按增加順序嘗試方向,而應按降序嘗試它們。
相關問題
- 1. 如何使用openGL爲iPhone開發繪製迷宮?
- 2. 如何爲迷宮/迷宮/地牢建造牆壁?
- 3. 我會如何將我的3D迷宮轉換爲2D迷宮?
- 4. 迷宮/迷宮遊戲
- 5. 迷宮不工作?
- 6. 如何在迷宮求解應用程序中繪製「軌跡」
- 7. C:生成隨機迷宮
- 8. JavaScript的迷宮發電機
- 9. 試圖製作一個迷宮
- 10. 機器人如何從ID在繪製
- 11. 牆迷宮求解器
- 12. 構建迷宮
- 13. 國王迷宮
- 14. 最佳多人迷宮生成算法
- 15. 遞歸求解一個隨機迷宮
- 16. Python迷宮遞歸
- 17. MatLab迷宮求解
- 18. iPhone作爲機器人控制器
- 19. 迷宮算法KINDA的作品。一些迷宮,並非全部幫助
- 20. 在Python中讀迷宮文件並逐行打印迷宮行
- 21. 遞歸迷宮算法(在迷宮中旋轉件)
- 22. YUI迷宮:我如何讓CSS縮小?
- 23. 如何在迷宮中追溯...?
- 24. 如何在NetLogo中創建迷宮牆?
- 25. 如何製作Python IRC機器人?
- 26. 我的符號迷失在迷宮中
- 27. 迷宮死衚衕過濾器檢查
- 28. 遞歸蠻力迷宮求解器Java
- 29. WPF佈局/地圖/迷宮發生器
- 30. 迷宮算法路徑查找器
「機器人應該使用*線傳感器來跟蹤線*。」我只是好奇 - 線傳感器如何對2或3路分裂做出反應? –
它有3個獨立的傳感器。每一個都有不同的價值,只有中間的一個在線。如果在左邊或右邊有一個新的方法啓動其中一個傳感器,左邊或右邊將會看到一個黑色,同時懸停在該線上,這樣就會注意到分割 – po0l
如何隨機選擇分支? – melpomene