2021.07.05-基於軟約束的軌跡優化-理論


文中ppt來源:深藍學院,強烈推薦

重新學習一下軟約束軌跡優化的理論知識。

Distance-based Trajectory Optimization

Motivation:

硬約束的可能的不足:

安全走廊內的區域是等價的,所以軌跡有可能離障礙物很近,控制不好就撞了。

對於視覺無人機,受限於視覺傳感器的范圍和質量,如果有噪點,那飛行走廊質量就下降了。

軟約束的不足:

不能保證每一種約束都滿足,而是傾向於滿足。如果目標函數設計的不好,是有可能碰撞的。

 

 

 問題描述:

目標函數包括光滑項、碰撞項、動力學項。

光滑項:根minimum snap中的是一樣的。直接用上一節課推導的閉式解。區別在於本解不在限制所有的waypoints固定,而是只有首位固定,也就是dF中很多項都放在了dP中。(這里理解即可,先不推導)

碰撞懲罰項:沿着軌跡積分,積的軌跡點所在的距離場產生的推力。

這里就需要ESDF地圖,歐式距離場,障礙物內是-1,隨着遠離障礙物,依次為1,2,3....

那其實我自己也可以很簡單的構建,一圈一圈往外擴就行啦。

注意:這里是沿着曲線的積分,而不是對時間的積分。如果是對時間的積分,時間變短(速度變快),也可以使得積分結果變小,而我們想要的是因為距離障礙物遠而得到的。

如何積分:

將ds近似成速度*時間,曲線分成很多段直線段。

動力學懲罰項:

對於超過速度和加速度限制的進行懲罰。與碰撞懲罰項類似。

 

 

 目標函數求導/Jacobian:

整個問題,肯定不是凸的,因為首先ESDF距離場就不是凸的,那碰撞懲罰項就不是凸的。

這里也沒有辦法轉化成凸優化的問題,所以只能通過非線性優化求解:寫出目標函數->求導數。

第一項Js的求導,這個比較簡單,對dp求導即可(注意這里的dp跟minimum snap中推導的有些差異,中間的waypoints不在固定,所以都加到了dp中)

第二項Jc的求導,對c(pt) * ||v(t)||求導。這里μ代表了x,y,z方向。

先對c(pt)求導,c()這個函數就是自己定義了,根據離障礙物的位置遠近,定義一個。

 

 

 到現在為止,起碼導數都是可以推導出來的,如果推導不出來,就只能數值上加擾動。

一階導數是Jacbian,代表梯度。優化的話,一階導數就可以了。

二階導數是海森,代表梯度的梯度。牛頓法的話是二階導數。

ESDF地圖:

可以用指數函數作為cost function c(p(t))。當然,簡單的話,我覺得可以用一個分段函數。

動力學項,也可以用指數的函數,超過限制時,爆炸式增長。

 

 

 數值優化:

無約束非線性優化問題,求最小值,也就是求導數為零。

 

 

不是全局最優的,初值敏感。

 

 

 

 

 

 利用梯度,往導數的負方向走。

 

 

 

 

二階方法就不是簡單的往梯度的下降的方向了,比如牛頓法,是用-一階導數/二階導數

 

 

 LM方法,結合了一階和二階方法,lambda很大時,就是一階法,lambda很小時,就是二階法。

 

 

ceres--最小二乘、非線性優化

NLopt--收錄的求解器特別多,作planning經常用。

寫出目標函數,寫出梯度,就可以用求解器求解,上邊的兩個求解器,甚至都不用你寫梯度。

初值選擇:

基於梯度的優化,初始值如何選擇。

方法1.用前端得到的路徑,好處是是不碰撞的,但光滑性很差。

方法2.前端路徑,然后用閉式minimum snap求解以后,作為初值。好處是光滑,但是不安全。

一般來說,我們更願意初始解是安全的。基於這個初始解,再加上指數爆炸上升的碰撞懲罰函數,可以確保最后軌跡安全。

 

 

優化策略:

第一次優化規划,只保留Jc碰撞項。使得軌跡離障礙物遠一點。

第二次再把Js和JD加進來。

 

缺點:

碰撞項和動力學項,都需要積分,而且需要離散成很多小段,如果離散的太多細密,對算力復雜度是負擔。

 

 

解決方法:B-樣條,B-樣條和貝塞爾一樣,具有凸包性質,就不用積分了,直接限制控制點即可。

這里的光滑項也是TEB planner使用的。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM