自動尋路是機器人導航的核心技術,其原理主要涉及機器人與環境之間的復雜信息交互與處理。在自動尋路過程中,機器人依靠先進的傳感器系統,如高清攝像頭、精密激光雷達和靈敏超聲波裝置,全方位感知周圍環境。這些傳感器能夠實時捕捉并分析環境中的障礙物、地形變化和關鍵路標,為機器人提供精確的導航數據。
自動尋路在多個領域發揮著關鍵作用,從圖撲的數據中心機房的自動化巡檢系統,到智能機器人的導航系統,再到智慧碼頭堆場的智能化管理,自動尋路技術無處不在。該功能不僅能規劃出最優路線,還能實時考慮障礙物避讓等復雜的實際因素,靈活調整路徑以確保安全和效率。
乍聽之下,自動尋路功能略顯復雜,實現過程中也確實涉及了一些算法。在具體實施之前,我們需要先解決兩個關鍵問題:
1. 如何避開場景中的障礙物?
2. 如何計算最佳路徑?
針對這兩處問題,我們可以利用圖撲軟件自研 HT for Web 提供的 ht-astar.js 插件。該插件具備初始化網格和自動搜索路徑等功能,高效簡化了自動尋路的實現過程。
場景網格化
先將場景劃分成二維網格,障礙物分布于不同的網格單元上,部分較大的障礙物可能會占據多個網格單元。路徑計算實際上是分析網格的占用情況,當平臺監測到某個網格被占用時,系統會自動尋找擇優生成一條繞行路徑。
在開發時,首先需要去實例化 ht.Astar.Finder(view, params)。其中 view 可以是 ht.graph.GraphView 或者 ht.graph3d.Graph3dView。params 是一個包含基礎屬性設置的對象。以下列舉了一些 params 的常用參數:
?simplify:是否啟用路徑簡化。
?closest:是否啟用最近路徑優化。
?nodeRectExtend:擴展節點范圍。
?gridSizeY:網格在 Y 方向上的大小。
?gridSizeX:網格在 X 方向上的大小。
?diagonal:是否允許沿對角線方向移動。
?fastOverlap:是否啟用快速監測重疊算法。
?filter:過濾函數用于在路徑計算過程中過濾特定節點。
?turnPunish:轉彎懲罰系數,數值越高表示越傾向于直線路徑。
具體代碼實現:
路徑計算
在路徑計算過程中,系統需要實時監測每個網格單元的占用狀態。若規劃的路徑遇到被障礙物占用的網格,系統會自動尋找繞行路徑,以動態避開障礙物。
在開發過程中,我們需要監聽場景背景的點擊事件,獲取點擊位置的坐標。然后,結合起點坐標,通過 astar.findPath(pFrom, pTo) 函數計算出具體路徑。計算得到的路徑是一組點位數據,可以利用這些數據在場景中繪制出一條路徑管道。具體代碼實現:
路徑動畫
在場景中生成管道后,人物節點可沿此管道移動。人物節點沿管道運動的代碼如下:
優化視覺效果
基于上述,我們已實現了基本的自動尋路功能。在實際項目中仍需提升一定的視覺效果,讓展示頁面足夠美觀,我們可以采取以下策略:
- 首先,將管道路徑隱藏(使用 polyline.s('transparent.mask', true));
- 隨后,利用 ht.Shape 節點并設置貼圖來呈現人物的運動軌跡。這樣不僅能實現功能,還能大幅增強視覺吸引力。
具體實現代碼如下:
作為開發者的我們,將繼續探索和優化自動尋路技術,利用圖撲 HT 提供的插件工具,不斷提升算法效率和用戶體驗。通過合理的參數設置、精確的網格劃分和智能的路徑規劃,為各種應用場景提供更加出色的自動尋路解決方案。
作為國產化數字孿生技術,圖撲長期專注于 Web 可視化領域,自主研發 HT for Web 2D 和 3D 圖形渲染引擎、低代碼數字孿生組態平臺及相關工具。科技自主可控,不受外圍科技所威脅。目前產品已廣泛應用于工業組態、電力能源、孿生工廠、電信機房、智慧交通、智慧城市、園區樓宇、智慧水務、航天軍工等行業領域。
審核編輯 黃宇
-
機器人
+關注
關注
211文章
28418瀏覽量
207095 -
3D
+關注
關注
9文章
2878瀏覽量
107538 -
可視化
+關注
關注
1文章
1194瀏覽量
20942 -
數字孿生
+關注
關注
4文章
1325瀏覽量
12252
發布評論請先 登錄
相關推薦
評論