Um robô móvel é um agente no espaço físico, onde deve ser capaz de operar de maneira adequada.
Especialmente em robôs que possuem algum grau de autonomia, é necessário que o sistema seja capaz de perceber e modelar o espaço ao seu redor, codificando o mundo em uma representação (comumente matemática) a fim de ser processada pelos computadores embarcado.
Como exemplo, veículos autônomos mapeiam seu entorno utilizando sensores que são capazes de identificar as distâncias entre o carro e os elementos de seu entorno; estas informações são insumos para algoritmos que calculam riscos espaciais e identificam a melhor rota para o veículo passar.
Existem diferentes técnicas para representar o espaço-tempo, mas a um nível fundamental elas geralmente compartilham um framework que envolve a definição de sistemas de coordenadas em relação aos quais são definidos representações matemáticas/físicas (e.g., coordenadas de pontos, vetores, twists, etc.).
Neste contexto, o objetivo desta aula é relembrar algumas ferramentas matemáticas elementares para representar e manipular espacialmente pontos e vetores no espaço euclidiano.
Sistemas de coordenadas
O sistema de coordenadas (ou do inglês, frame) é um constructo matemático que serve de base para descrever elementos no espaço cartesiano (e.g., pontos, vetores, transformações, outros sistemas de coordenadas, etc.).
No espaço tridimensional, um sistema de coordenadas é composto por:
Um ponto no espaço denominado origem, de onde partem os vetores unitários de seus eixos.
Três vetores unitários mutuamente ortogonais , e , todos pertencentes a , que definem os eixos das três dimensões que compõem este sistema de coordenadas.
Sistema de coordenadas 3Dinterativo
Carregando interativo…
◫ Interativo: Sistema de coordenadas 3D
Disponível interativamente na versão web.
Cada vetor unitário está relacionado a uma das dimensões representadas por aquele sistemas de coordenadas, sendo comumente instanciados como:
Sendo ortogonais entre si, os vetores unitários da base podem ser definidos da seguinte maneira (seguindo a convenção da "regra da mão direita", explicada na próxima seção):
Assim, um sistema de coordenadas genérico pode ser representado matematicamente da seguinte maneira:
Nota
As demonstrações nesta aula consideram representações no espaço tridimensional. Na maioria dos casos, para se trabalhar com dimensões inferiores (bidimensional, unidimensional) basta remover os elementos matemáticos que a representam (e.g., remover uma coordenada da posição, remover um vetor unitário do sistema de coordenadas, etc.).
Convenção da regra da mão direita
Considerando que a restrição para se definir os vetores-base de um sistema de coordenadas é somente que eles sejam ortogonais entre si, isto cria uma ambiguidade em qual sentido os eixos podem apontar.
Por exemplo, perceba na figura anterior do sistema de coordenadas que se qualquer um dos eixos-base fosse invertido, manteria-se a ortogonalidade entre eles.
Desta forma, caso cada autor escolhesse um sentido diferente para os vetores-base, os cálculos entre eles para um mesmo problema não seria compatível.
Para eliminar esta ambiguidade, adota-se a convenção da regra da mão direita, que define o seguinte: apontando o dedo indicador no sentido do primeiro eixo (), curva-se o dedo médio 90° ficando assim apontado para para o segundo eixo (), então o terceiro eixo () deverá ser definido no mesmo sentido que o dedo polegar estendido aponta (a ilustra esta definição).
Esta é a razão das definições dos eixos-base serem como apresentado pela Eq. ….
Fig. 1 —
Representação dos sentidos positivos dos eixos do sistema de coordenadas, das translações e das rotações de acordo com a convenção da 'regra da mão direita'.Adaptado de
Por consequência, a convenção da mão direita não se restringe à definição dos eixos, mas se propaga a toda grandeza vetorial derivada do sistema de coordenadas:
Translações: o sentido positivo de deslocamento ao longo de um eixo é o sentido em que aquele vetor-base aponta.
Rotações: o sentido positivo de rotação em torno de um eixo também segue a regra da mão direita — posicionando o polegar da mão direita apontando no sentido positivo do eixo de rotação, os demais dedos curvam-se no sentido positivo (i.e., anti-horário quando visto de "cima" do eixo, olhando em sentido contrário ao polegar; a também ilustra os sentidos de rotação positivos),
Não há nenhuma razão física ou matemática fundamental para se preferir a mão direita à mão esquerda.
Trata-se puramente de uma convenção, adotada por consenso pela comunidade científica para garantir que diferentes autores, ferramentas e sistemas descrevam o espaço de maneira consistente entre si.
Entretanto, a importância prática desta escolha é significativa, pois dois sistemas que descrevem o mesmo espaço físico segundo convenções opostas produzirão sinais invertidos em qualquer grandeza vetorial calculada a partir de produtos vetoriais, tornando os resultados incompatíveis entre si sem uma conversão explícita.
Assim, manter uma convenção consistente é importante em robótica, onde é comum combinar dados de múltiplos sensores, bibliotecas de software e sistemas de coordenadas distintos (e.g., do robô, do sensor, do mundo), onde uma inconsistência na "mão" adotada por diferentes componentes de um sistema é uma fonte sutil, porém comum, de erros.
Posição
Tendo como base um sistema de coordenadas , a posição no espaço de um ponto qualquer pode ser descrita em relação a da seguinte maneira:
onde os elementos , e são denominadas as coordenadas do ponto em relação à origem de , sendo então o vetor descrito pela Eq. … denominado como vetor de coordenadas do ponto no espaço, ou simplesmente vetor de estado (de posição).
Um vetor de posição (e.g. , definido pela Eq. …, também pode ser interpretado como uma translação, ou seja, o deslocamento necessário para se ir da origem de até o ponto .
Considerando esta interpretação, pode-se também fazer a composição de translações sucessivas realizando somente a soma vetorial dos deslocamentos envolvidos.
Por exemplo, para sair da origem de , mover-se até um ponto e depois deslocar-se para um segundo ponto pode ser descrito matematicamente como:
A composição de translações é comutativa.
Ou seja, considerando-se dois vetores genéricos, .
Orientação
Seguindo nossa ilustração, não seria possível definir a orientação de em relação a pois um ponto é, por definição, adimensional e, por consequência, não possui dimensões geométricas que permitiriam definir sua orientação em relação a um sistemas de coordenadas.
Assim, dizemos que um ponto é invariante sob rotações do sistema de coordenadas.
Portanto, para representar a orientação relativa entre dois elementos no espaço, precisamos definir um segundo sistema de coordenadas atrelado ao objeto de interesse.
Seguindo nosso exemplo, definimos então um sistema de coordenadas , cuja origem é o próprio ponto , havendo agora dois sistemas de coordenadas distintos:
Nota
Uma orientação descreve a diferença dos sentidos positivos entre os vetores-base de dois sistemas de coordenadas. Uma rotação descreve a orientação final que um sistema de coordenadas assume após sofrer uma mudança de orientação. Na prática, apesar de representarem conceitos espaciais diferentes, orientação e rotação podem ser descritas da mesma maneira utilizando matrizes de rotação (descritas abaixo), e outras representações também.
Matriz de rotação
Com os dois sistemas de coordenadas definidos, uma maneira de representar a orientação de em relação a é descrevendo os eixos unitários de um frame em relação ao outro.
Uma maneira de fazer tal descrição projetando geometricamente os vetores-base em relação aos vetores-base de .
Por exemplo, para projetar o vetor unitário nos vetores-base de faz-se:
onde cada elemento do vetor é resultado do produto escalar de com um dos vetores-base de .
Nota
Note que todos os vetores na Eq. … são unitários, o que torna seus produtos escalares igual ao cosseno do ângulo entre eles, i.e., para dois vetores unitários genéricos, , onde é o ângulo entre eles. Assim, o cosseno entre dois vetores-unitários torna-se exatamente a projeção de um sobre outro, i.e., o quanto um aponta na direção do outro.
Fazendo-se o mesmo processo de projeção para os demais vetores-base de ( e ) e depois concatenando-os horizontalmente, obtemos:
que é denominada a matriz de rotação que representa a orientação do frame em relação a .
Matriz de rotaçãointerativo
Carregando interativo…
x̂IŷIẑIx̂RŷRẑRoIRR = Rz · Ry · RxIRR =0.87-0.500.000.500.870.000.000.001.00
◫ Interativo: Matriz de rotação
Disponível interativamente na versão web.
Nota
A matriz de rotação é apenas um dentre alguns métodos para descrever orientações/rotações. Outros dois métodos muito utilizados são os Ângulos de Euler e os quatérnions unitários de rotação (este vídeo sensacional do canal 3Blue1Brown mostra de maneira interativa as rotações com quaternions). Cada representação possui suas características, visualização e álgebra. É importante porém saber que há ferramentas matemáticas para converter de uma forma de representação para outra.
Rotações elementares
Um caso particular — porém extremamente recorrente — de matriz de rotação é aquele em que um sistema de coordenadas é rotacionado por um ângulo em torno de um único de seus vetores-base, mantendo os demais eixos originais como referência. Estas são chamadas de rotações elementares, e servem de base para a construção de rotações mais complexas.
Aplicando-se o mesmo processo de projeção geométrica utilizado para obter a Eq. …, pode-se obter diretamente as três matrizes de rotação elementares, uma para cada eixo:
Nota
Note o padrão de cada matriz: a linha e a coluna correspondentes ao eixo de rotação permanecem inalteradas (i.e., iguais às de uma matriz identidade), enquanto o bloco restante — relativo aos outros dois eixos — contém os termos de e . O sinal do termo negativo "circula" ciclicamente entre as matrizes (), refletindo a ordem cíclica já vista na definição dos vetores-base.
Composição de matrizes de rotação
É comum em robótica que a orientação de um sistema de coordenadas de intersse não seja conhecida diretamente, mas sim obtida através de uma sequência de sistemas de coordenadas intermediários que podem não estar alinhados entre si.
Por exemplo, a orientação de uma câmera em relação ao mundo, passando pela orientação robô ao qual ela está fixada).
Assim, é necessário saber fazer a composição de rotações, de maneira similar ao que fizemos com as translações.
Considere três sistemas de coordenadas , e , onde conhece-se a orientação de em relação a (i.e., ) e a orientação de em relação a (i.e., ).
Deseja-se então obter a orientação de em relação a (i.e., ).
Isto pode ser feito projetando-se, um de cada vez, os vetores-base de em e, em seguida, projetando-se o resultado em .
Como cada projeção corresponde a uma multiplicação por uma matriz de rotação, a composição destas duas projeções sucessivas é dada simplesmente pelo produto matricial das rotações envolvidas:
Nota
Note a "regra da cadeia" dos índices na Eq. …: o subscrito de uma matriz deve coincidir com o sobrescrito da matriz imediatamente à sua direita ( com ), restando ao final apenas o sobrescrito do referencial de partida () e o subscrito do referencial de chegada (). Este padrão é uma boa forma de verificar se uma composição de rotações foi montada corretamente.
Este resultado generaliza-se para qualquer número de sistemas de coordenadas intermediários. Por exemplo, dada uma cadeia , a orientação de em relação a é obtida por:
Fique atento porém pois, diferentemente da adição de vetores, a multiplicação de matrizes não é comutativa.
Ou seja, em geral, a orientação final de um sistema de coordenadas que passou pela sequência de rotações é diferente se as mesmas rotações fossem aplicadas sequencialmente na ordem inversa .
Assim, a ordem em que rotações sucessivas são aplicadas importa, tanto na ordem dos fatores da Eq. … quanto (como veremos a seguir) na ordem em que rotações são compostas em torno de eixos correntes ou de eixos fixos.
Eixos correntes e base
Uma orientação qualquer pode sempre ser descrita como o resultado de uma sequência de rotações elementares (i.e., rotações em torno de um único eixo por vez).
Ao compor esta sequência, entretanto, surge uma ambiguidade que passa despercebida se considerarmos apenas uma única rotação: em torno de qual sistema de coordenadas cada rotação sucessiva é aplicada?
Há duas convenções possíveis:
Rotações em torno dos eixos fixos (ou eixos de base), em que cada rotação sucessiva é aplicada em torno dos eixos do sistema de coordenadas original (e.g.), que permanece fixo durante toda a sequência.
Rotações em torno dos eixos correntes: cada rotação sucessiva é aplicada em torno dos eixos do sistema de coordenadas já rotacionado pelas rotações anteriores, i.e., um referencial que "acompanha" o objeto.
Estas duas convenções resultam em ordens opostas de multiplicação das matrizes de rotação elementares:
çõçõ
onde são as matrizes de rotação elementares aplicadas, nesta ordem, ao longo da sequência.
Rotação inversa
Como pode-se observar na Eq. …, cada coluna de é um vetor unitário que representa a projeção de um dos vetores-base de em .
Nesta condição, a matriz é denominada ortonormal, possuindo assim a propriedade de que sua inversa é igual à sua transposta, ou seja, .
Assim, ao se transpor uma matriz de rotação, obtem-se a representação de uma orientação/rotação espacialmente inversa, ou seja:
Pose no espaço
Até então, vimos como representar a posição e orientação relativa entre dois sistemas de coordenadas no espaço utilizando objetos matemáticos separados: vetores de translação para posição e matrizes de rotação para orientação. Há porém uma maneira de combinar ambas as representações em uma única estrutura matemática, denominada matriz de transformada homogênea.
Transformação homogênea
A matriz de transformada homogênea é definida simplesmente pela composição da matriz de rotação com o vetor de translação em uma única matriz quadrada.
Seguindo com nosso exemplo, a matriz de transformada homogênea que representa a pose do frame em relação a é definida como:
Note que a matriz é construída ao se concatenar horizontalmente a matriz de rotação com a posição e concatenar verticalmente na última linha um vetor .
Transformação homogênea inversa
A inversa de uma transformada homogênea pode ser construída invertendo (transpondo) a matriz de rotação e a translação de forma independente:
Transformação homogêneainterativo
Carregando interativo…
x̂IŷIẑIIpRx̂RŷRẑRoIoRIRR = Rz · Ry · RxITR =0.87-0.500.001.200.500.870.000.800.000.001.000.600001
◫ Interativo: Transformação homogênea
Disponível interativamente na versão web.
Combinação de transformações
É possível combinar transformações simplesmente ao multiplicá-las pela direita.
Por exemplo, considere agora que, além do eixo inercial e o frame do robô original , há mais dois frames e no espaço, com poses distintas.
Considere também que a sequência de transformações seja conhecida.
Assim, pode-se calcular a transformada de simplesmente fazendo:
Mapeando de um frame para outro
Um problema recorrente em robótica é:
Havendo havendo um objeto no espaço descrito em um sistema de coordenadas A, como mapear suas coordenadas para descrevê-lo em um outro sistemas de coordenadas B?
Considere que um robô ao qual atrelamos o frame detecte um obstáculo no espaço. Seus sensores indicam o vetor como sendo a descrição da posição deste obstáculo em relação ao robô.
O robô gostaria de indicar a posição deste obstáculo a um drone, ao qual atrelamos o frame . A posição e orientação do robô em relação ao drone são conhecidas, i.e., as variáveis e são definidas. Neste caso, a posição deste obstáculo em relação ao drone pode ser calculada através da equação:
Para o nosso exemplo, a Eq. permite então calcular a posição relativa do obstáculo em relação ao drone, mesmo que se saiba somente a posição do obstáculo em relação ao drone e a posição+orientação do robô em relação ao drone.
Utilizando a transformada homogênea
O mesmo problema de mapeamento de frame pode ser resolvido também por transformadas homogêneas.
Podemos calcular de forma conveniente a posição do obstáculo visto inicialmente pelo robô em relação ao frame do drone fazendo:
Para esta álgebra funcionar, note que foi concatenado verticalmente aos vetores de posição originais.
Exercício 1·Drone de vigilância
Um drone de vigilância em aeroportos faz rondas em torno da pista de decolagem em busca de pássaros que possam estar voando nas redondezas. Quando um pássaro é detectado pelo drone, o sistema do aeroporto deve descobrir se o pássaro está no espaço aéreo da pista. Caso positivo, um sistema de alarmes deve soar automaticamente para a torre de comando.
Ao localizar um pássaro com seus sensores, o drone é capaz de estimar o vetor de posição deste pássaro em relação a ele. A pose do drone em relação à torre de comando é sempre conhecida, assim como a posição fixa dos vértices da região do espaço aéreo da pista também em relação à torre de comando.
Implemente um algoritmo em Python que:
receba como parâmetro as coordenadas dos vértices da região do espaço aéreo da pista;
receba a posição do pássaro detectada em relação ao drone como um vetor
calcule a posição do pássaro em relação à torre de comando;
estime se o pássaro se encontra no espaço aéreo da pista;
retorne um booleano True caso positivo ou False caso negativo.
Referências
1.
Correll, N., Hayes, B., Heckman, C., & Roncone, A. (2022). Introduction to autonomous robots: mechanisms, sensors, actuators, and algorithms. Mit Press.
Autor: FILIPE A. S. ROCHA
Publicado em 23 de março de 2026· Atualizado em 08 de setembro de 2026