基於優化的方法中乙個問題是如何表示障礙物,進而進行碰撞檢測。
乙個比較直觀的方法:將機械臂,障礙物用非常簡單、易用解析形式表達的形狀包圍,如圓柱,圓球,圓錐。尤其是圓球,因為它具有完美的對稱性,碰撞檢測只需要判斷到球心的距離就可以。但是這種方法在一些對幾何約束要求較高的場合不適用,並且有可能會讓求解器無法求出可行解;
比較精確的建模方法是利用多面體去表示物體,帶來的問題就是計算複雜度高。比如要表示乙個矩形:⋃}
⋂⋃}\\le x\}\bigcup\\}\}\bigcap \\le y\}\bigcup\\}\}
⋃}⋂⋃
},當判斷乙個點在矩形內還是矩形外時,相當於要做4次運算。這是乙個非常簡單的情況,當判斷兩個多面體是否相交時,需要判斷的項要比這個多很多。目前判斷多面體相交比較快速的演算法有gjk。
在求解優化問題時,由於優化問題是乙個非凸問題,傳統的凸優化方法不能直接使用。目前的方法有:向約束集投影的方法,sqp方法(序列式凸優化)。
schulman曾提出一種基於sqp進行求解的方法,用帶符號距離構造碰撞約束,將碰撞約束表示為以關節角為引數的式子。下面對其進行介紹。如圖所示,我們想要讓機械臂繞過某些障礙物,去抓取某個物體,針對這個任務求出所有關節的連續的軌跡。
數學模型
minimizef(
x)subject togi
(x)≤
0,i=
1,…,
nine
qhi(
x)=0
,i=1
,…,n
eq\begin\textf(x)\\ \text\\ g_i(x)\le 0,\quad i=1,\dots,n_\\ h_i(x)=0,\quad i=1,\dots,n_ \end
minimizef(
x)subject togi
(x)
≤0,i
=1,…
,nin
eqh
i(x
)=0,
i=1,
…,ne
q其中x
xx是乙個高維陣列,橫向維度為運動過程中的取樣時間,縱向維度為每個時刻的聯合關節角
目標函式要考慮的乙個主要因素是使總移動路徑最短,另外還可以考慮加入速度,能耗等。
對於總路徑最短作為目標,並將關節角作為變數時,可將目標函式表示為:f(θ
1:t)
=∑t=
1t−1
∥θt+
1−θt
∥2f(\theta_)=\overset}\|\theta_-\theta_t\|^2
f(θ1:t
)=t
=1∑
t−1
∥θt+
1−θ
t∥2
將優化問題化為拉格朗日對偶形式,然後使用序列式優化,即:
1.每一迭代步都在當前x附近對問題做一次凸近似求解
2.每一次計算限制x改進很小的一步
相應的示意圖:
後續會更新
matlab,機械臂軌跡規劃,跟蹤軌跡。
clear l1 link 0 0 0 0 0 modified l2 link pi 2 0 70 pi 2 0 modified l3 link 0 20 100 0 modified l4 link pi 70 0 pi 2 modified l5 link 0 0 0 pi 2 0 modi...
機械臂正逆運動學及軌跡規劃基礎
目錄動力學 dynamics 將所需的關節力和扭矩對映為它們的位置,速度和加速度 參考運動學 kinematics 將機械人機械手的關節位置對映為感興趣的座標系的位置和方向 一般是末端 如下圖所示,若已知各個關節的角度變數,則末端執行器的位姿是確定的,即 x,y 但是若已知末端執行器的位姿,反求關節...
使用規劃求解進行優化計算
在日常工作中,對身邊的情況進行優化計算節省一些成本。例如分工計算,假設經理手上有四個團隊,每個團隊的工作效率和成本都不一樣,當乙個訂單簽訂後,需要計算如何給四個團隊分配任務以達到成本最小。這種情況使用 規劃求解 進行計算,具體步驟如下 建立excel 工作表,用來描述四個團隊和任務,或開啟光碟中第 ...