博客專欄

        EEPW首頁 > 博客 > 自動駕駛軌跡規劃之hybrid A*算法(1)

        自動駕駛軌跡規劃之hybrid A*算法(1)

        發布人:計算機視覺工坊 時間:2023-07-17 來源:工程師 發布文章

        本文參考論文:

        https://ai.stanford.edu/~ddolgov/papers/dolgov_gpp_stair08.pdf



        1 hybrid A* 算法創新點


        1.1 搜索方式


        A*算法:在二維網格中進行搜索,本質上就是把車輛簡化為質點,并且移動方向是固定的八個方向(或四個方向),移動距離也是確定的。但這不符合實際的車輛運動學模型。


        hybrid A*算法:引入航向角,將搜索變成在 


        圖片


        三個維度的空間中進行。符合車輛運動學模型。


        圖片


        1.2 車輛運動學模型

        圖片


        為了便于計算,hybrid A*采用車輛二自由度運動學模型(見上圖),但是忽略了車輛加速度與前輪轉角速度,于是經過簡化的運動學模型如下


        圖片


        圖片


        1.3 reeds-shepp曲線的引入


        圖片


        圖片


        但是reeds-shepp曲線完全未考慮避障因素,但是由于reeds-shepp曲線比較簡單易計算,所以構造速度非常快,使得先構造再檢驗是否碰撞成為可能,這里的碰撞指的是整條軌跡是否會與障礙物有交集。


        因此不像傳統A*不考慮中間過程,所以需要均勻采樣整段時間,進行碰撞檢驗。假如該段軌跡無碰撞則加入搜索樹中,作為候選軌跡,如下圖


        圖片


        圖a:假如每次搜索都用reeds-shepp,由下圖a可見這個搜索軌跡構成的樹規模很龐大,節點很多將會造成極大的計算量。


        圖b:但間歇性得用reeds-shepp和傳統A*去搜索,在每N個節點中選取一個計算Reed-Shepp曲線(這里的N隨啟發函數遞減而減少,即越發靠近終點時,N越小)。由下圖b可見搜索樹規模小,節點少。


        圖片


        但是在利用reeds-shepp曲線搜索時,若出現48種reeds-shepp曲線都會碰撞,也需要重新進行經典的A*搜索,這種混合的搜索使得搜索速度提升。


        1.4 G的定義更豐富


        在傳統A*算法中,G是從起點到當前節點的路徑消耗,由于一段直線前進的軌跡肯定優于反復前進倒退或扭曲的軌跡,因此我們對頻繁切換速度  和前輪轉向角  兩個控制量的值這種行為進行懲罰,這樣就能使得最后的軌跡更加合理。


        還有很多為了軌跡合理可以懲罰的地方,這其實就是一個評價函數的設計,具體可以參考;

        https://blog.csdn.net/weixin_65089713/article/details/123835309


        但需要說明的是,如果是極端狹窄的泊車場景中,我們不得不采用復雜扭曲的軌跡。如下圖


        圖片


        1.5 H的定義更豐富


        按理來說,H函數應該是從當前節點位姿到終點節點位姿,同時滿足避障以及車輛運動學約束的最短路徑長度,這是真實路徑,但這很難在還沒采樣搜索剩下的位置環境時就知道真實路徑。


        所以hybrid A* 設計兩個H的子函數,H1代表符合車輛運動學約束但忽略碰撞因素的最短路徑,H2代表滿足避障約束但是忽略車輛運動學約束的最短路徑,H定義為H1與H2的最大值。


        H1:當前節點離終點較近時,更應該關注車輛運動學約束,忽略障礙物的情況下,路徑不依賴于任何在線場景信息,可以通過離線的方式采樣枚舉所有reeds-shepp曲線可能,提前將路徑長度記錄出來,在線調用該函數時只需索引、插值即可返回函數值。同時,這項啟發函數的主要目的是為修剪傳統A*搜索樹的分支,保證最后能精準銜接終止位姿。如下圖


        圖片


        H2:當前節點離終點較遠時,更應該關注避障行駛,防止陷入死胡同,利用傳統A*的H進行計算。如下圖


        圖片


        可見這樣對啟發函數的設計有利于提高搜索速度。


        1.6 Voronoi勢場函數


        生成的路徑必須與障礙物保持一定的距離,這也是最優軌跡的要求,由于傳統的人工勢場法的缺點是在狹窄路段構造了高勢場,使得機器人或車輛無法通過,因此,構造Voronoi勢場函數。首先,介紹一下Voronoi圖。


        Voronoi圖,它是由一組由連接兩鄰點直線的垂直平分線組成的連續多邊形組成。每個點有一個它的最近鄰區域。


        圖片


        圖片


        每個Cell中包含的都是距離當前Cell距離最近的所有點,因此Cell的邊界就是距離種子點最遠的點的集合。利用這個特性,將采樣障礙物的邊界當做種子點,那么Cell的邊界就是遠離所有障礙物的可行駛路徑。效果見下圖


        圖片


        當然不可能就照著cell的邊界去運動,因為設計的出發點是為了通過較窄的地方。在路較寬時,沒有必要,所以我們需要構建一個勢場,能夠讓車輛或機器人趨于cell的邊界去運動。勢場函數如下


        圖片


        圖片


        圖片


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金坛市| 大悟县| 南投市| 神木县| 蒙山县| 泰来县| 大方县| 金川县| 乌鲁木齐市| 塔城市| 布尔津县| 武冈市| 高唐县| 兴宁市| 宝丰县| 凉山| 固原市| 民勤县| 乌兰县| 威远县| 黄梅县| 肇州县| 长治县| 河间市| 筠连县| 湛江市| 玉环县| 福泉市| 滨州市| 米林县| 晋江市| 特克斯县| 德阳市| 罗源县| 塔城市| 鹿泉市| 济阳县| 嘉禾县| 永登县| 贵州省| 内江市|