使用 adrc 控制任意一階系統:
x ˙=
f(x,
t)+u
\dot = f(x,t)+u
x˙=f(x
,t)+
u其中f
ff表示系統所受的總擾動,包含未知的外擾和未建模的內部動態。
這裡的**實驗中測試的總擾動為:
f (x
,t)=
x2+0.5
sign
(sin(
2t))
+cos(
xt)f(x,t) = x^2 + 0.5 \, \text(\sin(2t)) + \cos(xt)
f(x,t)
=x2+
0.5sign
(sin(2
t))+
cos(xt
)而且控制器不應該知道該具體形式。
控制目標為使得x
xx輸出如下形狀的訊號:
總擾動和目標訊號
def
f(x,t)
:return x**2+
0.5*np.sign(np.sin(
2*t)
)+ np.cos(x*t)
deftarget
(t):
if t <10:
return np.sign(np.sin(
0.8*t)
)elif t <20:
return2*
(0.5
*t-int
(0.5
*t)-
0.5)
else
:return np.sin(
0.8*t)
定義乙個類儲存時間序列,方便畫圖
class
logger
:def
__init__
(self)
: self.data =
defadd
(self, key, value)
:if key not
in self.data:
self.data[key]=[
] self.data[key]
defplot
(self, keys=
none):
plt.figure(figsize=(20
,10))
if keys is
none
:for k in self.data:
plt.plot(self.data[k]
, label=k)
else
:for k in keys:
plt.plot(self.data[k]
, label=k)
plt.legend(
) plt.show(
)
乙個常用的非線性誤差函式,具有小誤差大增益,大誤差小增益的特性。
使用尤拉積分做數值積分
logger = logger(
)h =
0.01
t =30
n =int
(t/h)
r0 =
5# r0調控過渡的快慢
# 一些初值的設定
v1 =
0z1,z2 =0,
0x =
0y = x
u =0
for i in
range
(n):
t = i*h
# 目標訊號
v = target(t)
# 過渡過程 v1 -> v, v1的過渡比v更加平緩
v1 += h*r0*fal(v-v1,
0.5, h)
# eso: z1 -> y, z2 = \dot
e = y - z1
fe = fal(e,
0.5, h)
z1 += h*
(z2 +
100*e + u)
z2 += h*
(300
*fe)
# 誤差反饋
# e1 = v1 - y
e1 = v1 - z1
u =10*fal(e1,
0.5,
0.1)
- z2
# 系統狀態更新
w = f(x,t)
x += h*
(w + u)
# 輸出
y = x
logger.add(
'v1'
,v1)
logger.add(
'y',y)
logger.add(
'v',v)
logger.add(
'u',u)
logger.add(
'z2'
, z2)
logger.add(
'w', w)
logger.plot(
['v'])
logger.plot(
['v'
,'v1'
,'y'])
logger.plot(
['w'
,'z2'
,'u'
])
結果展示如下,v代表真實目標訊號,v
1v_1
v1是v的平滑過渡,y是實際輸出
w 代表真實總擾動,z
2z_2
z2是對總擾動的跟蹤,u是控制輸入
下面我來增大 r0:
5→10r_0:5\rightarrow 10
r0:5→
10,意味著過渡訊號v
1v_1
v1更加逼近真實訊號vvv
過渡過程越短,意味著要在更短的時間做出同樣的變化,自然就要求控制量u
uu的絕對值要增大,從上圖可以看出這一點。
ADRC 自抗擾控制器(二) 四旋翼無人機
自抗擾四旋翼控制中的幾個問題 自抗擾控制器包含三大部分 td微分 微風 主要可以安排過渡,過程同時還具有一定的濾波功能,四旋翼由遙控器和地面站傳送期望控制訊號,可以通過微分 安排過渡過程,加快響應速度,同時還可以用於對資料進行濾波。eso擴張狀態觀測器 擴張觀測器主要是進行擾動的觀測,但是在用於姿態...
一階倒立擺系統
一階倒立擺系統的控制問題就是通過計算給定直流電機電流大小,即小車運動所需力的大小 控制作用 使擺桿偏角和小車位置 系統輸出 能夠盡快達到乙個平衡點 注意這裡有多個控制目標 並使之沒有大的振盪和超調。進一步,當系統達到穩定後能克服各種隨機擾動 例如人為撥動擺桿使之突然偏離平衡點 而仍能保持穩定執行。倒...
小白控制演算法之自抗擾調參經驗總結
最近做的專案用到了自抗擾,嘗試聯絡一些相關領域的老師,無奈似乎有所保留,只得自己從頭研究起。講道理,無論是複雜的系統,還是超過9個引數的調節,整個調程式和調參的過程都不是特別順利。不過結果還好,粗調後整個系統雖然在冷啟動時期的表現跟pi控制相差不多,但是對抗突變干擾時的穩定時間卻碾壓了pi控制。在這...