我正在計算機器人在具有多邊形障礙物的平面上的最短路徑。一切正常,快速,沒有問題。但是,如何平滑路徑使其變得曲線? 下面是用直線連接頂點的路徑的圖片。 P.S 機器人只是一個圓圈。機器人的平滑路徑
機器人的平滑路徑
回答
This paper可能是有用的。看起來這是一個不平凡的問題。摘要:
自動圖形抽屜需要計算一個簡單的多邊形的版本之間的路徑,除了留在內部需要顯示某些美學特性。其中一些要求包含一些關於多邊形形狀的信息,而不要離實際的最短路徑太遠。我們提出一種算法來計算局部凸區域,該區域「包含」簡單多邊形的兩個頂點之間的最短歐幾里得路徑。該區域具有「跟隨」最短路徑形狀的邊界形狀。區域內部的三次貝塞爾樣條曲線在兩個給定頂點之間提供了「短而平滑」的無碰撞曲線。獲得的結果似乎美觀愉快,所使用的方法可能是獨立的利益。它們是元素和可執行的。圖7是我們當前實現產生的示例輸出。
我試圖讓現實的飛行序列在Teragen中呈現時,我曾經玩過很多路徑計算技術。我最初嘗試使用Bézier Curves。
但發現(至少飛行),他們是沒有多大用處的。原因是曲線之間的曲率是不連續的,所以不能用來計算飛越的連續正確的傾斜角度。另外,很難確定曲線不會與山脈相交。
我離題了。我最終決定的方式是一個簡單的基於質量彈簧的路徑,並放鬆下來。
將路徑細分爲許多小段,越多越好。對於每個點,將其沿一個方向稍微移動一點,以減少它與其鄰居之間的角度,並避開障礙物。重複多次,直到路徑安定下來。
k = 0.01 // Adjust the values of k and j to your liking.
j = 0.01 // Small values take longer to settle. Larger values are unstable.
For each point P
normal_vector = vector_to_previous_point + vector_to_next_point
obstacle_vector = vector_to_nearest_obstacle
obstacle_distance = magnitude(obstacle_vector)
obstacle_vector *= obstacle_distance^2
P += (normal_vector * k) - (obstacle_vector * j)
這些種類的有限元放鬆技巧的好處是,你可以在這個各種約束的編程到它,路徑將解決他們之間的一些妥協,這取決於權重(J和K案件)。
如果您是機器人技術人員,爲什麼不來加入Robotics Proposal?
謝謝,你的方法一見鍾情,雖然我仍然需要實現和測試它。而且,哦,是的,我會支持該提議;) – nullpotent 2012-10-17 22:56:02
難道你不能只在路徑的實際執行中使路徑跟隨算法嗎?如果按照原樣離開路徑(即連接直線),實現約1米的前視距離(該值取決於機器人的速度以及填充配置空間以避開障礙物的數量)計算每個車輪速度的控制算法將自動消除路徑,而無需進行預處理。
下面是我的意思是一個快速圖像...紅色虛線表示機器人在根據前視距離控制點時實際執行的路徑。前視距離僅計算路徑下方某點的任意距離。
同樣,你不用擔心的唯一的事情是多少你填充的障礙,以確保你避免撞上他們。通常情況下,我相信障礙物的面積會被機器人半徑的一半填充,但如果您控制到前視距離,則可能需要稍微增大一點。
最後,我選擇了與此處介紹的解決方案相同的解決方案。它需要一點調整,但它的工作。謝謝你;) – nullpotent 2013-09-26 12:45:57
在機器人的情況下,我們無法預知未來。我們必須知道每個點只知道機器人的位置和障礙物。用於製作最小長度曲線路徑的常用方法是用機器人建模一個圓,然後移動圓以保持與障礙物接觸。只需保持一個半徑,並且轉彎將是曲線。
如果您想要曲線而不是最小距離,請嘗試使上述半徑與距離多邊形頂點的距離成比例。
貝賽爾曲線的想法只能用於回顧彎曲的路徑。它改變了機器人的位置。通常情況下,機器人改變過去稱爲「作弊」。避免必須改變已經走過的道路的一種方法是展望未來。但機器人能看到四周的角落嗎?你必須更好地指定規則。
- 1. 機器人從路徑
- 2. 繪圖機器人路徑
- 3. 平滑svg路徑連接
- 4. 如何平滑路徑(android)
- 5. 計數機器人路徑(python)
- 6. 通過路徑引導機器人
- 7. 機器人如何通過路徑
- 8. 機器人路徑規劃 - A *(星)
- 9. SKSpriteNode在隨機路徑上的平滑運動
- 10. 在地圖上平滑地動畫攝影機路徑
- 11. 使用SKAction平滑路徑角落followPath
- 12. AndEngine沿路徑平滑旋轉
- 13. 使用滑翔機器人
- 14. 在機器人中不平滑,落後的動畫
- 15. 基於四叉樹的astar路徑規劃的路徑平滑算法
- 16. 如何通過Java機器人進行平滑滾動?
- 17. 水平機器人:animateLayoutChanges =「真」動畫不光滑
- 18. 聊天機器人平臺
- 19. 在ASP.net平機器人mvc
- 20. 找不到機器人路徑查找的解決方案
- 21. 微軟機器人工作室和絕對路徑的問題
- 22. 路徑測試套件文件中的機器人框架
- 23. php本地機器路徑
- 24. 隨機平滑圖
- 25. 平滑徑向漸變
- 26. 平滑多人運動
- 27. 如何平滑WPF線段的路徑圖
- 28. 如何平滑貝塞爾路徑中的連線?
- 29. 如何繪製位圖的平滑路徑,而不
- 30. 使用絕對路徑錨鏈接的平滑移動
第一步:您需要定義機器人的轉彎半徑。如果它可以有效地開啓一角錢,爲什麼你會希望它走彎曲的道路? – 2011-04-05 18:33:53
你說得對。我知道有人會問我。我的機器人將有一個完整的轉彎半徑,但我想知道它是如何完成的,即使如此。 「如何用曲線連接點」本來就是真正的問題。我道歉。 – nullpotent 2011-04-05 18:44:29
我確實認爲這個數字是回答這個問題的內在因素。但是我們可以使用一些變量,比如'TR'來表示轉彎半徑。在這種情況下,你已經爲'TR = 0'的特殊情況回答了你自己的問題。 – 2011-04-05 18:50:37