Sistemas de Coordenadas Renato Paes Leme 1 Mudança de Coordenadas Na Robótica usa-se normalmente uma série de sistemas de coordenadas simultaneamente. Seja Σ0 o sistema de coordenadas de referência (que podemos nos referir também como a base canônica), e sejam Σ1 , Σ2 , Σ3 , ... outros sistemas coordenados. Cada sisterma coordenado Σi é denido por um ponto − → → de origem e por três vetores → ni , − oi , − ai , que constituem uma base ortonormal para o espaço. O conceito de Sistemas de Coordenadas na Robótica é mais amplo. Cada objeto, ao invés de ser representado simplesmente pela sua posição no espaço, é representado por um sistema de coordenadas. Por exemplo, dada uma câmera ou o pulso de um manipulador, nos interessamos não somente → pela sua posição no espaço, dada por um vetor − p = [px .py .pz ]> , mas pela → → → sua orientação, que é dada pelos vetores − n, − o, − a ("normal", "open" e "approach" - nomes que vêm do estudo do manipulador). O modo mais prático (logo veremos o por quê) de representar um Sistema de Coordenadas é através da matriz de transformação: nx ox ax dx ny oy ay dy T = nz oz az dz 0 0 0 1 Podemos representá-la simbolicamente por: − → − → → n → o − a − p T = 0 0 0 1 nx ox ax px → → → − Identicando: − n = ny , − o = oy , − a = ay e → p = py nz oz az pz 1 Se Σ0 é o Sistema de Coordenadas da base e Σ1 é o Sistema de Coorde→ → → → nadas com centro em − p e com base ortonormal − n, − o,− a , então a matriz T descrita acima é a mudança de coordenadas de Σ1 para o sistema de referência Σ0 . Considere um vetor v = [vn , vo , va ]> , ou seja, com coordenadas em Σ1 . O vetor correspondente em Σ0 é dado por: − → → → → d + vn − n + vo − o + va − a o que corresponde a: nx ox ax dx vn ny oy ay dy vo T ·v = nz oz az dz · va 1 0 0 0 1 Considere agora, além de Σ0 e Σ1 um sistema de coordenadas Σ2 cujo → − centro é dado pelo vetor d∗ cujas coordenadas são dadas em relação aos vetores da base Σ1 , ou seja: −∗ → → → → d = [d∗n , d∗a , d∗o ]> = d∗n − n + d∗o − o + d∗a − a → − − → − → e a base ortonormal de Σ2 é dada por vetores n∗ , o∗ , a∗ , novamente com componentes dadas em termos dos vetores de Σ1 . Assim, a matriz: ∗ ∗ ∗ ∗ nx ox ax dx − →∗ − → − → → − n∗y o∗y a∗y d∗y n o∗ a∗ p∗ 1 T2 = ∗ ∗ ∗ ∗ = nz oz az dz 0 0 0 1 0 0 0 1 → representa Σ2 em função de Σ1 , ou seja, dado um vetor − v com coor1 denadas em Σ2 , T2 v retorna esse vetor com coordenadas em Σ1 . Assim, a transformação dada pelo produto: 1 ∗ ∗ ∗ ∗ nx ox ax dx nx ox ax dx ∗ ∗ ∗ ∗ 0 ny oy ay dy ny∗ oy∗ ay∗ dy∗ · nz oz az dz nz oz az dz 0 0 0 1 1 0 0 0 1 2 transforma a base Σ2 em Σ0 , logo ela é a representação do sistema de coordenadas Σ2 , visto da base de referência. Basta ver que o produto dessas → − − → − → − → matrizes, contém as componentes de p∗ , n∗ , o∗ , a∗ dadas em função da base canônica (que é a base de Σ0 ). 2 → Resumindo, dados dois sistemas de coordenadas Γ e Λ, se − p é o vetor que vai da origem de Γ à origem de Λ e suas componentes estão escritas em → → → função da base de Γ e − n, − o,− a são os vetores da base ortonormal de Λ com componentes em função da base de Γ, a matriz: Γ − → → → − n − o − a → p TΛ = 0 0 0 1 representa: • A tranformação que leva da base Λ para a base Γ ou, • A representação do objeto Λ visto de Γ e, se TΓ é uma representação de Γ na base de referência (isto é, a transformação que leva vetores com componentes em Γ para vetores com componentes na base de referência Σ0 , a transformação produto: TΓ ·Γ TΛ é a representação do objeto Λ na base canônica. 2 Transformação Inversa Vimos que a transformação: nx ox ax dx ny oy ay dy T = nz oz az dz 0 0 0 1 → − leva de um sistema de coordenadas com centro em d e base ortonormal → → → {− n,− o ,− a } para a base canônica Σ0 com centro na origem e com a base → → → ortonormal canônica, isto é {− x ,− y ,− z }. Veremos agora como calcular a inversa dessa transformação: Seja R a matriz 3 × 3 dada por: nx ox ax → − − n → o → a R = ny oy ay = − nz oz az → → → onde − n,− o ,− a são representados como vetores coluna. Armo que R é uma matriz auto-adjunta também chamada de matriz ortogonal, isto é: R> ·R = I3 onde I3 é a matriz identidade 3 × 3. Ou seja, a inversa de R é igual a sua transposta. Podemos representar: 3 − → nx ny nz n> → o > R> = ox oy oz = − − → a> ax ay az → → → → → → onde − n >, − o> e− a > são as representações de − n, − o,− a como vetores linha. Essa representação é muito útil para se calcular o produto R> · R: − − → → → → → → → n> n >− n − n >− o − n >− a → → → → → → → → → → o > · − n − o − a = − o >− n − o >− o − o >− a R> · R = − → − → − → → − → → − → > >− >− >− a a n a o a a → → Note que a expressão − n >− a nada mais é do que o produto escalar entre → − → n e− a , logo: 1 0 0 R> · R = 0 1 0 = I3 0 0 1 Visto o inverso de R, podemos inverter T facilmente. Em primeiro lugar, vamos escrever T na seguinte forma compacta: − → R d T = 0 1 Armo que o inverso de T é dado por: T −1 R> = 0 → − → nx ny nz −− n> d → − → − → ox oy oz −− −R> · d o>d = − → → ax ay az −− 1 a>d 0 0 0 1 pois: T ·T −1 − > → → − → − − → R d R −R> · d R · R> −R · R> · d + d = · = = 0 1 0 1 0 1 I3 0 = = I4 0 1 4