mkqn libxz
zebefa yibdl ozip
:zeillkzexrd
ewae` ziteqdaeyza wtzqdloi` .mini`zn miaeyigaellnazeaeyzd lk z`xiaqdlyi
•
.xaqdk
,(
debugging
ikxevloaenkozip)dybdaMatlab
lycontrol toolboxes
djeznze ewtdynzydloi`•
.zxg`yxetnaoiievokm``l`
zipkhze earjeqglzpnlr(zeye
Maple
e`)Matlab
lysymbolic toolbox
axfridlulneneozip•
.zerbiin
m 1 m 2
l
2l
1x
1x
2g
ixqg migiyw miwlg ipy zlra rexfd .i nin e xeyina drpy rexf ly zkxrna weqrp df libxza
xe`izl ozipzkxrnd avn .
m 2
em 1
zeiz ewp zeqnze`vnp mdizevwa xy`l 2
el 1
mkxe`y dqnzkxrnd .
x = [θ 1 , θ 2 , ˙ θ 1 , ˙ θ 2 ] T
:avnxehweea onqpxy`˙θ 2
e˙θ 1
zeiziefd zeiexidndeθ 2
eθ 1
zeiefd i"rg
dkiynd gek .u = [τ 1 , τ 2 ] T
epnqp .drepzdixiv lr(torque
) lezithpnen zlrtd i"rdxwal zpzip.zakey`idyk
0
e`z ner zkxrndyk10
ekxryxhnxt`ed:zkxrnazegekd of`nz`zex`znd drepzdze`eeyn
u = M (θ 1 , θ 2 )
θ ¨ 1
θ ¨ 2
+ v(θ 1 , θ 2 , ˙ θ 1 , ˙ θ 2 ) + g(θ 1 , θ 2 )
θ ¨ 1 θ ¨ 2
= M(θ) −1 (−u + v(θ) + g(θ))
M =
l 2 2 m 2 + 2l 1 l 2 m 2 cos(θ 2 ) + l 1 2 (m 1 + m 2 ) l 2 2 m 2 + l 1 l 2 m 2 cos(θ 2 ) l 2 2 m 2 + l 1 l 2 m 2 cos(θ 2 ) l 2 2 m 2
v =
−m 2 l 1 l 2 sin(θ 2 ) ˙θ 2 2 − 2m 2 l 1 l 2 sin(θ 2 ) ˙θ 1 ˙θ 2
m 2 l 1 l 2 sin(θ 2 ) ˙θ 2 1
g =
m 2 l 2 g cos(θ 1 + θ 2 ) + (m 1 + m 2 )l 1 g cos(θ 1 ) m 2 l 2 g cos(θ 1 + θ 2 )
zegeke milbetxhpvzegek ly xehwe `ed
v
.(positive definite
`idz`fkke) dqn zvixhn dpeknM
.(
g = 0
ykqt`zndf xehwe)dkiynd geknmiraepdzegeklyxehwe dfg
eqileixew:(
control project files.zip
uaewa)ze`adMatlab
zeivwpetmkzeyxlz ner"d arn"-azkxrndzpigajxevlzxfra zixnep divxbhpi`) sivx onfa zkxrnd ly divleniq zrvan
two link arm control •
oezp izlgzd avnn (
Matlab
aode45
ziivwpet ,dpzyn l eba onf rve 4 x qnRunge Kutta
.
u(t, x)
dxwaziivwpetmroezponfoelgam ewnksivxonfazkxrndly g` rvlydivleniqzrvan
arm noisy discrete control step •
zitvz dxifgn divwpetd .(dxwa yrx `ed
η
)u + η
reaw dxwaze` dxwa ziivwpet mr j`.(awrnjxevlmipezpdx`yz`dxifgndivwpetdsqepa)divleniqd rvseqaavndly(zyrex)
.divleniqzvixlyzil`efie dbvdl
show 2 link arm simulation •
.l"pdzeivwpetayeniyl ze`nbe
arm usage example1/2 •
(onlwopqnyenina yeniyl)ziadlibxzjezn
get kf P and K •
open loop
adxwa .1 wlgaygpjk myl .dve`z menipinaexyiewa repirexfddvwy jkrexfdlydrepz xviildvxp dfwlga
.miwxtndlrievx dxwaze`leze`xinpeifhxwdagxnaievxdlelqndz`
`l iteqonfa)iteq mewine,
x (0) = [x 1 (0), x 2 (0), ] = x 0
ifhxwdagxna izlgzd mewinoezp .1:d`adxignd ziivwpetz`xrfnny(ihilp` iehia)
x (t)
lelqn `evnljilr.x (t f ) = x f
(re iJ = 1 2 t 2 f + 1
2 Z t
f0
||¨ x(t)|| 2 dt
ew lr `ed lawznd lelqnd ik gipdl ozip .0 `id eteqaelelqnd zligza zexidndy dgpda
.xyi
agxnarexfddvwmewinnietind)
inverse kinematics
-dz`zepzepze`adze`eeynd ikgked .2: 1
(miwxtndzeieflifhxwd
zeaygzdjez
x
ey
odeizerlvyziefxyiyleynaxzilx
dxivnziefdz`dxifgnAtan(y, x) : R
2→ [−π, π]
divwpetd1tan(y/x) : R
2→ [−
π2,
π2]
l ebipaz`f,y
ex
lymipniqaθ 2 = Atan2(s 2 , c 2 ) s 2 = sin(θ 2 ) = ±
q 1 − c 2 2
c 2 = cos(θ 2 ) = x 2 1 + x 2 2 − l 2 1 − l 2 2
2l 1 l 2
(a)
θ 1 = Atan2(x 2 , x 1 ) − Atan2(k 2 , k 1 ) k 1 = l 1 + l 2 cos(θ 2 )
k 2 = l 2 sin(θ 2 )
oezpyk 1 dl`y z`miniiwny
t = [0 : 0.01 : t f ]
mipnfax(t)
ikxrly xehwe (Matlab
a) xev .3zixnepxefb .mini`zndzeiefd ixehwez`2dl`yzxfra ,`vn.
x f = [−0.5, 1]
ex 0 = [1, −1] T
ik oezp .zeizieif zeve`z lye zeiexidn ly xehwe zlawl miinrt zlaiwy zeiefd ixehwe z`
drepzdze`eeyn t"r(
open loop
, i a onf)dxwaxehwe `vng = 0
el 1 = l 2 = m 1 = m 2 = 1
zevixhnmr)
arm noisy discrete control step
aynzyd.dxwadze`z`sxbabvd.zkxrndlydfz`eievxdlelqndz`sxbabvd.l"pddxwadze`mrrexfdlydlrtdzen li k(qt`yrx
?eppevxkle bdxwaze`yx perevialj`1dl`yzeyix z`miiwnylelqnyim`d.lawzdy
.avndly zeyrex zeitvz jezn i a onfadxwa .2 wlg
H
K +
η
+ v
+ -
H y
L
x
0+
u
-
+ x
ix`pildaexiwdxeardzpapydxwamr (zix`pil-i`d)zkxrnd
jildz yrxsqeezi okenk .(zebx nziivwpet) i adxwaze` i"rzkxrnd lydxwarvapdfwlga
.(izin`davnlziaihi `ztqezk)zitvzyrxe(ievxddxwadze`lzi`xw`ziaihi `ztqezzxeva)
certainty equivalence
doexwraxfrped i azix`pilzkxrnlzkxrnd lydivfix`pilrvapjkjxevlz`xtyl zpnlr .
steady state Kalman gain
d zxfra avnjexrye i a onfaLQR
zxwaoiaalyl.ix`pilote`amewnazixnepdivxbhpi` i"rjxreynd avndz`m wp avndjexry
l 1 = l 2 = m 1 = m 2 = 1
eg = 10
ikegipd3-8zel`ya(
˙x = f (x, u)
dxevdn) zkxrndlydwinpi dze`eeyn z`aezk .1zix`pilzkxrnzlawl
u 0 = [0, 0]
,x 0 = [ π 2 , 0, 0, 0] T
d ewpdaiaqzkxrndlydivfix`pilrva .2.
˙x = Ax + Bu
x 0
ikxrz`el 1 = l 2 = m 1 = m 2 = 1
eg = 10
mikxrdz`avd,zepekpjze`vezy` eel zpnlr:zeidlmixen`zevixhndikxr.l"pd
u 0
eA =
0 0 1 0
0 0 0 1
10 −10 0 0
−10 30 0 0
B =
0 0
0 0
1 −2
−2 5
zebx n ziivwpet `ed dxwad ze`y gpd :zn ewd dl`ya z`vny zix`pild zkxrnd xear .3
.
∆
ol eby:dxevdnonfazihxwqi ,dlewyzkxrn`vn (`)
x(t + ∆) = Fx(t) + Gu(t)
?
poles
dokid∆ = 0.1sec
avd (a)?daivizkxrnd m`d (b)
G
ly zipnidd enrdy ,xnelk .wtxnd lr zegek lirtdl zlekid z` ep ai`yzrk gippqt` `id
u 2 = 0
ydgpdae,zn ewddl`yayzihxwi dzkxrndxear .4z`xrfnn
u(t) = −L T x (t)
yjk(hehxy d`x)L
,gain
xehwe`vn (`)∞
X
i=0
x T (i∆)Qx(i∆) + u 2 (i∆)
Q =
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
zpnlr .
debugging
jxevl `l` (dlqr
oebk)control toolbox
d ly zeivwpeta ynzydl oi`drbdl rdni`znddbiqpdzgqep z`ayglozipdni`znd
Riccati
dz`eeynz`xeztl(m ewzia libxzamzyx pyitk)
steady state
l?aeyndmrzkxrnd ly
poles
dmddn (a)?daivizkxrnd m`d (b)
zix`pild)zkxrndm`d .
y(t) = θ 1
xnelk,θ 1
z`wxze`xlepizlekiaik( aladfsirqa)gipp .5?
observable
`id(zihxwqi dcovariance
zvixhnmrη
ilnxepyrx,u ′ (t)
dxwaze`lklsqepmiwxtnayrxnd`vezkikgipp .6:y jk
σI
zipeqkl`u(t) = u(t) + η η ∼ N (0, σI)
lr ezrtydl ddfote`a zix`pil`ld zkxrnd lr drityn
u
l iaihi `dyrxd zrtydik gpdxnelk.3 dl`yaz`vnyzix`pildzkxrnd
x(t + ∆) = Fx(t) + G(u(t) + η)
= Fx(t) + Gu(t) + w
w ∼ N (0, W)
?
W
`ed dnyjk
ǫI variance
mrilnxepzitvzyrx mbepyizn ewddl`yayjildzd yrxlsqepa .7y(t) = x(t) + v
v ∼ N (0, ǫI)
zyrexdzihxwqi dzix`pildzkxrndly(hehxya
K
)steady state Kalman Gain
dz``vn-peta ynzydl ozip jk jxevl .(lirl zitvz yrxe zn ewd dl`ya mz`vny jildz yrx mr)
z`lawli k.(dflibxzlsxevnoexztd)m ewzialibxzamzazkxy`
get kf P and K
divw:mi`admipezpdmr.(
500
-donf rva)K(500)
zlawlzipkzdz`evixdsteady state
dzvixhnσ = 0.1
yk6dl`yamz`vny itk`edjildzd yrx•
.(dlrnivg)
ǫ = 360 π
,efdl`ya oezpyitkzitvzdyrx•
.(yrx`ll)
x 0 = [ π 2 , 0, 0, 0] T
izlgzdavn•
||A|| 2 F = P
i,j A 2 i,j
)i = {1, . . . 500}
xear||K(i) − K(i − 1)|| 2 F
z` d`xnyhehxy bvd (`).qpkzdjildzdy ew a.(
Forbenius Norm
d `id?
K(500)
`iddn (a)?aeh zeidlietvavndjexrym`d?mzlaiwy
P(500)
zernyndn (b)oelykl re`zeipy20jynl4dl`yndxwaze`mrzyrexdzkxrnd lyzeivleniq100uxd .8
:zih xphqddgqepaaivpavndlyxzeiwiie njexrylawlzpnlr.(
4π
ndle bzeiefdzg`)¯
x t = ¯ x t|t−1 + K 500 (y t − C¯ x t|t−1 )
:z`
¯
x t|t−1 = ¯ x t−1|t−1 + Z t
t−1
f (x τ , u t−1 )dτ
zpnlrzix`pil`ldzkxrnd lydivleniqaynzyp,xnelk.
x ¯ t|t−1 = Fx t−1 + Gu t−1
mewnazpn lr .zaxewnd zix`pild zkxrna ynzydl mewna (re i epi`y yrxd `ll)
x
z` m wl`ll
arm noisy discrete control step
divwpetaynzydl ozipyex d ixnepdaeyigd z`rval.dreaw dxwa ziivwpet mr
two link arm control
divweta e` (0
qp`ix`ew zevixhn) miyrx.`nbe ldvixx`zndsxbybd .elawzdydivleniqdipnflydnxbehqidbvd