多軸插補為什麼普遍使用梯形速度曲線?

最近學習機器人的運動控制方面,學過運控或者接觸過運動演算法規劃的都知道S形曲線,jerk可定義閥值,加速度曲線連續。但是為什麼現實中多軸插補(工業機器人,CNC中)還是普遍使用梯形速度曲線。求大神指點。對伺服這塊剛入門,是否和伺服這塊有關?

1. ICRA2014上 Joonyoung Kim分享了Trajectory Planning for Robots: The Challenges of Industrial Consideration的PPT,其PPT的最後一頁為其結論,截圖如下:

同時這個PPT可以讓大家對機器人運動控制有整體的了解。

2.SIEMENS 840D在CNC的控制器市場中佔有主導地位,我今天翻閱了其相關手冊(以前略了解過),針對大家的疑問,截圖如下:

如果有錯,請大神指點,大家討論才能知道什麼是對的

3. SIEMENS 的SIMOTION運動控制器(以前花兩個月時間學習過,但是速度曲線這塊今天也是第一次翻閱)是西門子針對除CNC的控制器的一般運動控制平台:

其中關於路徑速度曲線有兩個選項:

Trapezoidal: constant acceleration, not accounting for
jerk;

Smooth: constant acceleration, jerk is
accounted for;

如上圖所示是其梯形速度規劃使用的參數圖,可以明顯看到jerk是有數值的,即我們理論的梯形速度曲線在現實的控制器中,jerk並不是無限大,還是有閾值的,只不過jerk值很大。

4.因為最近做相關項目,所以找了一本軌跡規劃的英文教材Trajectory Planning for Automatic Machines and Robots,這本書建議大家詳細看看。

5. 速度曲線的選擇依賴於具體的應用過程,PTP指令中還是使用TVP或者S曲線的多。工業機器人這塊涉及到動力學,正逆運動學,且在實際做運動控制中需要充分考慮執行機構即伺服電機的連續工作電流和峰值電流,以及規劃中避免奇異位形和考慮其限位等。

謝謝大家的回答,希望大家能坦誠的討論,每個人的成長和知識都有欠缺和局限性,討論的過程中才能共同成長。我只是剛入門,在諸位大神面前出醜了,如若有錯及時指出,謝謝!


謝邀。

對於不存在耦合的多軸系統中,由於電機能力和負載已知,可以計算出一個可達的最大加速度,這樣使用傳統的T/S加速規劃就可以獲得非常好的效果。

但是對於機器人這樣一個多軸相互耦合的系統,在運動過程中,各個關節的負載慣量是在不斷變化的,因此使用傳統的T/S型規劃無法很好的滿足需求。

下圖是機器人在笛卡爾空間畫幾個圓弧時,使用在線規劃方法規劃完成的速度曲線(綠色),大家感受下:

給不熟悉運動規劃的同學啰嗦一點背景知識。

一個物體從起點運動到終點,要經歷加速、勻速、減速的過程,把整個過程中速度隨時間的變化關係畫出來,就是速度曲線或者速度輪廓(Velocity Profile)。常見的速度曲線包括:梯形規劃(trapezoidal Profile),S型規劃(S-Curve/Profile),多項式規劃(Polynomial Profile)。

梯形規劃指的是速度大小隨時間變化的曲線輪廓是一個梯形,T型規劃只有加速、勻速、減速三個階段:

S型規劃的「S」單指加速階段的速度輪廓,整個S規劃分為7個階段:加加速、勻加速、減加速、勻速、加減速、勻減速、減減速。其中 加加速、勻加速、減加速 三個階段的曲線合在一起像英文字母S。(綠色曲線的前半部分,藍色的是加速度,紅色為加加速度):

S規劃相對於T規劃,加減速更加平穩,對電機和傳動系統的衝擊更小,但是在相同的期望速度下,運動同樣的距離所需的時間更長:

S規劃中,其加速度的曲線是T型的;換一種說法,當S規劃中的jerk足夠大時,S規劃就變成了T規劃。

T型規劃和S型規劃的數學表達式都是分段函數,而多項式規劃一般指的是可以用單個表達式表達的曲線,根據約束條件不同,常用的是3次和5次多項式:

在機器人系統中,單純的多項式規劃有一個非常嚴重的問題:沒有勻速段。從上圖中可以看出,單純的多項式規劃無法根據期望速度提供勻速控制,而在大部分機器人應用中,對加工的速度控制都是有要求的。另一個問題就是,次數越高的多項式,加速過程越慢,整個運動過程中的平均速度越小,影響效率。

再講回來為什麼機器人系統中很少使用T形和S型規劃。

主要原因是這兩種規劃的基礎是加速度限制(Acceleration Limiter),也就是說必須要指定一個期望最大加速度,使用該期望加速度進行規劃。由於機械臂在整個空間中處於不同構型時可以達到的最大加速度是不一樣的,因此無法確定一個廣泛適用的最大加速度值用於離線的S/T規劃。設置的小了,無法充分發揮伺服系統的性能;設置的大了,可能會損壞伺服系統或者嚴重影響跟蹤精度。

因此一個好的方法是使用扭矩限制器(Torque Limiter)來進行速度規劃,這樣可以充分發揮伺服系統的潛力。反過來,這樣也就破壞了S/T型規劃的理論基礎(加速度是隨時變化的),不能用了。

很多教材中以梯形規劃為例進行講解主要是為了便於理解,或者那本教材是入門用的。

----------------------------------------------分割線啊分割線------------------------------------------------------

在與演算法組的小夥伴兒溝通過之後,更新一下。

下圖是我們春節時使用機器人寫的一幅字:

在考慮電機最大轉速、電機最大力矩、機器人奇異性等限制後,得到的沿路徑的最大允許速度如下圖所示:

在這種情況下,如果想不超出限制,是無法使用傳統的T/S型規劃的,除非把勻速段的速度限制在上圖藍色曲線的最小值以下。

使用基於限制的在線速度規劃得到的最終速度曲線如下,不是全局最優,但已經是較大程度的利用伺服系統性能了(這是去年的版本哦):

最終的效果,大家可以觀看視頻:http://www.le.com/ptv/vplay/24616567.html?ch=baidu_s本文開頭第一張圖,來自《Successive dynamic programming and subsequent spline optimization for smooth time optimal robot path tracking》。


最近一段時間負責國內一家從事切割焊接CNC公司系統開發的FPGA片上系統的實現,下面從工業界角度來回答一下樓主的問題,希望能解決一些樓主的疑惑。

首先講一下整個CNC系統架構,一般採用arm處理器加FPGA(日本有使用ASIC實現可以一定程度降低成本)的架構,arm作為上位機(也有採用x86架構cpu,比如工控主機),arm處理器主要負責顯示,操作(觸屏,鍵盤控制等),以及運動控制演算法處理,這裡運動控制演算法主要是計算插補參數;FPGA部分實現與arm上位機的介面控制,指令解碼以及具體的插補演算法實現(實際就是根據上位機指令輸出特定的周期脈衝,PWM或者模擬量)。

這個架構師綜合考慮了產品需求,開發成本,硬體成本,系統性能等一系列因素。CNC作為一個實時性要求較高的系統,本質上來看是對資源和性能兩個因素的綜合考慮。結合具體CNC系統架構,多軸系統在arm處理器這端主要消耗運動控制演算法處理資源,FPGA這端則是需要消耗IO,邏輯(運算),存儲資源。

樓主問題中的插補演算法就是在FPGA端實現的,對於不同插補演算法的性能比較(梯形,S型,多項式)上面幾個答案有較為詳細的描述,這裡不再贅述。我以一個實際例子來說明不同演算法對於資源的消耗情況以及延伸出去的成本問題。相同的一款FPGA型號,在相同插補相關參數的情況下(主要是DDA位寬),採用梯形插補演算法可以實現6軸,而採用勻變速插補演算法(即多項式插補演算法的一種,每個插補周期加速度固定)只能實現4軸。這裡FPGA資源優化基本已經做到了極限,也就是說可以認為以上兩種實現是在消耗相同資源的情況下。

實際上採用勻變速插補演算法僅比梯形插補演算法每個軸增加一個較大位寬的加法器,採用S型和更高階的多項式插補演算法對於資源的消耗將進一步的提升。回到資源帶來的成本問題,想要用性能更高的插補演算法就意味著需要更多的FPGA資源,由於FPGA晶元成本非常的高(對於CNC系統需要的FPGA型號增加2-3倍資源可能要增加幾十塊成本)。此外對於實際工業系統,考慮兼容性,不同的需求通常採用相同的硬體平台,也就是說,可能一些對性能和軸數要求都不是很高的系統還是用較大容量的FPGA來實現,無形中更提升了成本。

回過頭來說不同插補演算法帶來的性能問題,還是前面提到的梯形插補演算法和勻變速插補演算法的例子,以切割為例,實際的工業需求角度來看梯形插補演算法對於火焰,等離子等傳統切割已經足夠保證性能需求(因為速度都較低),僅對於激光切割(需要運動速度較高)滿足不了,而稍微改進的勻變速插補演算法已經可以較好的滿足激光切割的要求,而從成本,開發角度上又沒有增加太多的消耗,因此僅在激光切割系統上採用這種插補演算法(相同硬體平台上意味著軸數需要降低)。更高性能的演算法基本不在考慮範圍內。因此從需求出發,找到演算法性能的邊界進而找到成本的邊界是工業界核心考慮的東西。

一句話來說都是需求決定的。


我沒查到題主說的「現實中多軸插補(工業機器人,CNC中)還是普遍使用梯形速度曲線」相關的內容,或許題主是從實踐中總結出來的吧,我默默的翻出了落灰的文件夾裡面以前用過的PMAC運動控制卡的資料,查詢插補相關的資料,有些好像看不懂了···(⊙﹏⊙)b,先貼圖如下吧「

好像提到了很多種插補模式,然而我當年都是直接調用spline模式(3次樣條插值,這種方式比較穩定,在移動邊界速度和加速度都是連續的,PMAC工程師說這個運動比較穩當):

然後也沒說那個用的多那個用得少,所以我又翻看了課本《robotics:modelling,planning and control》。

課本上給出的點到點,起始點和末端點速度都為零,電機能量消耗最小,這種軌跡的計算方法如下:

然後我發現書里提到了工業實踐中另一種常用方法是使用混合多項式的時間律,允許驗證機械手是否在物理上支持做得到的速度和加速度,下面一段就拿梯形規劃做的例子,但是作者沒說為啥用的多。An alternative approach with timing laws of blended polynomial type is frequently adopted in industrial practice, which allows a direct verification of whether the resulting velocities and accelerations can be supported by the physical mechanical manipulator。In this case, a trapezoidal velocity profile is assigned, which imposes a constant acceleration in the start phase, a cruise velocity, and a constant deceleration in the arrival phase. The resulting trajectory is formed by a linear segment connected by two parabolic segments to the initial and final positions.

我接著往下看,到最後提到了一個指標。

就是說梯形規劃性能指標不怎麼好,但是也就比最優化的差了12.5%,所以我猜這是不是主要原因,就是梯形規划算起來比較簡單省事,而且性能也沒差多少。

猜想的不對的,請各位大神輕拍~~


測試過實驗室的一台義大利柯馬機器人,貌似並不是梯形速度曲線規劃方式。

比如讓它來回移動一條直線,看到笛卡爾空間速度曲線如下圖:

可以看到這並不是簡單的梯形速度曲線,應該是S型速度曲線,它在笛卡爾空間差分得到的加速度如下圖(由於是用採樣回來的位置值差分得到加速度,原曲線雜訊比較大,進行了簡單濾波,可能有一點改變曲線形狀)

可以看到,它的加速度是接近梯形的。

之前做過一段時間五軸數控插補,說說自己對類似的這種耦合的軌跡規劃問題。

使用S型規劃,優點是計算簡單,效率高,方便實時計算。針對機器人或者數控系統,一般都是預讀一小段路徑點,然後在線計算參考位置點,因此採用梯形或S型規劃比較有優勢。

但是,利用梯形速度或S型速度在耦合的軌跡規劃時,則會存在問題。可能根據位置規划出來的軌跡是連續的,但經過運動學逆解到機床坐標系或者關節空間,軌跡會變得不連續。比如最近做的一個數控插補問題,在工件坐標系下得到的速度曲線是這樣的:

可以看到效果還是比較不錯的,但是,將插補點通過運動學逆解反算到機床坐標系下後,得到的各軸速度曲線卻成了這個樣子:

可以看到各軸速度波動稍微大了一些。(更正了一下,之前發的圖是我做的有問題,實際情況並沒有那麼不連續)

所以,一般文獻里針對五軸數控或機器人,比較多的是採用關節空間規劃或者在笛卡爾空間進行優化求解。針對關節空間在線軌跡規劃,斯坦福的Kroger做了不少工作,他可以實現任意初始狀態下(速度、加速度為任意值),規劃得到光滑的運動軌跡到指定速度、加速度的目標位置。他這方面寫了一本書,還有一個專門賣的庫Reflexxes,據說可以實現在線規劃,youtube上也有視頻,有興趣可以去了解一下。

基於優化求解的方法就更多了,一般時間最短,能量最小什麼的,理論也比較成熟,但問題主要在於計算量比較大,一般比較難實現實時計算。在數控方面試過將優化問題化簡為線性規劃,求解效果能用,如下圖所示:

這樣的計算已經是非常簡化了的,然而實際應用的時候還是發現計算量過大,不能實現實時計算。因此,認為目前主要採用梯形或S型規劃方法,還是基於計算時間上的考慮。


最近剛看了本書 Robotics, Vision and Control, 裡面對Trajectory Planning 中應用的曲線類型進行了一個簡單的分類。可能對回答題主的問題有所幫助。

機器人運動曲線是時間的函數,其一個最重要的特徵就是其光滑性。一般要求位置、速度、加速度光滑連續,因而,如果初始點和終點均限定位置、速度、加速度三個條件,我們可以使用一個5次多項式表示機器人運行軌跡。此時規劃處的路徑如下圖所示:

上圖中自上而下依次為位置、速度和加速度曲線。從上圖中速度曲線可以看出,機器人速度在25s處達到最大值,其餘時間均小於最大值,因而速度利用率較低,我們可以使用平均速度除以最大速度得到上圖中速度利用率為0.5231。對於一個實際機器人系統,其最大速度一般是固定的,因而,為了縮短動作時間,提高速度利用率,在軌跡規劃中,我們希望速度曲線在最大速度的時間儘可能的長,即梯形曲線,如下圖所示:

總的來說,普遍使用梯形速度曲線是為了提高轉速的利用率。

希望能對題主的問題有所幫助。


現在大部分cnc都可以設置參數、根據程序需要把梯形曲線需要的部分設置成近似S曲線。

代價是如果設置的過密會增加cnc負擔、往往會影響到一些內部處理導致加工不良


我覺得主要是實時性、實用性和歷史原因(比如數控系統改寫複雜性,相應維護)。

1.先談實時性。

單純的路徑固定問題,速度(弓高,可以想像類似輪廓誤差)、加速度(機器人的扭矩,電壓)括弧的意思是該約束從數學角度看是一樣的限制,已經可以在比較短的時間計算出最優速度。比如對於2000個插補點只需要小於0.1秒。但從實時性的要求,數控系統(各有不同)有的前瞻比如要求8ms,也就是0.008秒,這樣的話無論如何都只能找一個可行解,比如T或者S,更好也更複雜一點的可行解就是在VLC(速度限制曲線)下找。

對於高階的約束,比如jerk(機器人扭矩變化率,電壓變化率),這樣的問題多數情況並不是一個凸優化問題,因此從數學角度,解得唯一性都沒法確定,即便數值離散求解也會很容易陷入求解局部解的情況。現在存在的方法,比較好的工作只能做到的是找到一個很接近最優的次優解。計算時間因為方法不同,各有不同。單往往比低階約束高很多。

2.實用性

軍工多數要高階約束的,比如齒輪,航空件。晶元加工對於振動敏感的也會考慮jerk。

單民用比如雕刻,一般模具的加工,一是沒必要為此犧牲效率,二是引入jerk首先多數並不知道如何解決這個問題(儘管比如國內,瀋陽藍天數控已經開始引入s型插補)。

高階約束比如jerk我們本意是減少震動,使速度更光滑,物件表面更光滑,但其實這裡面控制也是很重要的因素。因此現在做的更多是在控制(比如濾波)和震動反向消除(模擬數控系統震動建立反向震動裝置)。

3.歷史原因

數控系統寫完N多行,才幾年還在維護呢又要重寫....多數會有成本的考慮。別忘了,數控系統是個不允許宕機的系統。


你說的是應該是,An S-curve profile must begin when load/motor is not moving.

英文引自Motion Programming with EasyMotion Studio

而且,Github最受歡迎的CNC程序smoothieware,帶有路徑前瞻18段,也是Trapezoidal,如果S曲線能夠用於軌跡跟蹤,肯定會用的,這也說明不能。個人研究發現,S曲線規劃的速度和路程約束是3次方程組,很難求解。網上很多論文想解決S曲線軌跡跟蹤都是不了了之,引用率很低。


一個大專學工業機器人,要如何在這條路上立足?儲備專業學校那九牛一毛的知識?還是小找公司呆在裡面裡面的發酵?(今年大二專科正面臨實習)


論文里大多數都採用多項式啊。請教一下,加加速連續在應用上有實際意義嗎?加加速連續的話採用更高階的曲線嗎?運算量很大啊。


請問下使用插補曲線時,在曲線上採樣的密度是怎麼樣的

比如10ms採樣一個點,或者1度一個採樣點


速度是梯形的應該是三階S軌跡,加速度值不連續。實際用的四階軌跡比較多,加速度是梯形的,jerk值不連續。階數越高,軌跡的高頻越少,對於控制器的要求越低。


首先謝邀。

這個問題超出本人學習範疇了,我的工業機器人知識主要在應用領域,前期的東西,不會啊, 。


推薦閱讀:

如何評價kinema systems的識別抓取系統?
在工業機器人領域做演算法工程師是怎樣的體驗?
如何看待安川電機和美的集團建立工業機器人和服務機器人兩個合資公司?
用電流反饋和力感測器是不是都可以實現工業機器人的觸停、示教或力控打磨,這兩種方式各有哪些優勢和不足?
universal robot無力矩感測器的情況下, 如何建立精確動力學模型的?

TAG:機器人 | 工業機器人 | 運動控制 | 機器人控制 |