色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解S型加減速曲線規劃算法總結

strongerHuang ? 來源:小麥大叔 ? 作者:小麥大叔 ? 2021-04-09 17:18 ? 次閱讀

做過運動控制的小伙伴都知道,S曲線很重要,下面一張動圖對比一下,你就知道S曲線的好處:

f9d22f2c-9910-11eb-8b86-12bb97331649.gif

下面分享一下S曲線的內容:

1 前言

S形加減速的最重要特征是該算法的加速度/減速度曲線的形狀如字母 S。S形加減速的速度曲線平滑 ,從而能夠減少對控制過程中的沖擊,并使插補過程具有柔性 [^1]。由于T形曲線在加速到勻速的切換過程中,實際中存在較大過沖,因此這里對比一下T曲線和7段S曲線的實際過程;

T形:加速 -》 勻速 -》 減速

S形:加加速() -》 勻加速() -》 減加速()-》 勻速()-》 加減速()-》 勻減速()-》 減減速()

上文在加速這塊的文字描述可能讀起來起來有點繞,下面看圖:

fa688bf2-9910-11eb-8b86-12bb97331649.png

2 理論

分析由于S曲線在加減速的過程中,其加速度是變化的,因此這里引入了新的一個變量 ,即加加速度。

因此對應上圖的7段S速度曲線中,規定最大加速為,最小加速度為,則加速度的關系;

加加速():逐漸增大;

此時

勻加速():達到最大;

此時

減加速():逐漸減小;

此時

勻速():不變化;

此時

加減速(): 逐漸增大;

此時

勻減速(): 達到最大;

此時

減減速(): 逐漸減小;

此時

“為加速度的絕對值;其中

所以通常需要確定三個最基本的系統參數 :系統最大速度 ,最大加速度a_{max} ,加加速度,就可以可確定整個運行過程[^2] ;

最大速度:反映了系統的最大運行能力 ;

最大加速度:反映了系統的最大加減速能力 ;

加加速度:反映了系統的柔性;

柔性越大,過沖越大,運行時間越短;

柔性越小,過沖越小,運行時間越長;

2.1 加速度時間關系方程

整個加速度變化的過程具體如下圖所示;

fd6f8756-9910-11eb-8b86-12bb97331649.png

再次強調一下 和 的關系,另外這里再引入變量 ,

比如,當前時刻 ,即 位于區間 ,則如果將 作為初始點,則 為 相對于時刻的時間,則有:

下面可以得到加速度與時間的關系函數,具體如下:

根據 ① 式,將 代入 ② 式可以得到:

上式中 ;

2.2 速度時間關系方程

速度和加速度滿足 ;加加速度和速度的關系滿足:

結合加速度時間關系并結合② 式可以得到速度曲線關系,具體關系如下圖所示;

fd8a7a20-9910-11eb-8b86-12bb97331649.png

進一步簡化可以得到:

fdd9a776-9910-11eb-8b86-12bb97331649.png

2.3 位移時間關系方程

位移 和加加速度 直接滿足關系如下:

簡單推導

因此可以得到:

“積分忘的差不多了,回去再復習一下;

最終位移的方程如下所示;

fdfa85f4-9910-11eb-8b86-12bb97331649.png

3 程序實現的思路

正如前面所提到的,S曲線規劃需要確定三個最基本的系統參數 :系統最大速度 ,最大加速度a_{max} ,加加速度,這樣就可以確定這個運行過程。這里有一個隱性的條件,就是在運行的過程中可以達到最大速度,這樣才是完整的7段S曲線,另外這里還有一些中間參數:

,因此有 ;

加加速度 ;

,用戶給定整個運行過程所需要的時間;

但是通常實際過程中關心,,;

3.1 推導

理想狀態假設存在 和,則推導過程如下:

因此可以得到:

簡化之后得到:

根據②式可知:

最終得到:

下面可以根據位移時間關系方程進行離散化的程序編寫。

假設可以到達最大速度,且用戶給定了整個過程運行時間,則 的推導如下:

簡化上式可以得到:

根據 代入上式可得:

3.2 的推導

這時候還剩下需要計算,通過已量 可以推導出來;首先位移之間滿足關系如下:

其中加速區長度為 ;其中減速區長度為 ;

具體推導;[^2]前面提到過,,因此在=0的時候,則

這里簡單推導一下:

根據④,⑤最終簡化得到:

“:為運行的總時間:為運行的總路程

詳細推導過程如下:

因為:

因為:

所以,簡化得到:

所以可以得到:

因為:

將其代入可以得到:

簡化得到最終結果:

4 matlab

程序matlab程序親測可以運行,做了簡單的修改,因為這里直接給定了整個運行過程的時間,所以需要在SCurvePara函數中求出加加速度 的值,路程為 1:

SCurvePara

function [Tf1,V,A,J,T] = SCurvePara(Tf, v, a)

T = zeros(1,7);

for i=1:1000

% 加加速度 J

J = (a^2 * v) / (Tf*v*a - v^2 - a);

% Tk

T(1) = a / J;

T(2) = v / a - a / J; % t2 = v / a - t1;

T(3) = T(1);

T(4) = Tf - 2 * a / J - 2 * v / a; % t4 = Tf - 4*t1 - 2*t2;

T(5) = T(3);

T(6) = T(2);

T(7) = T(1);

% 根據T2和T4判斷S曲線的類型

if T(2) 《 -1e-6

a = sqrt(v*J);

display(‘t2《0’);

elseif T(4) 《 -1e-6

v = Tf*a/2 - a*a/J;

display(‘t4《0’);

elseif J 《 -1e-6

Tf = (v^2 + a) / (v*a) + 1e-1;

display(‘J《0’);

else

break;

end

end

A = a;

V = v;

Tf1 = Tf;

end

SCurveScaling

function s = SCurveScaling(t,V,A,J,T,Tf)

% J = (A^2 * V) / (Tf*V*A - V^2 - A);

% T(1) = A / J;

% T(2) = V / A - A / J; % T(2) = V / A - T(1);

% T(3) = T(1);

% T(4) = Tf - 2 * A / J - 2 * V / A; % T(4) = Tf - 4*T(1) - 2*T(2);

% T(5) = T(3);

% T(6) = T(2);

% T(7) = T(1);

%%

if (t 》= 0 && t 《= T(1))

s = 1/6 * J * t^3;

elseif ( t 》 T(1) && t 《= T(1)+T(2) )

dt = t - T(1);

s = 1/2 * A * dt^2 + A^2/(2*J) * dt.。.

+ A^3/(6*J^2);

elseif ( t 》 T(1)+T(2) && t 《= T(1)+T(2)+T(3) )

dt = t - T(1) - T(2);

s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt 。..

+ 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);

elseif ( t 》 T(1)+T(2)+T(3) && t 《= T(1)+T(2)+T(3)+T(4) )

dt = t - T(1) - T(2) - T(3);

s = V*dt 。..

+ (-1/6*J*T(3)^3) + 1/2*A*T(3)^2 + (A*T(2) + A^2/(2*J))*T(3) + 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);

elseif ( t 》 T(1)+T(2)+T(3)+T(4) && t 《= T(1)+T(2)+T(3)+T(4)+T(5) )

t_temp = Tf - t;

dt = t_temp - T(1) - T(2);

s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt 。..

+ 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);

s = 1 - s;

elseif ( t 》 T(1)+T(2)+T(3)+T(4)+T(5) && t 《= T(1)+T(2)+T(3)+T(4)+T(5)+T(6) )

t_temp = Tf - t;

dt = t_temp - T(1);

s = 1/2 * A * dt^2 + A^2/(2*J) * dt + A^3/(6*J^2);

s = 1 - s;

elseif ( t 》 T(1)+T(2)+T(3)+T(4)+T(5)+T(6) && t 《= T(1)+T(2)+T(3)+T(4)+T(5)+T(6)+T(7) + 1e5 )

t_temp = Tf - t;

s = 1/6 * J * t_temp^3;

s = 1 - s;

end

end

測試的代碼如下:TEST

%%

N = 500;

ThetaStart = 0; %起始位置

ThetaEnd = 90; %最終位置

VTheta = 90; %1 速度

ATheta = 135; %1.5 加速度

Tf = 1.8; % 總行程時間

v = VTheta/(ThetaEnd - ThetaStart);

a = ATheta/(ThetaEnd - ThetaStart);

v = abs(v);

a = abs(a);

Theta = zeros(1,N);

s = zeros(1,N);

sd = zeros(1,N);

sdd = zeros(1,N);

[TF,V,A,J,T] = SCurvePara(Tf, v, a);

display(J, ‘J:’);

display(TF,‘Tf:’);

display(V,‘v:’);

display(A, ‘da:’);

display(TF-Tf,‘dTf:’);

display(V-v,‘dv:’);

display(A-a, ‘da:’);

t=linspace(0,TF,N);

dt = t(2) - t(1);

for i = 1:N

if i == N

a = a;

end

s(i) = SCurveScaling(t(i),V,A,J,T,TF);

Theta(i) = ThetaStart + s(i) * (ThetaEnd - ThetaStart);

if i》1

sd(i-1) = (s(i) - s(i-1)) / dt;

end

if i》2

sdd(i-2) = (sd(i-1) - sd(i-2)) / dt;

end

end

subplot(3,1,1);

legend(‘Theta’);

xlabel(‘t’);

subplot(3,1,1);

plot(t,s)

legend(‘位移’);

xlabel(‘t’);

title(‘位置曲線’);

subplot(3,1,2);

plot(t,sd);

legend(‘速度’);

xlabel(‘t’);

title(‘速度曲線’);

subplot(3,1,3);

plot(t,sdd);

legend(‘加速度’);

xlabel(‘t’);

title(‘加速度曲線’);

看到最終仿真結果和預期相同;

fe0f71da-9910-11eb-8b86-12bb97331649.jpg

最后再看一下T形和S形速度曲線規劃的效果對比:

5 總結

本文只對7段的S曲線規劃做了詳細的推導和介紹,matlab中的程序對于4段和5段都有做實現,很多是在理想情況下進行推導的,初始速度默認為0,終止速度也為0,并且假設加減速區域相互對稱。最終運行結果符合預期效果。

“文中難免有錯誤和紕漏之處,請大佬們不吝賜教創作不易,如果本文幫到了您;

6 參考

[^1]:陳友東 魏洪興 王琦魁。數控系統的直線和 S 形加減速離散算法[D]。北京:中國機械工程,2010.

[^2]:郭新貴 李從心 S 曲線加減速算法研究 上海交通大學國家模具 CAD 工程研究中心 , 200030
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2977

    瀏覽量

    230601
  • 運動控制
    +關注

    關注

    4

    文章

    582

    瀏覽量

    32885

原文標題:硬核 | S速度曲線規劃算法總結

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ZMC600E運動控制器TS速度規劃詳解

    導讀想深入了解ZMC600E運動控制器的速度規劃嗎?T線性加減速簡潔高效,S過渡自然減震,避免沖擊。通過合理的
    的頭像 發表于 12-30 11:40 ?105次閱讀
    ZMC600E運動控制器T<b class='flag-5'>型</b>、<b class='flag-5'>S</b><b class='flag-5'>型</b>速度<b class='flag-5'>規劃</b><b class='flag-5'>詳解</b>

    減速電機概述了解多少?

    減速電機的工作原理是通過把電動機的動力通過齒輪(或者蝸輪蝸桿)減速機,大大降低轉速,從而增加減速電機的輸出扭矩,以滿足機械設備工作的需要。此動力傳動設備有個不可忽視的核心——“增力減速
    發表于 12-23 15:16

    多臺倉儲AGV協作全局路徑規劃算法的研究

    多AGV動態路徑規劃需解決沖突避免,核心在整體協調最優。規劃時考慮道路設計、擁堵、最短路徑和交通管制,用A*算法避免重復路徑和轉彎,同時需交通管制防相撞。創新響應需求是關鍵,良好路徑規劃
    的頭像 發表于 10-28 17:38 ?305次閱讀
    多臺倉儲AGV協作全局路徑<b class='flag-5'>規劃算法</b>的研究

    步進電機如何在加減速過程中控制技術?

    步進電機是一種將電脈沖信號轉換為角位移或線位移的電機,廣泛應用于各種自動化控制系統中。在加減速過程中,步進電機的控制技術至關重要,以確保系統的穩定性和精確性。 加減速控制原理 步進電機的加減速控制
    的頭像 發表于 10-23 10:02 ?398次閱讀

    伺服電機加減速機慣量怎么計算

    伺服電機加減速機系統是現代工業自動化領域中常見的一種傳動裝置,它通過將伺服電機的高速旋轉轉化為減速機的低速大扭矩輸出,實現對負載的精確控制。在設計和使用伺服電機加減速機系統時,了解其慣量特性是非
    的頭像 發表于 06-14 10:54 ?3367次閱讀

    stm32控制步進電機加減速的穩定性?

    加減速的時候,在固定的時間內增加或者減少固定的轉速。網上看了s曲線或者梯形加減速的一些介紹,也仿照s
    發表于 05-06 07:21

    STM32的電機庫適合用來做步進電機嗎? 里面包含有加減速算法沒呢?

    STM32 的電機庫 適合用來做步進電機嗎? 里面包含有加減速算法沒呢?
    發表于 05-06 07:02

    如何用stm32f103zet6控制伺服電機的加減速運動?

    想用stm32f103zet6控制伺服電機的加減速運動,不知該怎么做,請大神指教。具體情況是有個機械凸輪,有一根頂桿頂著凸輪邊沿,隨著凸輪轉動及其外徑的變化,水平頂桿會沿水平方向作直線運動。現在可以
    發表于 04-30 08:00

    基于FPGA的常見的圖像算法模塊總結

    意在給大家補充一下基于FPGA的圖像算法基礎,于是講解了一下常見的圖像算法模塊,經過個人的總結,將知識點分布如下所示。
    的頭像 發表于 04-28 11:45 ?613次閱讀
    基于FPGA的常見的圖像<b class='flag-5'>算法</b>模塊<b class='flag-5'>總結</b>

    什么是伺服減速電機?松下伺服減速電機選型怎么選?

    伺服減速電機,又稱減速伺服電機,一般是指伺服電機減速機,安裝在伺服電機上,用來降低轉速,提升扭矩,匹配慣量,具有高剛性、高精度、高扭矩、免維護等特點。 什么是伺服減速電機?伺服
    的頭像 發表于 03-05 08:43 ?918次閱讀
    什么是伺服<b class='flag-5'>減速</b>電機?松下伺服<b class='flag-5'>減速</b>電機選型怎么選?

    沖壓自動線規劃的幾點考慮

    在制造業中,沖壓自動線規劃是確保高效生產和卓越質量的關鍵環節。成功的規劃需要綜合考慮多個因素,以滿足產品設計、生產能力和質量標準等方面的要求。本文將圍繞沖壓自動線規劃的幾個關鍵考慮因素提出阿童木
    的頭像 發表于 01-22 14:58 ?383次閱讀
    沖壓自動<b class='flag-5'>線規劃</b>的幾點考慮

    解析四次位移曲線的CNC數控系統的研究

    加減速控制是CNC 系統的關鍵技術之一,也是實現數控系統高實時性的瓶頸。在CNC裝置中,為了保證機床在啟動或停止時不產生沖擊、失步、超程或振蕩,必須對進給電機的脈沖頻率或電壓進行加減速控制。
    發表于 01-19 15:02 ?407次閱讀
    解析四次位移<b class='flag-5'>曲線</b>的CNC數控系統的研究

    諧波減速器和RV減速器的區別

    諧波減速器和RV減速器都是常見的減速裝置,用于降低機械運動部件的轉速,并提供更大的扭矩輸出。盡管它們都可以實現相似的功能,但在結構和工作原理上存在一些重要的區別。 首先,諧波減速器和R
    的頭像 發表于 01-12 17:45 ?4489次閱讀

    什么是減速電機的減速比呢?

    減速電機的減速比是指減速裝置(如行星齒輪、蝸輪蝸桿、圓柱齒輪等)與電機輸出軸上的轉子(通常是電機上的轉子)之間的旋轉速度比值。
    的頭像 發表于 01-12 09:57 ?1288次閱讀

    匯川變頻器加減速時間設置參數

    匯川變頻器是一種廣泛應用于工業控制領域的電氣設備,用于控制電動機的轉速和運行狀態。在使用匯川變頻器時,加減速時間設置參數是非常重要的,它決定了電動機在啟動和停止過程中的速度變化情況。本文將詳細介紹匯
    的頭像 發表于 01-11 14:19 ?7439次閱讀
    主站蜘蛛池模板: 黑丝制服影院| 日产亚洲一区二区三区| 亚洲精品国产专区91在线| 好色的妹妹| 在线播放午夜理论片| 欧美一区二区三区激情视频| 高H高肉强J短篇NP| 亚洲视频一区在线| 欧美中文字幕一区二区三区| 国产成A人片在线观看| 永久免费观看视频| 秋霞在线观看视频一区二区三区| 国产精品无码无卡毛片不卡视| 又黄又猛又爽大片免费| 日韩AV片无码一区二区三区不卡| 精品无码国产污污污免费网站2| bl撅高扒开臀缝哦| 亚洲精品一卡二卡三卡四卡2021| 男插女高潮一区二区| 国产亚洲精品久久久999蜜臀 | 香蕉精品国产高清自在自线| 久久久精品免费免费直播| 啊片色播电影| 国产精品久久久久成人免费| 有人有片的观看免费视频| 日韩精品无码免费专区| 久久免费看少妇高潮A片特爽| 国产99在线视频| 2021国产精品国产精华| 玩弄放荡人妻一区二区三区| 免费看的一级毛片| 激情内射亚洲一区二区三区 | 玖玖热视频一区二区人妻| 国产精品99久久久久久AV色戒| 69日本xxⅹxxxxx18| 亚洲免费一区二区| 色小姐.com| 欧美极限变态扩张video| 久久婷婷色一区二区三区| 国产亚洲精品高清视频免费| 第一怡春院|