terça-feira, 6 de maio de 2014


Desenvolvimentos das Passadas Semanas


De forma a ser possível a obtenção de resultados de posicionamento concretos,  ou seja, em ambiente real, foi definido um sistema de coordenadas no LAR e foram posteriormente colocadas algumas matrizes contendo a sua posição no referido referencial.


Posteriormente foi adicionado o cálculo do ângulo formado pelo centro da câmara com a matriz detectada.


Com o objectivo de tornar o processamento da imagem mais célere e eficaz foi aplicada uma banda de pesquisa à imagem original, na qual foram cortadas, na mesma proporção, as zonas superior e inferior, correspondendo a 1/2 da totalidade da imagem. Este procedimento foi possível pois é sabido que as matrizes estarão presentes  apenas no centro da imagem e observou-se também que esta altura da imagem possibilita uma leitura a cerca de 70 cm de distância da matriz.


Foram ainda encontradas dificuldades na leitura da posição, pois a cada detecção de uma matriz era enviada a informação relativa a esta, ainda que a mesma imagem contivesse várias matrizes, o que, ainda que sendo possível relacionar as detecções à imagem correta, tornava o posicionamento instável. Foi portanto necessário alterar o modo de processamento da informação, sendo enviada a informação correspondente a todas as matrizes lidas numa dada imagem. Para tal, foi alterada a mensagem enviada, passando esta a ser um vector contendo a informação relativa a cada detecção feita para uma imagem. Desta forma ao receber a mensagem os cálculos irão ser feitos já com conhecimento de quantas matrizes foram detectadas.


Finalmente, de maneira a tornar possível a obtenção de uma estimativa visual do posicionamento global, foi utilizada uma planta do laboratório, onde são marcadas circunferências com centro nas coordenadas das matrizes detectadas e raio correspondente à distância calculada. Desta forma, ao ler duas matrizes  em simultâneo as duas circunferências ir-se-ão interceptar em dois pontos, um dos quais corresponde à posição real da câmara e outro a esta posição "reflectida" em relação a um segmento de recta que liga a posição duas matrizes.


De seguida apresentam-se duas imagens exemplo, onde podem ser observados os desenvolvimentos acima referidos. é de salientar que se trata apenas de um exemplo, uma vez que a câmara não estava devidamente apoiada pelo que a altura e orientação desta não foi a ideal. Ainda assim, sabendo que a câmara se encontrava no lugar referenciado com o número 16 o posicionamento obtido pode ser considerado aceitável como se pode observar:





quinta-feira, 10 de abril de 2014


Calibração da Câmara


Para iniciar esta nova semana foi feita a calibração da nova câmara ( Logitech c310 ) para resoluções de 1280 x 960 e 800 x 600, tendo-se verificado a alteração dos parâmetros utilizando a mesma câmara com diferentes resoluções. Foi ainda feita a correção da distorção, tendo-se esta verificado mais notória para a resolução de 800 x 600. Uma vez que a distorção é tão pequena que seria impossível notar num padrão com linhas rectas e para tornar este efeito visível foram adquiridas duas imagens de uma superfície completamente branca, uma com distorção e outra com a distorção corrigida. Como se pode verificar nas figuras abaixo a correção da distorção leva a uma imagem com margens pretas, mais notórias a meio da arestas.


Imagem com distorção

Imagem com distorção corrigida



Distância ao marcador


A passada semana foi dedicada à calibração da câmara, bem como à obtenção da imagem com a distorção corrigida e finalmente ao cálculo da distância ao marcador.

Neste sentido, foi melhorado o módulo criado para publicação da imagem, o qual publica agora também a informação relativa à câmara. Deste modo é possível calibrar a câmara, tendo sido criada uma launch file que visa facilitar esse processo. Para esse efeito, basta alterar, na referida launch file, os parâmetros relativos ao xadrez utilizado na calibração, ou seja, o número de quadrados interiores e a sua dimensão, tal como a designação da câmara utilizada, de forma que cada câmara tenha a sua calibração.
Foi ainda utilizado o módulo ROS de correção da distorção da imagem, o qual subscreve a imagem original e publica a imagem corrigida, com base na calibração previamente efetuada.
Posteriormente foi criada uma mensagem que permite o envio da informação relativa ao marcador detectado.
Por fim foi criado um novo módulo que permite o cálculo da distância ao marcador. Este recebe a mensagem com a informação relativa ao marcador, e com base nas suas dimensões e na calibração da câmara calcula a sua distância aproximada. Este tem ainda como função fazer a amostragem da detecção do marcador tal como dos resultados obtidos.



Exemplo da detecção, descodificação e cálculo da distância para um marcador

terça-feira, 1 de abril de 2014


Ponto da Situação


Primeiramente, após as sessões ministradas no LAR, foi necessária uma familiarização com a linguagem C++ assim como com o ambiente ROS.

Posteriormente foi efetuado um levantamento do estado da arte, no que diz respeito à descodificação de Data Matrix. Como resultado dessa pesquisa foram encontradas duas bibliotecas possíveis de implementar em linguagem C++, ambas Open Source, sendo estas a libdmtx e zxing. Porém, apenas a biblioteca libdmtx foi desenvolvida em linguagem C, a qual é totalmente compatível com C++. Adicionalmente, esta biblioteca possuí uma documentação relativamente organizada o que facilita a sua utilização e compreensão. Tendo sido, portanto, esta a biblioteca adotada para o desenvolvimento deste trabalho.

Após um período de adaptação à referida biblioteca, foi possível desenvolver um módulo ROS que faz a leitura em tempo real de um Data Matrix, tendo sido posteriormente estendido à leitura de múltiplos Data Matrix.

Foi ainda possível, após estudo da biblioteca em questão, encontrar o posicionamento dos Data Matrix na imagem. Nesta fase foram encontrados alguns obstáculos, uma vez que, após compreensão das estruturas de dados presentes na biblioteca, a posição dos Data Matrix não se encontrava correta. Isto deveu-se ao facto de a origem da imagem na biblioteca libdmtx não corresponder à origem na biblioteca OpenCV, biblioteca esta que foi utilizada para mostrar a imagem e marcar a posição dos Data Matrix. Facto que levava os pontos a aparecerem deslocados da sua posição ao longo das colunas.

Já na passada semana, foi desenvolvido um novo módulo de aquisição e publicação da imagem em ambiente ROS, uma vez que com o módulo até então utilizado apenas foi possível a aquisição de imagem usando a webcam integrada do computador.

Por último foi feita a transição de todo o trabalho para o controlo de versões do laboratório e criada documentação para os módulos ROS desenvolvidos.

segunda-feira, 31 de março de 2014


Estudo e seleção do tipo de marcadores


Uma vez que se pretende o desenvolvimento de um sistema de visão artificial para guiamento de um AGV em ambiente industrial baseado em marcadores, é essencial proceder à seleção do tipo de marcadores a utilizar, bem como a informação que estes deverão conter .

Qual o tipo de informação?


Tratando-se o sistema em causa, de um sistema no qual se pretende conhecer o posicionamento relativo de um AGV, torna-se necessária a existência de pontos de referência na imagem ( localização conhecida ). Logo, a informação que os marcadores deverão conter será o seu próprio posicionamento ( em coordenadas X,Y ).

Qual o tipo de marcadores?


Sabendo que se pretende desenvolver um sistema de posicionamento em tempo real baseado em visão artificial, foram considerados como fatores determinantes na seleção dos marcadores a sua robustez, quantidade de informação, facilidade e versatilidade de leitura e a fácil detecção de erros.
Dado o tipo de informação que se pretende armazenar, foram considerados marcadores do tipo código de barras, Data Matrix, QRCode, Aztec Code, entre outros.
Porém, uma vez que se pretende fazer uma leitura dos marcadores a uma distância considerável, torna-se necessário que estes apresentem células unitárias de grandes dimensões e consequentemente uma elevada densidade de informação. Posto isto, foram apenas considerados os marcadores do tipo 2D.
Após estudo dos vários tipos de marcadores 2D existentes, foram selecionados dois como potenciais candidatos, uma vez que são amplamente implementados, quer na indústria, quer em aplicações para o utilizador. São estes o Data Matrix e o QRCode.

FALTA TERMINAR

sábado, 29 de março de 2014

Bem vindo,


O meu nome é Luís Pedras Carrão e sou estudante do Mestrado Integrado em Engenharia Mecânica na Universidade de Aveiro. Sendo este o meu último ano, nos próximos meses irei desenvolver o meu trabalho de dissertação, que tem por título "Sistema de visão artificial para guiamento em ambiente industrial".

Neste blog serão publicados os desenvolvimentos alcançados, com uma periodicidade semanal.

Objetivos:


Este trabalho tem como principal objetivo o desenvolvimento de um sistema de visão artificial, baseado em marcadores, que permita a navegação de um AGV (automatic guided vehicle) em ambiente industrial. Dessa forma, pretende-se obter a localização relativa do AGV no chão de fábrica em três dimensões (X,Y e orientação). Para tal, os marcadores a utilizar poderão ter dimensões semelhantes às de uma folha A4. Os marcadores devem ficar separados entre si de uma dada distância, a determinar, mas que não deverá ser demasiado pequena (alguns metros). Várias soluções poderão ser consideradas, nomeadamente no que toca à distribuição e distinção dos marcadores. Deverão ser considerados também possíveis problemas, como é o caso das condições de iluminação e visibilidade dos marcadores.

Welcome,


My name is Luís Pedras Carrão and i'm a masters student of mechanical engineering at the University of Aveiro. As this is my last year, i will be spending my next few months working on my master thesis, which is entitled "Computer vision system for guidance in industrial environment".

This blog is going to be updated with the work development on a weekly basis.

Main Objectives:


This work's main goal is the development of a computer vision system, based on markers, which allows the navigation of an AGV (automatic guided vehicle) in the industrial environment. Therefore, it is intended to get the relative position of an AGV in the factory floor on 3 dimensions (X,Y and orientation). For that purpose, the markers may have similar dimensions to those of an A4 sheet. The markers should be separated of a given distance, to be detemined, which should not be too small (a few meters). Several solutions may be considered, in particular regarding to the distribution and distinction between markers. Possible problems should also be considered, such as lighting conditions and visibility of markers.