Introdução
O objetivo desta aula é relembrar algumas ferramentas matemáticas para representar e manipular espacialmente pontos e vetores.
Esta habilidade é essencial em qualquer tipo de modelagem de robôs operando no espaço.
As demonstrações abaixo consideram representações no espaço, ou seja, no espaço tridimensional. Na maioria dos casos, para se trabalhar nas dimensões inferiores (bidimensional, unidimensional) basta remover os elementos matemáticos que a representão; por exemplo, remover uma coordenada da posição, ou remover um vetor unitário do sistema de coordenadas).
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.).
Um sistema de coordenadas é composto por:
- Uma origem
: ponto no espaço onde se origina seus eixos unitários. - Três vetores unitários mutuamente ortogonais
, , .

Cada vetor unitário está relacionado a uma das dimensões representadas por aquele sistemas de coordenadas, sendo comumente instanciados como:
Assim, um sistema de coordenadas genérico
Os sentidos positivos (ou seja, para apontam) dos vetores-base dos sistemas de coordenadas são definidos de acordo com a convenção da "regra da mão direita", largamente utilizada pela comunidade científica. Por extensão, os sentidos positivos de translação e rotação também são definidos de acordo com esta convenção.

A regra da mão direita faz garantir que a relação entre os eixos unitário a da base
Além disso, sendo ortogonais entre si, a relação entre os eixos unitários pode ser descrita da seguinte maneira:
Posição
Tendo como base um sistema de coordenadas
onde os elementos
Orientação
Seguindo nossa ilustração, não faria sentido tentarmos definir a orientação do ponto
Definição dos sistemas de coordenadas
Sendo assim, para representar a orientação relativa entre dois elementos no espaço, precisamos definir um sistema de coordenadas também a este segundo elemento.
Na prática, considera-se então as coordenadas do ponto
Orientação por projeção
Com estes dois sistemas definidos, uma maneira de representar a orientação de
Uma maneira de fazer tal descrição é projetando os vetores-base de um sistema de coordenadas em outro. Por exemplo, para projetar
Fazendo-se o mesmo processo de projeção para os demais vetores-base
que é denominada a matriz de rotação que representa a orientação do frame
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 (e outras representações também).
Como pode-se observar na Eq.
As matrizes de rotação sã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 terá 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.
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
O robô gostaria de indicar a posição deste obstáculo a um drone, ao qual atrelamos o frame
Para o nosso exemplo, a Eq.
Pose no espaço
Até então, vimos como representar a posição e orientação relativa entre elementos no espaço cartesiano utilizando objetos matemáticos separados. Há porém uma maneira de combinar ambas as representações em uma única estrutura matemática.

Transformação homogênea
Considerando nosso exemplo, a matriz de transformação homogênea do frame
Note que a matriz
Assim, agora podemos calcular de forma conveniente a posição do obstáculo visto inicialmente pelo robô em relação ao sistema inercial da seguinte maneira:
Para esta álgebra funcionar, note que foi concatenado verticalmente
Transformação homogênea inversa
Note que a inversa de uma transformada homogênea pode ser construída invertendo a rotação e a translação de forma independente:
Combinação de transformações
É possível combinar transformações simplesmente ao multiplicá-las pela direita.
Por exemplo, considere agora que há mais dois robôs cujos frames são
Desafio: Exercício prático
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.
Tarefa
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
Truecaso positivo ouFalsecaso negativo.
- retorne um booleano

