智能駕駛規劃控制理論學習05-車輛運動學規劃案例分析

目錄

案例一——Hybrid A*(基于正向運動學)

1、基本思想

2、 實現流程

?3、啟發函數設計

4、分析擴張(Analytic Expansions)?

5、分級規劃(Hierarchical planning)

案例二——State Lattice Planning(基于逆向運動學)

1、基本思想

2、Conformal Lattice

3、目標狀態實例

4、生成路徑集合

5、代價值評估與路徑選擇

案例比較


案例一——Hybrid A*(基于正向運動學)

1、基本思想

? ? ? ? Hybrid A*是A*算法的一種擴展,本質也是一種圖搜索算法,Hybrid A*有以下特點:

  • 通過在控制空間中實時構件狀態圖

????????整體思想是在控制空間中采樣利用前向積分的方式生成多條運動基元作為狀態圖的邊。以自行車模型為例,輸入量有兩個,分別是運動速度v和前輪轉角φ,為了簡化過程可以假設速度恒定,此時只需要考慮φ一個變量,可以假設φ∈[-umax, umax],對其做等距的離散采樣(上圖采樣了三份,實際應用當中會分成跟多份),取得的三個控制量分別為-umax,0和umax,然后對這三個控制量進行前向仿真/積分(給定初始狀態量,給定時間△t通過積分得到新的狀態);

  • 在網格地圖中修剪一些節點,減少圖的大小(剪枝)

? ? ? ? 若在采樣時狀態空間取的足夠密(采樣等距距離足夠小),那么會導致圖中的節點和邊過多,極大地消耗計算資源,因此為了保證整體算法的實時性,Hybrid A*采用剪枝的操作,將狀態空間進行離散得到網格,若多個state落入同一個網格中,那么就選擇最優的一個state(cost最小)保留;

  • 使用與A*算法相同的方法在狀態圖上搜索路徑

????????A*算法與Hybrid A*算法的比較:

  • A*將代價值與網格中心聯系,并且只訪問與網格中心相對應的狀態;
  • Hybrid A*為每一個網格賦予了連續的狀態(通過在模型的控制空間中采樣并積分得到),每一個網格對應的分數是其關聯的連續狀態下的代價值。

2、 實現流程

下面用偽代碼的方式對Hybrid A*算法的實現流程進行簡要描述:

Algorithm Astar(G, start):let open_list be priority queue;g[start] := 0;f[start] := g[start] + h[start];open_list.push(start,f[start]);while (open_list is not empty):current := open_list.pop();mark current as visitedif current is the goal:return current;// 通過從控制空間采樣和前向仿真來擴展鄰居節點for all unvisited neighbours next of current in Graph G:next_cost := g[current] + cost(current,next);if next is not in open_list:open_list.push(next,next_cost + h[next])    // 合并在離散空間中占用相同單元的連續坐標狀態else:if g[next] > next_cost:g[next] := next_cost;f[next] := next_cost + h[next];

? ? ? ? 對于Hybrid A*算法,g(n)不單單表示路徑距離上的代價值,還包括一些其他方面的代價,比如方向改變(包括前后和左右)的懲罰項;

????????而對于啟發式函數h(n)的設置,可以用經典的歐幾里得距離或和曼哈頓距離,也可以用一些其它的方式使整體的搜索效率更高,這方面會在下面講解;

?3、啟發函數設計

? ? ? ? 在Practical search techniques in path planning for autonomous driving.?論文中作者給出了兩種啟發函數的設計,分別是:

  • Non-holonomic-without-obstacles

? ? ? ? 這種啟發式函數的估計是基于Reeds Sheep Path的方法,此方法考慮了車輛本身的特性,卻忽略了環境;

  • Holonomic-with-obstacles

? ? ? ? 這種啟發式函數的估計是基于目標節點和當前正在擴展的頂點之間的最短距離,此方法忽略了車輛本身的特性,只考慮了障礙物。

? ? ? ? 原論文中給出了兩個特定場景下使用不同的啟發式函數取得的效果,如下圖所示:

? ? ? ? (a)使用最簡單的歐幾里得距離作為啟發式函數

? ? ? ? (b)使用non-holonomic-without-obstacles作為啟發式函數

? ? ? ? (c)使用non-holonomic-without-obstacles作為啟發式函數

? ? ? ? (d)non-holonomic-without-obstacles和Holonomic-with-obstacles組合使用

? ? ? ? 通過(a)圖和(b)圖的比較,可以得到相比與簡單使用歐幾里得距離,使用non-holonomic-without-obstacles作為啟發式函數使樹節點縮小了接近十倍,效率有顯著的提升;

? ? ? ? (c)(d)圖中是一個更為復雜的場景,(c)圖表示在復雜場景下單純使用non-holonomic-without-obstacles作為啟發式函數會導致樹的規模很大,因為沒有考慮環境障礙物的因素,需要把環境探索完全才能得到可行的路徑;

????????而將non-holonomic-without-obstacles和Holonomic-with-obstacles組合進行使用就能得到(d)圖所示的路徑,有前面的學習可知通過一次完整的迪杰斯特拉算法可以實現圖中某個節點到其他所有節點啊之間的距離,利用這個性質,在做Hybrid A*算法前,先從終點反向的進行一次迪杰斯特拉算法對整個圖進行遍歷我們可以得到圖中任意節點到終點的最短路勁(考慮障礙物),將節點距離記錄在表格中(前期的離線收集過程)。然后在Hybrid A*算法實時的搜索時直接根據當前位置從表格中獲取對應的離終點考慮障礙物的最短路徑。

4、分析擴張(Analytic Expansions)?

? ? ? ? ?論文指出離散搜索(前向積分)永遠無法達到精確的連續目標狀態(整體的精度還取決于A*網格的分辨率),因此文章中使用Reeds Shepp Path解析地連接當前節點和目標節點,利用這種方法可以大大提高障礙物在稀疏環境下的搜索速度。

5、分級規劃(Hierarchical planning)

? ? ? ? ?在一個復雜的狀態空間下想要一次性找到兩點之間的最優軌跡是比較困難的,分級規劃的思想就是利用分布的思路,先利用某種方式(上圖是利用Hybrid A*)獲得一條初解(全局最優解),再基于初解做局部的平滑得到局部最優解。

? ? ? ? 由Hybrid A*得到的路徑通常是次優的,主要有兩個原因:一是在剪枝的過程中,每一個柵格內都只保留一個state,這種操作會導致在某種層面上不是最優的;二是在控制空間采樣時,不管是對前輪轉角(方向盤轉角)或者是轉角變化率進行采樣,都無法實現嚴格意義上的連續,最終的結果可能并不是很平滑。因此需要進一步改善。

? ? ? ? 論文中通過采用共軛梯度下降法對Hybrid A*路徑進行光滑處理。

案例二——State Lattice Planning(基于逆向運動學)

1、基本思想

? ? ? ? 在狀態空間中采用獲得終點狀態(一系列離散的點)?,可以在Frenet坐標系下采樣,也可以在Cartesian坐標系下采樣,再通過求解邊界值(BVP)問題來獲得運動基元,通過計算每條路徑的成本選擇最佳路徑。

2、Conformal Lattice

? ? ? ? conformal lattice指的是在結構化道路上定義的一種采樣規則,大致是在在橫向上獲取目標狀態沿道路目標點橫向偏移采樣,在縱向上沿著車道中心線行駛,能夠在避開障礙的同時加快規劃過程。

3、目標狀態實例

? ? ? ? 目標狀態從目標點沿道路橫向偏移采樣,具體的采樣規則需要根據當前速度和其他因素進行調整。比如在縱向上生成的路徑的長度(弧長)往往需要和車速關聯,在低速時往往希望弧長短一些,因為在低速時弧長過長會使車輛運動對應位置時失去時效性;而在高速時往往希望弧長長一些,弧長過短不利于下一時間對環境事物的判斷。

? ? ? ? 另一方面,在側向方向上的采樣也有特定的策略,比如在擁堵場景下,采樣距離過大可能會導致無解。

4、生成路徑集合

?????????在采樣結束后,要進行邊界值問題(BVP)處理,在Frenet坐標系中可以用五次多項式進行處理,在Cartesian坐標系中可以用三次螺旋線進行處理。

5、代價值評估與路徑選擇

? ? ? ? 代價函數的設計往往要考慮多個方面,為了簡化問題可以簡單考慮安全性、平滑性和對中心線的貼合度三個方面的代價函數考慮:

  • 安全性:

J_{safety}=collision_{-} check()

  • 平滑性:

J_{smooth}=\sum_{i=1}^{N}{l}_{i}'''^{2}

  • 中心線貼合度:

J_{ref}=\sum_{i=1}^{N}l_{i}^{2}?

? ? ? ? 將這三個因素進行不同的權重進行組合,計算總的代價函數:

J_{total} = w_{1}*J_{safety} + w_{2}*J_{smooth}+w_{3}*J_{ref}

? ? ? ? ?得到了代價函數后就可以評估生成的各曲線的代價值進而獲得最優路徑。

案例比較

? ? ? ? 案例一是基于正向運動學的方法,案例二則是基于逆向運動學的方法,下面介紹這兩種運動學方法以及它們的對比。

? ? ? ? 正向運動學方法對應上圖中的在控制空間采樣,在知道控制量v、u以及給定時間t通過前向積分的方式得到一系列的軌跡;而逆向運動學對應上圖中在狀態空間中采樣,此時的輸入量是起始和終點的狀態量,通過起點和終點的狀態量反推中間的狀態量和輸入量。

  • 正向運動學(控制空間采樣)

????????優點:只要給定初始狀態和控制變量,通過運動學/動力學模型進行前向積分的方式即可得到? ? ? ? ? ? ? ? ? ? ?整個狀態軌跡;

????????缺點:缺少對目標點的引導,單純依靠啟發式函數來引導搜索過程。

  • 逆向運動學(狀態空間采樣)

? ? ? ? 優點:具有較強的任務引導性,直接生成朝著目標的采樣狀態;

? ? ? ? 缺點:BVP問題較難處理?,并且采樣的規則需要精心計算。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716644.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716644.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716644.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

子矩陣的和 刷題筆記 {二維前綴和}

首先我們的目標是讓 s[i][j]表示為其左方和上方形成的矩陣所有元素的和 加上s[i-1][j]和s[i][j-1]后 s[i-1][j-1]部分重復了所以減去 最后加上a[i][j]即可完成目標 s[i][j]s[i-1][j]s[i][j-1]-s[i-1][j-1]a[i][j]; 然后看題目要求 要求x1,y1,x2,y2圍成的小正方形內的元素和…

C/C++工程師面試題(數據庫篇)

索引的優缺點 索引是一種支持快速查找特定行的數據結構,如果沒有索引,就需要遍歷整個表進行查找。用于提高數據檢索的速度和效率。 好處: 提高檢索速度: 索引可以加快數據的檢索速度,因為它們允許數據庫系統直接定位到…

Revit-二開之立面視圖創建FilledRegion-(3)

在上一篇博客中介紹了FilledRegion的創建方法,這種方法通常只在平面視圖中適用,在三維視圖中也是無法創建的(目前研究的是這樣的,如果有其他方法,請賜教)。 本片文章介紹一個下在立面視圖中創建FilledRegion的方法,主要操作是在立面視圖中拾取一個點,然后以該點為原點,…

YOLOv5 項目:推理代碼和參數詳細介紹(detect)

1、前言 本章將介紹yolov5項目的推理函數,關于yolov5的下載和配置環境,參考上一篇文章: YOLOv5 項目:環境配置-CSDN博客 pycharm 中打開的推理模塊如紅框中所示 pycharm將conda新建的虛擬環境導入,參考 :…

快速模冪(c++題解)

題目描述 試求ab%n的值,其中a、b、n均為整數范圍內的數。 輸入格式 三個整數即a、b、n。 輸出格式 輸出結果。 樣例 樣例輸入 復制1 1 1樣例輸出 復制0 _____________________________________________________________________________ ok呀總算學到一個…

從 AI 的爆火聊聊用戶界面(UI)的演進

目錄 用戶界面的起源與發展 用戶界面的設計原則與趨勢 用戶界面未來的方向 小結 用戶界面(User Interface,簡稱 UI)是人與計算機系統交互的媒介,用戶可以通過用戶界面向計算機發送指令,同時計算機可以通過用戶界面…

面試 Java 基礎八股文十問十答第十五期

面試 Java 基礎八股文十問十答第十五期 作者:程序員小白條,個人博客 相信看了本文后,對你的面試是有一定幫助的!關注專欄后就能收到持續更新! ?點贊?收藏?不迷路!? 1)BIO, NIO, AIO 有什么…

簡單實現Transformer的自注意力

簡單實現Transformer的自注意力 關注{曉理紫|小李子},獲取技術推送信息,如感興趣,請轉發給有需要的同學,謝謝支持!! 如果你感覺對你有所幫助,請關注我。 源碼獲取:VX關注并回復chatg…

二叉樹的右視圖,力扣

目錄 題目: 我們直接看題解吧: 快速理解解題思路小建議: 審題目事例提示: 解題方法: 解題分析: 解題思路: 代碼實現(DFS): 代碼1: 補充說明: 代碼2&#xff1…

Vue.js中的$nextTick

其實目前在我現有的開發經歷中,我還沒有實際運用過$nextTick,今天在看書時,學習到了這個東西,所以做個筆記記錄一下。 一、$nextTick是什么? $nextTick 是 Vue提供的一個方法,用于在 DOM 更新之后執行回調…

AI:148-開發一種智能語音助手,能夠理解和執行復雜任務

??點擊這里跳轉到本專欄,可查閱專欄頂置最新的指南寶典~ ?????? 你的技術旅程將在這里啟航! 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶關鍵代碼,詳細講解供大家學習,希望…

淺談鉤子方法

何為鉤子方法 鉤子方法(Hook methods)是一種在面向對象編程中常用的設計模式,也被稱為模板方法模式。在這種模式中,父類定義了一個算法的框架,并且將一些步驟的實現延遲到子類中。子類可以通過重寫這些“鉤子方法”來改…

[技巧]Arcgis之圖斑四至點批量計算

前言 上一篇介紹了arcgis之圖斑四至范圍計算,這里介紹的圖斑四至點的計算及獲取,兩者之間還是有差異的。 [技巧]Arcgis之圖斑四至范圍計算 這里說的四至點指的是圖斑最東、最西、最南、最北的四個地理位置點坐標,如下圖: 四至點…

青山隱隱,敗葉蕭蕭

給定序列需滿足二個條件:本身是質數,相鄰二項之和仍為質數 首先一個偶數2*n不能通過2*k(k取整數)得到質數。 奇數2*n-12*k2*(nk)-1,可能得到質數 那么若序列中存在偶數,一定不滿足第一個條件(特判0,2&am…

STM32進階筆記——復位、時鐘與滴答定時器

本專欄爭取每周三更新直到更新完成,期待大家的訂閱關注,歡迎互相學習交流。 目錄 一、復位1.1 軟件復位1.2 低功耗管理復位 二、時鐘2.1 系統時鐘(SYSCLK)選擇2.2 系統時鐘初始化 三、滴答定時器(Systick)3.1 SysTick部分寄存器3.…

部署bpmn項目實現activiti流程圖的在線繪制

本教程基于centos7.6環境中完成 github開源項目: https://github.com/Yiuman/bpmn-vue-activiti軟件:git、docker 1. 下載源代碼 git clone https://github.com/Yiuman/bpmn-vue-activiti.git2. 修改Dockerfile文件 聲明基礎鏡像,將項目打包&#xff…

EasyRecovery數據恢復軟件有什么優勢呢?

EasyRecovery數據恢復軟件具有以下優勢: 強大的恢復能力:EasyRecovery采用先進的掃描和恢復技術,能夠深度掃描存儲設備,尋找并恢復因各種原因丟失的數據。無論是誤刪除、格式化、分區損壞還是病毒感染,它都能提供有效…

設計模式(十一)策略模式

請直接看原文:設計模式(十一)策略模式_某移動支付系統在實現賬戶資金轉入和轉出時需要進行身份驗證,該系統為用戶提供了-CSDN博客 ----------------------------------------------------------------------------------------------------------------…

LeetCode01 - 35.搜索插入位置

一、題目要求 給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: 2示…

SpringMVC 學習(十一)之數據校驗

目錄 1 數據校驗介紹 2 普通校驗 3 分組校驗 4 參考文檔 1 數據校驗介紹 在實際的項目中,一般會有兩種校驗數據的方式:客戶端校驗和服務端校驗 客戶端校驗:這種校驗一般是在前端頁面使用 JS 代碼進行校驗,主要是驗證輸入數據…