Materiály k 3. přednášce: Inverzní úloha kinematiky, Jacobián - FBMI
Materiály k 3. přednášce: Inverzní úloha kinematiky, Jacobián - FBMI
Materiály k 3. přednášce: Inverzní úloha kinematiky, Jacobián - FBMI
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Přednáška 3<br />
Inovace výuky předmětu Robotika v lékařství<br />
<strong>Inverzní</strong> <strong>úloha</strong> <strong>kinematiky</strong>, <strong>Jacobián</strong> kinematického řetězce, Newtonova<br />
iterační metoda s Jakobiánem<br />
<strong>Jacobián</strong> kinematického řetězce je matice, která transformuje limitně malou změnu orientace<br />
a polohy koncového bodu kinematického řetězce na limitně malou změnu zobecněných<br />
souřadnic v jednotlivých kin. dvojicích řetězce a naopak. Platí tedy následující vztahy :<br />
( q)<br />
q&<br />
x&<br />
= J ⋅<br />
( q)<br />
x<br />
q&<br />
= J ⋅<br />
T &<br />
(5.1)<br />
x& je vektor kartézských rychlostí koncového bodu kinem.<br />
řetězce<br />
q& je vektor zobecněných rychlostí v jednotlivých kinem.<br />
dvojicích řetězce<br />
Můžeme také říci, že Jakobián transformuje zobecněné rychlosti (vyjádřené v systému<br />
souřadnic dané kin. dvojice) v kinematických dvojicích řetězce na kartézské rychlosti jeho<br />
koncového bodu (vyjádřené v systému souřadnic prvního členu řetězce- rámu).<br />
Způsob získání jakobiánu :<br />
Vypočteme matice rychlostí základních pohybů kin. dvojic řetězce :<br />
V<br />
V<br />
V<br />
V<br />
V<br />
10<br />
1<br />
= 10<br />
ω ⋅ DRZ<br />
21 = ω<br />
2<br />
21<br />
32 = ω<br />
3<br />
32<br />
43 = ω<br />
4<br />
43<br />
54 = ω<br />
5<br />
54<br />
⋅ DRX<br />
⋅ DRX<br />
⋅ DRX<br />
⋅ DRZ<br />
(5.2)<br />
Poté všechny matice rychlostí základních pohybů převedeme do systému souřadnic poslední<br />
kinem. dvojice, abychom je mohli sečíst.<br />
V<br />
V<br />
V<br />
10<br />
5<br />
21<br />
5<br />
32<br />
5<br />
= T ⋅T<br />
⋅T<br />
⋅T<br />
⋅ V ⋅T<br />
⋅T<br />
⋅T<br />
⋅T<br />
−1<br />
54<br />
−1<br />
54<br />
−1<br />
43<br />
−1<br />
43<br />
−1<br />
32<br />
−1<br />
32<br />
−1<br />
21<br />
21<br />
2<br />
10<br />
1<br />
= T ⋅T<br />
⋅T<br />
⋅ V ⋅T<br />
⋅T<br />
⋅T<br />
= T ⋅T<br />
⋅ V ⋅T<br />
⋅T<br />
−1<br />
54<br />
−1<br />
43<br />
32<br />
3<br />
= T ⋅ ⋅T<br />
− V V<br />
, tj. platí<br />
43<br />
5<br />
1<br />
54<br />
43<br />
4<br />
54<br />
43<br />
32<br />
54<br />
21<br />
43<br />
32<br />
54<br />
43<br />
54<br />
Stránka 1 z 6
Inovace výuky předmětu Robotika v lékařství<br />
V = V + V + V + V + V<br />
50<br />
5<br />
10<br />
5<br />
21<br />
5<br />
32<br />
5<br />
43<br />
5<br />
54 .<br />
5<br />
(5.3)<br />
Tuto celkovou matici rychlosti mezi tělesem 5 vůči tělesu 0 v systému souřadnic tělesa 5, tj.<br />
V převedeme do systému souřadnic tělesa 0 následovně :<br />
50<br />
5<br />
V<br />
50<br />
0<br />
= T ⋅T<br />
⋅T<br />
⋅T<br />
⋅T<br />
⋅ V ⋅T<br />
⋅T<br />
⋅T<br />
⋅T<br />
⋅T<br />
−1<br />
10<br />
−1<br />
21<br />
−1<br />
32<br />
−1<br />
43<br />
−1<br />
54<br />
Matice rychlosti V 50 vyjadřuje rotační a translační rychlost tělesa 5 vůči tělesu 0 vyjádřenou<br />
0<br />
v systému souřadnic tělesa 0. Dále musíme vyjádřit vektor translačních rychlostí koncového<br />
bodu M kinematického řetězce vůči tělesu 0 (rámu), tj.<br />
v = T ⋅r<br />
= T ⋅ V ⋅r<br />
&<br />
M<br />
1<br />
n1<br />
M<br />
n<br />
n1<br />
v obecné podobě, ale v našem příkladu<br />
v = T ⋅ V ⋅ r ,<br />
M<br />
0<br />
50<br />
50<br />
5<br />
M<br />
5<br />
n1<br />
n<br />
M<br />
n<br />
.<br />
50<br />
5<br />
přičemž pro celkovou transformační matici platí vztah<br />
T = T ⋅ T ⋅ T ⋅ T ⋅ T<br />
50<br />
10<br />
Matici rychlosti<br />
21<br />
50<br />
0<br />
32<br />
43<br />
54<br />
,<br />
54<br />
43<br />
32<br />
21<br />
10<br />
(5.5)<br />
(5.4)<br />
V tak i vektor translačních složek rychlosti koncového bodu M<br />
v<br />
použijeme pro získání <strong>Jacobián</strong>u paže. Nejdříve si z obou dvou sestavíme vektor translační a<br />
rotační složky kartézské rychlosti následovně :<br />
⎡v<br />
⎢<br />
⎢v<br />
⎢<br />
⎣<br />
v<br />
M<br />
x 0<br />
M<br />
y 0<br />
M<br />
z 0<br />
⎡ω<br />
x<br />
⎢<br />
⎢ω<br />
y<br />
⎢<br />
⎣<br />
ω z<br />
rychlostí je<br />
⎤<br />
⎥<br />
⎥ = T50 ⋅ V50<br />
⋅r<br />
5<br />
⎥<br />
⎦<br />
500<br />
500<br />
500<br />
⎤ ⎡V<br />
⎥ ⎢<br />
⎥ = ⎢V<br />
⎥ ⎢<br />
⎦ ⎣<br />
V<br />
500<br />
500<br />
500<br />
( 3,<br />
2)<br />
( 1,<br />
3)<br />
M<br />
5<br />
⎤<br />
( )⎥ ⎥⎥ ,<br />
2,<br />
1<br />
⎦<br />
(5.6)<br />
⎡ 0 − ωza<br />
ωya<br />
⎤<br />
O<br />
⎢<br />
⎥ ⎡<br />
b Ω ⎤<br />
ba v<br />
Ω ba = ⎢ ωza<br />
0 − ωxa<br />
⎥ a a<br />
a<br />
V .<br />
a<br />
ba = a ⎢ ⎥<br />
T<br />
⎢<br />
⎥ ⎢ 0 0 ⎥<br />
⎣−<br />
ωya<br />
ωxa<br />
0<br />
⎣ ⎦<br />
⎦<br />
(5.7)<br />
protože platí že submatice úhlových<br />
0<br />
Stránka 2 z 6
Inovace výuky předmětu Robotika v lékařství<br />
Pokud z výrazů 5.6 a 5.7 na pravých stranách vytkneme zobecněné rychlosti, získáme rovnici<br />
v maticovém tvaru, kde matice na pravé straně představuje <strong>Jacobián</strong> paže, tj.:<br />
⎡ vx<br />
⎢<br />
⎢ v y<br />
⎢ vz<br />
⎢<br />
⎢ω<br />
x<br />
⎢<br />
ω<br />
⎢ y<br />
⎢<br />
⎣<br />
ω z<br />
M<br />
0<br />
M<br />
0<br />
M<br />
0<br />
500<br />
500<br />
500<br />
⎤<br />
⎥<br />
⎥<br />
⎥<br />
⎥<br />
⎥<br />
⎥<br />
⎥<br />
⎥<br />
⎦<br />
=<br />
[ J ( q)<br />
]<br />
⎡q&<br />
1 ⎤<br />
⎢ ⎥<br />
⎢<br />
q&<br />
2 ⎥<br />
⋅ ⎢q&<br />
⎥ 3<br />
⎢ ⎥<br />
⎢q&<br />
4 ⎥<br />
⎢<br />
⎣q&<br />
⎥<br />
5 ⎦<br />
, kde q& n je n-tá zobecněná rychlost n-té kin. dvojice<br />
Princip newtonovi iterační metody s Jakobiánem, která řeší úlohu inverzní <strong>kinematiky</strong> je<br />
patrný z následujícího diagramu :<br />
kde:<br />
X<br />
f(g) – X = g(q)<br />
g(q) ≤ error<br />
Yes<br />
qk equal to<br />
f(g) – X = g(q)≅0<br />
No<br />
qk+1 = qk – J -1 (qk)g(qk)<br />
X Žádaná poloha koncového bodu kinematického řetězce v kart. souřadnicích.<br />
f ( q)<br />
Aktuální hodnota koncového bodu řetězce, která je funkcí zobecněných<br />
souřadnic jednotlivých kinematických dvojic<br />
J ( q)<br />
Jakobián, který transformuji rychlosti zobecněných souřadnic (v kin. dvojicích)<br />
na rychlosti koncového bodu řetězce (v kart. souřadnicích). Platí tedy X& = J(<br />
q)<br />
q&<br />
a<br />
−1<br />
&<br />
q&<br />
= J ( q)<br />
X .<br />
Stránka 3 z 6
Inovace výuky předmětu Robotika v lékařství<br />
q k vektor zobecněných souřadnic v posledním kroku iterace, kde platí že<br />
f ( qk<br />
) − X = g(<br />
q)<br />
≅ 0<br />
g (q)<br />
chybová hodnota mezi žádanou polohou konc. bodu řetězce a aktuální<br />
hodnotou koncového bodu řetězce při daných zobecněných souřadnicích q .<br />
Vstupem pro newtonovu iterační metodu je žádaná poloha konc. bodu řetězce a jejím<br />
výstupem je odpovídající vektor zobecněných souřadnic, který této požadované poloze<br />
odpovídá. Řešení může být nekonečně mnoho, nebo jen jedno, ale také nemusí existovat,<br />
například pokud je žádaná poloha konc. bodu mimo manipulační prostor paže robota.<br />
Využití symbolic toolboxu Matlabu pro výpočet <strong>Jacobián</strong>u kinematického řetězce v laboratoři<br />
vysvětluje následný okomentovaný kód :<br />
clear all<br />
clc<br />
% konstanty R21,R32,R43,R54,R5M<br />
R10 = sym ('R10');<br />
R21 = sym ('R21');<br />
R32 = sym ('R32');<br />
R43 = sym ('R43');<br />
R54 = sym ('R54');<br />
R5M= sym ('R5M');<br />
% promennne<br />
% zobecněné polohy v kin. dvojicích<br />
fi10 = sym ('fi10');<br />
fi21 = sym ('fi21');<br />
fi32 = sym ('fi32');<br />
fi43 = sym ('fi43');<br />
fi54 = sym ('fi54');<br />
% zobecněné rychlosti v kin. dvojicích<br />
om10 = sym ('om10');<br />
om21 = sym ('om21');<br />
om32 = sym ('om32');<br />
om43 = sym ('om43');<br />
om54 = sym ('om54');<br />
r21=[0; R21; 0; 1]; % pruvodice mezi kinem dvojicemi<br />
r32=[0; 0; R32; 1];<br />
r43=[0; 0; R43; 1];<br />
r54=[0; 0; R54; 1];<br />
r5M=[0; 0; R5M; 1];<br />
% transformacni matice<br />
TT10=[cos(fi10) -sin(fi10) 0 0; sin(fi10) cos(fi10) 0 0; 0 0 1 0; 0 0 0 1];<br />
% rotace kolem z-ove osy o fi10<br />
TT21=[1 0 0 0; 0 cos(fi21) -sin(fi21) 0; 0 sin(fi21) cos(fi21) 0; 0 0 0 1];<br />
% rotace kolem x-ove osy o fi21<br />
Stránka 4 z 6
Inovace výuky předmětu Robotika v lékařství<br />
TT32=[1 0 0 0; 0 cos(fi32) -sin(fi32) 0; 0 sin(fi32) cos(fi32) 0; 0 0 0 1];<br />
% rotace kolem x-ove osy o fi32<br />
TT43=[1 0 0 0; 0 cos(fi43) -sin(fi43) 0; 0 sin(fi43) cos(fi43) 0; 0 0 0 1];<br />
% rotace kolem x-ove osy o fi43<br />
TT54=[cos(fi54) -sin(fi54) 0 0; sin(fi54) cos(fi54) 0 0; 0 0 1 0; 0 0 0 1];<br />
% rotace kolem z-ove osy o fi54<br />
TT50=TT10*TT21*TT32*TT43*TT54; % výsledná transformacni matice z prostoru<br />
telesa 5 do prostoru telesa 0<br />
% poloha koncového bodu M vůči rámu v homogennim zobrazení<br />
rM0=TT50*r5M;<br />
% Rychlosti<br />
% diferencialni operatory zakladnich pohybu<br />
DTX = [0 0 0 1;0 0 0 0;0 0 0 0;0 0 0 0];<br />
DTY = [0 0 0 0;0 0 0 1;0 0 0 0;0 0 0 0];<br />
DTZ = [0 0 0 0;0 0 0 0;0 0 0 1;0 0 0 0];<br />
DRX = [0 0 0 0;0 0 -1 0;0 1 0 0;0 0 0 0];<br />
DRY = [0 0 1 0;0 0 0 0;-1 0 0 0;0 0 0 0];<br />
DRZ = [0 -1 0 0;1 0 0 0;0 0 0 0;0 0 0 0];<br />
% rychlosti zakladnich pohybu<br />
V10S1=om10*DRZ;<br />
V21S2=om21*DRX;<br />
V32S3=om32*DRX;<br />
V43S4=om43*DRX;<br />
V54S5=om54*DRZ;<br />
% inverzni transformacni matice<br />
ITT10=inv(TT10);<br />
ITT21=inv(TT21);<br />
ITT32=inv(TT32);<br />
ITT43=inv(TT43);<br />
ITT54=inv(TT54);<br />
V10S5=ITT54*ITT43*ITT32*ITT21*V10S1*TT21*TT32*TT43*TT54;%transformace<br />
rychlosti V10S1 (v prostoru 1) na V10S5 (v prostoru 5)<br />
V21S5=ITT54*ITT43*ITT32*V21S2*TT32*TT43*TT54;<br />
V32S5=ITT54*ITT43*V32S3*TT43*TT54;<br />
V43S5=ITT54*V43S4*TT54;<br />
% vysledna matice rychlosti soustavy (z telesa 5 do telesa 0 v prostoru<br />
souradnic 5)<br />
V50S5=V10S5+V21S5+V32S5+V43S5+V54S5;<br />
simV50S5=simplify(V50S5); % zjednoduseni formalni uprava<br />
% rychlost bodu M vuci ramu<br />
Stránka 5 z 6
vM0=TT50*simV50S5*r5M;<br />
Inovace výuky předmětu Robotika v lékařství<br />
simvM0=simplify(vM0); % zjednoduseni formalni uprava, odsud beru translacni<br />
cast Jakobianu<br />
% vysledna matice rychlosti soustavy (z telesa 5 do telesa 0 v prostoru<br />
% souradnic 0)<br />
V50S0=ITT10*ITT21*ITT32*ITT43*ITT54*simV50S5*TT54*TT43*TT32*TT21*TT10;<br />
simV50S0=simplify(V50S0);<br />
%Vypocet J<br />
omega500=[simV50S0(3,2);simV50S0(1,3);simV50S0(2,1)]; %odsud beru rotacni<br />
cast Jakobianu<br />
v500=[simvM0(1,1);simvM0(2,1);simvM0(3,1)]; %odsud beru translační cast<br />
Jakobianu<br />
vkr(1,1)=v500(1,1); %sestaveni vektoru kart.rychlosti konc bodu<br />
vkr(2,1)=v500(2,1);<br />
vkr(3,1)=v500(3,1);<br />
vkr(4,1)=omega500(1,1);<br />
vkr(5,1)=omega500(2,1);<br />
vkr(6,1)=omega500(3,1);<br />
%jacobian([x*y*z; y; x+z],[x y z]) vypočet Jakobianu pomocí fce "jacobian"<br />
J = jacobian([vkr(1,1); vkr(2,1); vkr(3,1); vkr(4,1); vkr(5,1);<br />
vkr(6,1)],[om10 om21 om32 om43 om54])<br />
%ověření správnosti jakobiánu, rozdíl mezi kart. rychlostmi konc. bodu a<br />
%Jakobiáne násobeným vektorem zobecněných rychlostí musí být nulový<br />
"overeni=0"<br />
A=vkr-J*[om10;om21;om32;om43;om54];<br />
overeni=simple (A);<br />
Získaný a ověřený <strong>Jacobián</strong> lze pak implementovat do řídících struktur pro ovládání paže<br />
robota.<br />
Stránka 6 z 6