Robótica
Sistemas de Coordenadas Variantes no Tempo
Rotações variantes no tempo
Para caracterizar uma rotação no espaço, utilizamos um vetor
. A direção do vetor é o eixo de rotação, e sua magnitude, a taxa de variação da rotação em torno do eixo.
A derivada de uma matriz de rotação variante no tempo é
Onde
e
é uma matriz anti-simétrica, que, para o caso em 3 dimensões, é:
S = skew([1,2,3])
vex(S)
Movimento Incremental
Dadas duas poses
e
, nós podemos representar a diferença entre elas por um vetor de 6 elementos, 3 referentes à translação e 3 referentes à rotação:
T0 = transl(1,2,3)*trotx(1)*troty(1)*trotz(1);
T1 = T0*transl(0.01,0.02,0.03)*trotx(0.001)*troty(0.002)*trotz(0.003)
d = tr2delta(T0, T1);
d'
delta2tr(d) * T0
Sistemas de Navegação Inercial
É comum "deesnormalizar" as matrizes após sucessivas integrações em sistemas de navegação inercial, por exemplo. Para realizar a normalização de matrizes:
T0= trnorm(T0);
O equivalente para quatérnios da equação da derivada da rotação é a seguinte:
Ao ter as 3 componentes da velocidade angular, e isso obtemos ao utilizar IMUs, podemos obter o quatérnio referente ao deslocamento:
qd = UnitQuaternion.omega([1,2,3]);
Com isso, integramos à uma frequência bem alta para obter o deslocamento do frame. Tal integração desnormaliza o quatérnio, e, para normalizar o quatérnio, fazemos:
q = qd.unit();