一,背景
在做機械臂軌跡規劃的單段路徑的速度規劃時,除了參考《Trajectory Planning for Automatic Machines and Robots》等文獻之外,還在知乎找到了這位大佬 @韓冰 寫的在線規劃方法:
https://zhuanlan.zhihu.com/p/585253101/editzhuanlan.zhihu.com/p/585253101/edit
從其輸入條件和結果來看,在線規劃的方法還是有一些精度、特殊條件情況的問題。
另外還有兩個庫,Reflexxes Motion Libraries 和 Ruckig ,它們都有開源的內容和商業化的內容。但是受限于我的開發平臺,很難去調用、復現它們。
而以上文獻中的離線規劃方法限制性更大,只能實現起始結束條件速度加速度都為0的情況。
本文在以上文獻中的離線規劃方法的基礎上,實現了更廣泛的適用條件,并且在求解速度、最優解選擇上進行了一定的優化。最終達到了以下效果:
1,可任意設置起始、結束狀態的速度、加速度。可以等于或不為0、大于0、小于0、超出限制值等。
2,本文方法的主要思路還是和以上文獻里的迭代搜索一樣,設定在迭代終止條件勻速段時間小于1ms的情況下,各種測試用例的迭代次數最大12次,總的運算耗時少于20us。
3,迭代搜索實際上會有多個區間,各自有最優值。本文方法并沒有求出所有解,但是根據公式特性盡可能的選擇了一種最優解。
二,問題描述
可能對“速度規劃”感興趣的同學多少都了解這個問題的定義,但我在這里還是簡單描述一下。
**已知:**一段路徑有起點、終點(它無關坐標系、也無關路徑形狀軌跡),起點的位置值Ps,終點的位置值Pe。起點的速度Vs、加速度As,終點的速度Ve、加速度Ae,并限制整段路徑的速度絕對值不超過Vlim,加速度絕對值不超過Alim,加加速度的絕對值不超過Jlim。
**求解:**時間最優的速度規劃結果。
怎樣理解這個“規劃結果”呢?按照《Trajectory Planning … 》的內容,其求解結果應當包含7段位置關于時間的分段函數,一般情況如下圖所示:
它由7段分段函數構成,如下:
加速區間(加加速段——勻加速段——減加速段)
勻速區間 ( Ta <= t <= Ta + Tv )
減速區間(加減速段——勻減速段——減減速段)
它可以理解為一系列的“時間-位置”插值點。在線規劃方法的結果可以是一種計算方法,能夠在已知當前點求出下一個周期時刻的位置點。而離線規劃方法的結果也是一種計算方法/或數據,它能夠用一系列的分段函數來表示位置關于時間的曲線函數。
再次強調下,
1,此類方法中速度規劃的輸入的位置是一段或多段路徑的曲線距離,它無關坐標系、也無關路徑形狀軌跡。可以認為是一維的曲線距離關于時間的規劃函數求解。
2,在插補運動中的應用場景可以參考后文——空間三維插補和速度規劃。
3,而路徑和速度規劃的關系可以理解為:路徑是上層確定的輸入,在做速度規劃時不會改變其路徑;路徑就像是鐵軌,而速度規劃則是控制鐵軌上的火車時快時慢的沿著鐵軌的運動。而無論火車跑得快或慢,都不影響鐵軌的形狀。
該問題的輸入在應用上還有一點注意事項:路徑和自由度的不同。
1,自由度可以理解為一個直線電機,它可以在導軌上任意的正向/負向運動,也就是說問題的輸入Ps,Pe,Vs,Ve等可以是任意的正負值。
2,但是路徑不同,路徑可以認為是基于參數從0到100%的描述,這意味著其位置值是在路徑的維度里相對0%點的曲線距離。
3,那么在應用上,路徑的距離不能為負數,因為從0%往-100%的路徑是不確定的,所以負的距離也失去了意義。
4,在大多數應用上,速度也最好沒有負數,因為負數的速度意味著運動點將在中間一段路徑上折返多次,這對于大多數應用是有害的。
三,梯形速度規劃
首先我們簡化問題,引入梯形速度規劃,也可稱為三段式。與如上問題的條件一樣,但是不對加加速度進行限制,那么意味著允許加速度可以限制值內任意的快速變化。此部分可以直接參考教科書的3.2節。書中一般的規劃結果如下圖:
在此引入3段式速度規劃,是因為它與7段式的問題有很多相似相關的地方,三段式的求解方式大致是:
1,假定規劃的最大速度是否能達到速度限制值,若能達到則可根據理想公式(梯形模型)求解。
2,若不能達到則加速段的結尾速度應該等于減速段的起始速度,即最大速度,可根據三角形模型求解。
**相似性:**可以認為這個最大速度是一個未知數,計算出其他所需的物理量,得到代數方程,再求解這個方程即可。區別只是梯形規劃的方程很簡單,而S型規劃的方程較復雜,但是整個流程是可以借鑒的。
**相關性:**S型規劃可以分為3大段(加速段-勻速段-減速段),而其中的加速大段或減速大段每段里面又是3小段,在“速度——加速度——加加速度”層面的“加速度增大——加速度恒定——加速度減小”的過程,類似于三段式“位置——速度——加速度”層面的“速度增大——速度恒定——速度減小”的對應關系。計算公式也很類似。
三段式求解
按照以上求解方式,計算流程中主要存在分支[1]:按梯形模型計算 或者 按三角形模型計算。實際應用上還要考慮分支[2]:梯形/三角的開口方向是向上的還是向下的。開口方向并不是顯然的根據距離的正負而決定的,例如以下兩個例子:
例1:PosEnd - PosStart = 10.0; 結果如下,藍色曲線為位置關于時間的變化,綠色曲線為速度關于時間的變化。
例2:PosEnd - PosStart = 5.0; 其他參數和例1完全相同,結果如下:
可以看到例1例2的距離都是正數,但是速度曲線的三角型開口一個朝上一個朝下。
我們可以用以下這種方式來判別速度梯形/三角形的開口方向:
1,先只做速度關于時間的規劃,假設以最大加速度從起始速度規劃到結束速度(速度曲線是一條直線,斜率為最大加速度),可以計算出此規劃的運動距離。
2,若假設的運動距離 < 結束位置-起始位置,則說明還存在速度為正的區間,而為了時間最優,這個正速度應當盡量的大,即應當等于速度三角型模型的尖角速度或梯形模型的平臺速度,同時也說明梯形/三角模型的開口應該朝下。
3,若假設的運動距離 > 結束位置-起始位置,則說明還存在速度為負的區間,而為了時間最優,這個負速度絕對值應當盡量的大,即應當等于速度三角型模型的尖角速度或梯形模型的平臺速度,同時也說明梯形/三角模型的開口應該朝上。
整體解算過程如下:
1,首先判斷1:若 VelStart > VelEnd,則預設加速度 Acc’ 為 -LimAcc,且;否則預設加速度 Acc’ 為 LimAcc。
2,然后只做從 VelStart 到 VelEnd 的勻變速規劃,根據以下公式 1 計算預設的運動距離 Dist:
D i s t = V e l E n d 2 ? V e l S t a r t 2 2 A c c (1) Dist = \frac {{VelEnd}^2-{VelStart}^2} {2{Acc}} \tag {1} Dist=2AccVelEnd2?VelStart2?(1)
3,判斷2-1:若 Dist <= PosEnd - PosStart,則梯形/三角模型開口朝下,接下來判斷是梯形模型還是三角模型.假設是梯形模型,根據以下公式 2 代入 Acc’ = -LimAcc, Vel’ = LimVel 計算勻速段耗時:
t 2 = P o s E n d ? P o s S t a r t V e l ′ ? V e l ′ 2 ? V e l E n d 2 2 V e l ′ ? A c c ′ ? V e l ′ 2 ? V e l S t a r t 2 2 V e l ′ ? A c c ′ (2) t2 = \frac {PosEnd-PosStart} {Vel'} - \frac {{Vel'}^2 - VelEnd^2} {2 Vel' * Acc'} -\frac {{Vel'}^2 - VelStart^2} {2 Vel' * Acc'} \tag {2} t2=Vel′PosEnd?PosStart??2Vel′?Acc′Vel′2?VelEnd2??2Vel′?Acc′Vel′2?VelStart2?(2)
4,判斷3-1:若 t2 >=0.0 ,則確定模型就是梯形模型。若 t2 < 0.0,則確定模型為三角模型。需要使用以下公式 3 進一步計算三角型的尖峰速度:
M a x V e l = A c c ′ ( P o s S t a r t ? P o s E n d ) + 1 2 ( V e l E n d 2 + V e l S t a r t 2 ) (3) MaxVel = \sqrt {Acc' {(PosStart-PosEnd) }+ \frac{1}{2} ({{VelEnd}}^2+{{VelStart}}^2)} \tag {3} MaxVel=Acc′(PosStart?PosEnd)+21?(VelEnd2+VelStart2)?(3)
5,經過以上分支的計算,軌跡的其他信息都可以簡單的求得。
6,判斷2-2:若 Dist > PosEnd - PosStart,則梯形/三角模型開口朝上,接下來判斷是梯形模型還是三角模型.假設是梯形模型,根據以上公式 2 代入 Acc’ = LimAcc, Vel’ = -LimVel 計算勻速段耗時。
7,判斷3-2:在判斷2-2的基礎上,若 t2 >=0.0 ,則確定模型就是梯形模型。若 t2 < 0.0,則確定模型為三角模型。需要使用以上公式 3 進一步計算三角型的尖峰速度:-MaxVel。
這樣就完成了梯形速度規劃的求解。
四,S型速度規劃編輯此區域
勻速段距離關于速度的函數
以上相似性已經分析過,兩者的求解流程相似,可以認為勻速段的速度是一個未知數,計算出其他所需的物理量,得到代數方程,再求解這個方程即可。
1,同樣的也是先假設勻速段速度能達到±LimVel,若能達到,則可以直接計算出規劃結果,并且勻速段的速度盡可能的大,所以整體耗時會更小。
2,若無法達到則是三角型模型,勻速段的耗時接近于0,且當勻速段的速度盡可能大的時候,整體耗時會更小。所以需要求解以上這個方程,方程的自變量是假設的勻速段速度,需要求解當勻速段耗時=0時絕對值最大的解。
3,而考慮到勻速段速度定義域包含0,時間 = 距離 / 速度,那么勻速段耗時關于勻速段速度的函數將不連續,更一般的情況,建立勻速段距離關于勻速段速度的函數 Sc = F(Vc)。
加速區間/減速區間
以上相關性已經分析過,梯形速度規劃的三段式,類似于S型速度規劃里的加速區間/減速區間,加速區間/減速區間可以稱為三段式梯形加速度規劃。其計算方式幾乎完全一樣。只用將梯形速度規劃里的時間,位置,速度,加速度,替換為自變量,因變量,一階導,二階導這樣一個更通用的數學形式;然后再在S型速度規劃的加速區間/減速區間里用物理量再替換回來,即替換回:時間,速度,加速度,加加速度。而通過以上 Sc = F(Vc) 的定義,Vc變成了自變量或者說已知量,所以可以直接使用梯形速度規劃的計算方式來求解梯形加速度規劃,進一步積分計算得規劃中的各位置量。
即,假設已知勻速段速度Vc,可計算得唯一的Sacc和Sdec表示加速區間和減速區間的距離增量。這樣也就求出了Sc = PosEnd - PosStart - Sacc(Vc) - Sdec(Vc) = F(Vc)。
而除了位置積分之外不再需要額外的計算公式,位置積分公式如下:
P ( t ) = P 0 + V 0 t + A 0 t 2 2 + J t 3 6 (4) P(t)=P_{0}+V_{0} t + \frac {A_{0} {t}^2} {2} + \frac {J {t}^3} {6} \tag {4} P(t)=P0?+V0?t+2A0?t2?+6Jt3?(4)
典型函數圖像
一般而言,以上F(Vc) = 0的求解存在多解的情況。尤其是直接在 [-LimVel , LimVel] 搜索可能并不能得到更優的解。
為了優化求解過程,并且進一步理解 Sc = F(Vc) 函數,可以觀察一下函數圖像。
例1,輸入參數:
Sc = F(Vc) 函數圖像結果:
上圖藍線為Vc,綠線為Sc,兩尖角處Vc為 -47.75 和 125。這兩個Vc點也是該組數據計算時的分段函數區間分界點,Vc = -47.75 對應“加速區間”計算時的判斷2-1和2-2的臨界點,即“加速區間”的梯形或三角形模型是開口朝上還是朝下;而 Vc = 125 對應“減速區間”計算時的判斷2-1和2-2的臨界點,即“減速區間”的梯形或三角形模型是開口朝上還是朝下.
例2,輸入數據:
Sc = F(Vc) 函數圖像結果:
上圖藍線為Vc,綠線為Sc,兩尖角處Vc為 95.416667 和 141.666667,也是該組輸入數據的“加速區間”和“減速區間”開口朝上朝下的臨界點。放大細節如下:
紅線為勻速段的擬定耗時,正數為有效的結果。
例3,輸入數據:
Sc = F(Vc) 函數圖像結果:
上圖藍線為Vc,綠線為Sc,兩尖角處Vc為 73.333333 和 -85.666667,也是該組輸入數據的“加速區間”和“減速區間”開口朝上朝下的臨界點。放大細節如下:
通過觀察以上典型圖像,對搜索的區間進行了優化,在一般情況下可以提高計算效率(縮小了搜索范圍), 且得到更優時間的解。具體的原理/證明等并不嚴格,具體實現參考下文“示例代碼——三 搜索范圍的確定”。
五,數值方法求解
基于以上內容已求得函數 Sc = F(Vc) = PosEnd - PosStart - Sacc(Vc) - Sdec(Vc)。其中Sacc(Vc)和Sdec(Vc)都是4段分段函數組合成的連續函數,其中涉及 根號Vc 的表達式。
則 F(Vc) 也是由分段函數組合成的連續函數,根據Sacc(Vc)和Sdec(Vc)的分段組合,它有4x4=16種具體的組合形式,且在一具體函數種同時最多存在7種組合,其中也包含根號Vc的復雜表達式。直接求解其解析解是較為困難的,結合《Trajectory Planning … 》的內容,可以使用以下這樣一種數值計算方法:
1,首先設 Vc1 = LimVel,若求得 Sc1 >= 0 則直接得到了時間最優解,否則下一步;
2,設Vc2 = -LimVel,若求得 Sc2 <= 0 則直接得到了時間最優解,否則下一步;
3,由于函數 F(Vc) 在定義域 [-LimVel , LimVel] 內連續,且存在 F(LimVel) < 0 和 F(-LimVel ) >0,根據中值定理,在區間 [-LimVel , LimVel] 內必定存在一個Vc使得 F(Vc) = 0,也就是要求解的結果。
4,在區間內的求解,最起碼的可以采用二分法進行迭代搜索。還可以采用其他經典數值計算的求根方法,加快求解效率。
割線法
割線法,又稱弦割法、弦法,是基于牛頓法的一種改進,基本思想是用弦的斜率近似代替目標函數的切線斜率,并用割線與橫軸交點的橫坐標作為方程式的根的近似。適用于原函數不方便求導的情況。
割線方程:給定函數 f(x) 上兩點 x[n-1] , y[n-1] 和 x[n] , y[n],這兩點所在的直線即為割線,方程為:
y - y[n] = (y[n] - y[n-1]) / (x[n] - x[n-1]) * (x - x[n]);
割線法即通過以上兩點 x[n-1] 和 x[n] 及其割線方程,求得割線與X軸的交點橫坐標作為 x[n+1],求得此點的函數值 y[n+1],再代入 x[n] 和 x[n+1] 不斷迭代,直至精度滿足需求。
搜索優化
牛頓法存在不一定收斂的情況,除開函數本身可能無解,迭代搜索過程中的計算也可能導致不收斂。牛頓下山法是對牛頓法的一種改進,它確保每一步迭代的范圍都是縮小的。
在以上割線法中也有類似不收斂的問題,也可以采用類似下山法的思路進行優化,具體實現查看附件代碼里的方法 M_Iteration。
其他方法
還有很多其他求根求最值的數值方法。例如 [Boost.Math](Chapter 10. Root Finding & Minimization Algorithms - 1.85.0 (boost.org)) 里的 TOMS Algorithm 748 算法,Brent-Dekker algorithm 布倫特方法,Muller Method 米勒法等等。
六,示例代碼
代碼見附件 Code_VelPlanS7Single.pdf 文檔。代碼中的Class_VelPlanS7_Single為規劃處理,VP_S7_Time2Position為按時間插值位置,Test為兩個單元測試例程。
一 初始化
代碼中為 M_Init 方法內容,進行初始化參數、范圍判定等。注意以下內容:
1,支持設置 StartAcc, EndAcc。需要在 [-LimAcc , LimAcc] 內。也可以超出,超出要另外處理。2,temp1、temp3、temp4、temp6、temp8、temp9 等是后續的迭代計算中的一些不變量, 為了減少每次迭代計算量而做的化簡。3,VpeakStart、VpeakEnd 也是由已知條件得到的常量。它們的意義在于,若已知7段式的勻速段速度V,則可以計算出7段式所有的信息,記計算出的勻速段距離為S2,加速段距離為S1,減速段路徑為S3. 即把問題理解為一個函數 :(S1,S2,S3) = function( Vmax )。也對應代碼中的 M_V2S 方法。而這個函數是基于兩個小函數 S1 = F(Vmax) 和 S3 = G(Vmax)。各自有4種情況,而VpeakStart、VpeakEnd就是這各自4種情況中的2類的分界點,即以上“加速區間”/“減速區間”梯形或三角性模型開口朝上/開口朝下的臨界點。
二 極限速度判斷
7段式時間最優速度規劃的思路是,使得勻速段的速度盡可能的大。所以一開始先假設能達到正負極限速度,看能不能滿足條件( 勻速段的時間 > 0)。若滿足條件,則直接得到最優結果。若不滿足條件,則需要在 ( -LimVel , LimVel ) 之間搜索。由于函數的連續性,在此區間內一定有解。
三 搜索范圍的確定
代碼 line 18 ~ 108,搜索范圍這里根據函數的特性,采用了一定方式進行處理,較快較優的得到一個更合適的范圍。
背景是這樣一個分段函數 Sc = F(Vc) 函數圖像如上圖。然后要找函數的零點,且在多個零點中找 V值絕對值更大的。上圖只是示意,實際橫縱坐標軸可能根據輸入條件平移。該方法并沒有找出所有的零點,而是根據函數的性質,將所有區間分為3部分 [ -LimVel, Vpeak1 ] , [ Vpeak1 , Vpeak2 ] , [ Vpeak2 , LimVel ]。 先去看看例如Vpeak2~LimVel 里面有沒有根。沒有就去看看Vpeak1~-LimVel。都沒有那就在 [ Vpeak1 , Vpeak2 ] 里面。
也可以直接在 ( -LimVel , LimVel )之間搜索,但數據測試來看以上方法效果更好。
四 迭代搜索
方法 M_Iteration 內為迭代搜索。還是以上說明的函數:(S1,S2,S3) = function( Vmax )
可以認為是單輸入單輸出的,輸入Vmax,輸出S2。求使得S2=0的解即是最優的結果。
函數本身是連續的,且搜索的上下界一正一負,所以各種搜索方法應當都可以搜索得到一個解。
這里采用割線法,且排除掉了割線范圍變大的情況。結果效果比較好,迭代收斂速度快。
五 按時間插值位置
VP_S7_Time2Position為按時間插值位置的函數,即輸入時間,輸出位置等。即7段式的7段不同函數。
注意看下規劃的結果、此函數的輸入:
規劃結果基本包含了所有信息,以減少插值函數的計算量。包括各段的時間 t1~t7, 加加速度 jerk 、加速度、速度、位置。
七,后文
所有解
以上數值方法求解中由提到,“…分段組合,它有4x4=16種具體的組合形式,且在一具體函數種同時最多存在7種組合,其中也包含根號Vc的復雜表達式…”。針對具體的16種組合的函數表達式,求出所有的解,再判斷解的可行性/時間最優,也是一種規劃求解方式。
“背景”中介紹的 Ruckig 基本采用這種思路,它根據Jerk的正負零的情況以及是否達到LimVel/LimAcc/LimDec的情況,將所有的類型分為32種,依次計算每一種,并提到其中最復雜的單一種類可變為6次多項式的求根。它在求出所有類型的解后,用每個解中的每一小段時間是否大于0等條件進行可行性判斷,并再在所有可行解中選擇時間最優的解。
實際上可以很容易的排除 ±LimVel 的情況,將總數量總32種減少為16種,并且在其中一些涉及根式的計算中,不再設定關于勻速段速度Vc的方程,而是設定關于最大加速度/減速度的方程,可以轉為更低次的方程求解。
這種求出所有解的方式能夠得到真正的時間最優解,但是在計算時間上并不一定有優勢。在一些需要定時規劃的應用場景中,可能會更有優勢。
連續多段速度規劃
單段式速度規劃是連續多段速度規劃的基礎,連續多段速度規劃也是軌跡規劃中需要解決的問題之一。一般來說都需要采用速度前瞻的處理方式進行規劃。
一種連續多段軌跡的速度規劃算法原理為:
1,在算法的初始階段設第一段的起始速度=0,最后一段的結束速度=0;假設相鄰段的銜接速度可以不為0,而銜接加速度=0。
2,在每一段內,按照從起始速度V0加速到結束速度V1,計算能夠加速到的最大V1。最大V1的目標值 TargetV[i] = min( LimVel[i] , LimVel[i+1] )。
3,每一段內的加速曲線仍然是3段式的(梯形加速度曲線),只用判斷梯形模型/三角模型的臨界情況,即可算得實際能加速的最大V1.
4,若 TargetV[i] < TargetV[i+1] ,則用以上的加速計算,確定結束速度V[i+1];若 TargetV[i] >= TargetV[i+1],則不用計算,暫時設V[i+1] = TargetV[i+1].
5,按i從小到大的順序,即正向依次算得所有V[i]。
6,再按照以上類似的方式,按i從大到小的順序,即反向依次再算一遍V[i],該過程中 TargetV[i] 為正向計算得到的 V[i]。這樣在正向計算中“減速模式”未精確計算的V[i]都得到了計算。所有的V[i]都正向/反向可達且為最大值。
7,這樣正向計算+反向計算后,就確定了所有銜接點的速度,且設定加速度=0,這樣每一段進行單段式求解的條件就都具備了,按單段式依次求解即可。
若連續多段速度規劃不是預先已知所有段的軌跡,而是通過緩存隊列的方式動態加載的(有稱為DMA功能),則還需要進一步修改算法,并考慮實時插補的運動耗時與前瞻規劃處理的計算耗時之間的同步影響。
空間三維插補和速度規劃
以上做的都是速度規劃,它已知的是一段軌跡/路徑的距離,而不用考慮軌跡/路徑的形狀。如何將速度規劃與空間中軌跡規劃聯系起來呢?
首先通過一個簡單的例子,空間中的三維直線路徑的插補,來展示它們之間的協作。
空間中的三維直線路徑可以有很多種方程表示,在此可以用參數方程的方式表示為:
u是參數從0到1變化,其他的ab為系數,由起點終點計算得到。
xyz(t)的空間三維關于時間的插值問題可以轉為u(t)參數關于時間的插值問題,也就是速度規劃問題。直線插補的合成最大速度/最大加速度為輸入參數,直線距離確定。可以轉到參數u,即u的值從0到1,并且等效計算u的最大速度/最大加速度等,這樣就可以進行 u(t) 的速度規劃了。然后在實時插補中,每一個插補時刻t對應速度規劃結果u(t)的一個u值,再通過以上路徑的參數方程求出x/y/z,即得到了 xyz(t) 的空間直線插值結果。
其他路徑的計算流程也是差不多的,例如空間圓弧路徑,通過靜態的坐標轉換可以表示為某平面內的圓弧,進一步表示為xyz關于圓心角theta的參數方程。
然后也是如上流程:
1,從路徑得到整體的路徑參數方程,及路徑長度,速度限制,加速度限制等;
2,按路徑長度進行速度規劃,得到路徑距離Dist(t);
3,按照速度規劃結果進行實時插值,并由Dist計算得到參數值u;
4,再由參數值計算路徑上的坐標值。
這套方法實際上是把空間多維路徑歸一化到共同的一個參數。它適用于任意空間三維位置路徑的插補。一些復雜路徑需要額外做一些工作,包括:1 計算復雜路徑的歐式空間積分距離;2 在實時速度插值時,已知路徑上的距離Dist(t),求參數u。
多維度時間同步速度規劃
空間中的三維位置(x,y,z)所構成的路徑,可以變為一維的曲線距離,按照一維進行速度規劃。但是有時涉及多個獨立維度的時間同步速度規劃,這時需要處理的一個基本問題是:兩組/多組速度規劃曲線如何時間同步,或者說確定時間的速度規劃。
一般來說,可以通過以上“所有解”的方式,確定所有可行的區間,從Sc=F(Vc)來說,它是自變量Vc的定義域區間,同時也是按Vc求得的整段耗時t 的值域區間。多個自由度的可行耗時 t 區間如下圖所示:
若是多個自由度需要進行時間同步,則如上圖所示按照可行區間的邊界值從小到大進行判定,是否在所有可行區間內,灰色為不可行的實時間區間,最終得到粗黑線T3a為這三個自由度的最小可同步時間。這樣來確定最小的同步時間
若是單個自由度需要進行確定時間的規劃,則先看設定的耗時是否在可行區間內,不在則沒有解,若在則可以在區間內通過數值迭代的方式求解,或通過確定的(以上"所有解"中16種組合之一)解析式直接求解。
以上只是單段的多自由度時間同步,在解決以上這些基礎問題后,還要考慮的是連續多段的多維度同步規劃如何讓整體的時間更優,這才是真正的難點。