• Nenhum resultado encontrado

DESENVOLVIMENTO DO MÓDULO PARA CALIBRAÇÃO DE CÂMERA

No documento 2012.1 TCC Isabela (páginas 54-58)

O primeiro passo para o processo de calibração de câmera desenvolvido consiste na captura da imagem, a qual deve conter o padrão escolhido, o padrão xadrez coplanar. Toda imagem capturada pela câmera é salva no padrão YUV 4:2:2, então para facilitar a aplicação do operador de Moravec, o qual utiliza os níveis de cinza dos pixels, foi criado um vetor apenas com os componentes Y. Ou seja, criou-se um vetor que representa a imagem em tons de cinza e esse vetor é o que será utilizado na aplicação do operador de Moravec.

O padrão xadrez utilizado é composto por 9 quadrados e portanto há 16 cantos a serem detectados pelo operador de Moravec. Enquanto não forem detectados 16 cantos o operador é aplicado novamente. Tendo localizado os 16 cantos, esses são ordenados para garantir que fiquem na sequência adequada para realizar corretamente a correspondência entre eles e os pontos 3D, assim como ilustrado na figura 29. Caso o segundo ponto localizado corresponda ao ponto P3, por exemplo, este terá como correspondente 3D o ponto (Dx, 0, 1), o que estaria errado. Portanto, essa ordenação é de extrema importância para que não haja erro na correspondência dos pontos e consequentemente no cálculo da homografia.

Figura 29: Correspondência entre os pontos 2D e os pontos 3D para o padrão xadrez coplanar utilizado.

Com as coordenadas dos pontos 2D e feita a correspondência correta encontrando as respectivas coordenadas dos pontos 3D, calcula-se a homografia. O sistema referente a

equação 38 é montado utilizando os 16 pontos 2D localizados e seus respectivos pontos 3D correspondentes. Ao utilizar 16 pontos, tem-se mais equações do que incógnitas, então foi necessário também implementar o método dos mínimos quadrados para a solução desse sistema. Aplicando o método dos mínimos quadrados, encontra-se os coeficientes da homografia, finalizando assim a calibração.

4.6 DESENVOLVIMENTO DO MÓDULO PARA CALCULAR O DESVIO O desvio consiste em calcular:

• Ângulo em que o robô deverá rotacionar;

• Na distância mínima que ele deverá percorrer na direção em que ele foi rotacionado. É importante destacar que não é calculado a profundidade do obstáculo, com essas informações garante-se apenas o desvio lateral, portanto essa distância mínima refere-se a distância que ele deve percorrer para não colidir com o obstáculo e não a distância necessária para ele contornar todo o obstáculo.

Para o cálculo do desvio, analisa-se primeiramente qual o melhor lado, direito ou esquerdo, para o robô rotacionar e contornar o obstáculo, ou seja, escolhe-se o lado que o robô precisará girar menos. Isso é feito, tomando como base o ponto Pc, cujas coordenadas são: x = eixo central e y = altura do P1ou P2(ver figura 21) e calculando a distância euclidiana entre P1e o Pc, e entre Pc e P2. Caso a menor distância seja entre P1e o Pc o robô irá rotacionar para a esquerda e caso contrário o robô irá rotacionar par a direita. A figura 30 é uma adaptação da figura 21b mostrando um exemplo em que o lado escolhido para o robô rotacionar seria o lado direito.

Figura 30: Cálculo da distância entre P1e Pc e entre Pc e o P2para a escolha do lado que o robô deve rotacionar para desviar do obstáculo.

Após a definição do lado é feito o cálculo do ângulo que o robô precisará rotacionar e a distância miníma que ele terá que percorrer para desviar do obstáculo com segurança. Para realizar esse cálculo são utilizados:

1. distanciaPpixels = a distância entre P1 e Pc caso na etapa anterior tenha sido definido o lado esquerdo ou a distância entre Pce P2caso tenha sido o lado direito

2. distanciaRcm= a distância entre o robô e obstáculo fornecida pelo sensor infra-vermelho Porém, a primeira distância é dada em pixels e a segunda em centímetros, sendo assim, não é possível realizar o cálculo já que as informações estão em sistemas de medida diferentes. Optou-se então por transformar a primeira distância para centímetros, pois como as coordenadas do ponto Pc e do ponto P1 ou P2 já estão definidas, só foi necessário encontrar os pontos 3D correspondentes e então calcular a distância entre os pontos encontrados, essa nova distância já estará em centímetros: distanciaPcm. A transformação para pixels da distância entre o robô e obstáculo exigiria mais cálculos já que a coordenada da localização do robô não está definida diretamente.

Para transformar o Pc em seu correspondente 3D (no SCM) é necessário solucionar o sistema da equação 27, onde a matriz de homografia será a encontrada no processo de calibração, as coordenadas (Xf,Yf) são as coordenadas do ponto Pc e (Xm,Ym,1) são as coordenadas a serem encontradas do ponto 3D correspondente. Sendo assim, tem-se um sistema na forma Ax = b, onde A é a homografia, x são as coordenadas do ponto 3D a serem determinadas e b são as coordenadas do ponto Pc. Para solucionar esse sistema foi também implementado no firmware da câmera o método de Gauss-Jordan. Aplicando-se o método de Gauss-Jordan nesse sistema, obtém-se o ponto 3D no SCM correspondente ao ponto Pc. O mesmo é feito para encontrar o ponto 3D correspondente ao ponto P1ou P2.

Com base no modelo apresentado na figura 20 é possível afirmar que a reta que vai do ponto central do robô até o ponto Pc é perpendicular a reta que vai de Pc até o ponto P1 ou P2. Essas retas formam então o triângulo retângulo da figura 31, e com isso basta encontrar o valor da hipotenusa, a qual representa a distância mínima a ser percorrida pelo robô, e consequentemente poderá ser calculado o ângulo α a ser rotacionado, usando, por exemplo:

α = sen−1 distanciaPcm hipotenusa



(32)

4.7 TESTES

O primeiro caso de teste é em relação ao sistema de extração de características. Para testar os resultados obtidos com os métodos descritos na seção 4.4, desenvolveu-se um

Figura 31: Triângulo formado pela reta que vai do ponto central do robô até o ponto Pc e a reta que vai de Pc até o ponto P1ou P2.

programa em linguagem JAVA que comunica-se com a câmera através do protocolo RS-232 usando a API JavaComm. Esse programa possui uma interface gráfica (figura 32) que permite visualizar a localização dos pontos encontrados pelos métodos. Além disso, essa interface permite a marcação manual dos pontos extremos do obstáculo, podendo calcular e comparar visualmente a diferença entre esses pontos e os retornados por cada um dos métodos.

Figura 32: Interface em JAVA desenvolvida para testes.

Primeiro foram realizados testes para verificar a taxa de acerto e o tempo de execução de cada um dos métodos desenvolvidos. Nesses testes variou-se o tamanho dos obstáculos e a posição deles. No segundo caso de teste, para um mesmo obstáculo repetiu-se a aplicação de cada um dos métodos uma determinada quantidade de vezes, calculando o erro médio, o tempo médio de execução e o desvio padrão dos pontos localizados. Esse segundo teste foi repetido para obstáculos de tamanhos e posições diferentes. É importante ressaltar que nesses testes, a taxa de acerto ou o erro é encontrada com base em pontos marcados manualmente através do uso da interface desenvolvida.

Em relação aos testes do sistema de calibração, primeiro mediu-se o tamanho das arestas para diferentes distâncias entre o obstáculo e a câmera, utilizando apenas um objeto como obstáculo. Obteve-se com esse primeiro teste o erro médio e o desvio padrão para os tamanhos

encontrados. O segundo teste foi realizado com obstáculos diferentes posicionados sempre à uma mesma distância da câmera, obtendo para cada um dos obstáculos testados as medidas das arestas. Esse segundo teste gerou como resultado a taxa de acerto do sistema de visão proposto. Em relação ao teste do módulo do desvio, na verdade é um teste também da integração dos módulos, visto que para encontrar os desvio é necessário realizar a calibração primeiro e depois a detecção do obstáculo. Esses testes foram realizados variando-se a distância entre o robô e o obstáculo, verificando para cada situação se o desvio calculado (ângulo e distância) foi correto ou não, gerando assim a taxa de acerto.

No documento 2012.1 TCC Isabela (páginas 54-58)

Documentos relacionados