In [11]:
function S = skew(v)
S = [0, -v(3), v(2); v(3), 0, -v(1); -v(2), v(1), 0];
end
S = skew([1,2,3])
In [12]:
function v = vex(S)
v = [S(3,2), S(1,3), S(2,1)];
end
v = vex(S)
In [13]:
function R = exp(w)
th = norm(w);
K = skew(w / th);
R = eye(3) + sin(th) * K + (1 - cos(th)) * K * K;
end
In [14]:
function R = rotz(th)
ct = cos(th);
st = sin(th);
R = [ct, -st, 0; st, ct, 0; 0, 0, 1];
end
In [15]:
function R = roty(th)
ct = cos(th);
st = sin(th);
R = [ct, 0, st; 0, 1, 0; -st, 0, ct];
end
In [16]:
function R = rotx(th)
ct = cos(th);
st = sin(th);
R = [1, 0, 0; 0, ct, -st; 0, st, ct];
end
In [17]:
R = rotx(pi/6)
In [18]:
R = exp([pi/6,0,0])
In [19]:
function w = log(R)
th = acos((trace(R) - 1) / 2);
w = ([R(3,2) - R(2,3), R(1,3) - R(3,1), R(2,1) - R(1,2)] / (2 * sin(th))) * th;
end
In [21]:
w = [0, pi/6,0]
log(exp(w))
In [ ]:
In [ ]: