indoor simulation for control of unmanned aerial vehicles a imagem indica medidas em pixels e o...

4
Indoor Simulation for Control of Unmanned Aerial Vehicles Ricardo Vergili Filho, Oswaldo Fratini Filho, Francisco de Assis Zampirolli Universidade Federal do ABC Santo André, Brasil E-mails: {ricardo.vergili, oswaldo.fratini}@aluno.ufabc.edu.br, [email protected] Abstract—The use of Unmanned Aerial Vehicles (UAV’s) is becoming increasingly more intense in civilian and military areas, as they can replace humans in dangerous or routine missions. Although well developed, many of these devices still require constant monitoring and human command to perform its functions. This research aims to decrease such dependence by enabling an UAV to orient itself autonomously based on the recognition of pre-determined routes. By means of incorporation of a market IP video camera and the development of a computer vision system in Python using the OpenCV library, the captured images are sent to a PC on land, which is in charge of processing. Resumo—O uso de Veículo Aéreo Não Tripulado (VANT) vem se tornando cada vez mais intenso nas áreas civis e militares, uma vez que VANTs podem substituir seres humanos em missões perigosas ou rotineiras. Embora sejam bem desenvolvidos, muitos destes aparelhos ainda requerem constante monitoramento e comando humano para o desempenho de suas funções. Essa pesquisa busca diminuir tal dependência, capacitando um VANT a orientar-se de forma autônoma com base no reconhecimento de rotas pré-determinadas. Através da incorporação de uma câmera de vídeo IP de mercado e do desenvolvimento de um sistema de visão computacional implementado em linguagem Python, usando a biblioteca OpenCV, as imagens capturadas são enviadas para um PC terrestre, que é encarregado de processá-las. Keywords— Image Processing; Computer Vision, Unmanned Aerial Vehicles. I. INTRODUÇÃO Criados inicialmente para uso militar, os Veículos Aéreos Não Tripulados (VANT’s), foram projetados e construídos para substituir e auxiliar o homem em missões de grande risco [1, 2]. O incrível sucesso desses aparelhos em atividades como reconhecimento, inteligência, apoio aéreo, combate e controle de artilharia fez com que, posteriormente, fossem sendo descobertas importantes funções civis para os mesmos nas áreas de policiamento, patrulhamento costeiro, proteção ambiental e atividades de busca, dentre outras. Devido à grande utilidade e importância desses equipamentos, o projeto e construção dos VANT’s têm constituído uma promissora área de pesquisa e desenvolvimento [3, 4, 5, 6]. Podendo se diversificar em pequenas aeronaves de asas fixas ou rotativas, esses veículos são operados de duas formas principais: por controle remoto, isto é, pilotados por seres humanos em uma base fixa de comando; ou por autonomia própria, ou seja, voam de forma automática, através de computadores e softwares programáveis [7]. Além dos sistemas básicos de voo, o projeto dos VANT’s completamente autônomos inclui a necessidade de controladores lógicos programáveis que comandem o aparelho. Tais comandos dependem da função e das missões a serem desempenhadas pelo veículo em questão. Um VANT de patrulhamento costeiro, por exemplo, tem de ser capaz de identificar veículos estranhos e de agir imediatamente, seja se movimentando em direção ao mesmo ou informando uma central operacional sobre a presença desconhecida. Por essas razões, aparelhos completamente autônomos precisam de sistemas integrados de reconhecimento, ação e controle, para que possam voar e desempenhar suas funções de forma conjunta, sem a necessidade de supervisão humana imediata. Devido ao fato de a pesquisa e o desenvolvimento desses sistemas se encontrarem levemente defasados e ainda necessitarem de esforços e aperfeiçoamento, observa-se um maior uso de VANT’s controlados pelo homem. Entretanto, devido à redução de custos de operação e pessoal que podem trazer, os veículos autônomos representariam uma vantagem nessa área, sendo poucas as missões que estes não podem executar. O propósito desse trabalho é, portanto, a capacitação de um quadricóptero (um VANT de asas rotativas [8]) quanto à capacidade de se locomover de forma independente. Através de metodologias computacionais, do desenvolvimento e integração dos sistemas de visão e comando, esse projeto busca habilitar o quadricóptero a identificar trajetórias e possíveis caminhos, além de tomar ações em relação a tais detecções. II. EQUIPAMENTOS Para a execução geral deste trabalho foi utilizado um quadricóptero já desenvolvido em outra pesquisa na UFABC [8]. Trata-se de um VANT de asas rotativas, dotado de quatro motores, que funcionam sob placas Arduino (Kit Arduino Pilot Mega), responsável pelo controle do quadricóptero. Para a captura de imagens para processamento foi usada uma câmera IP modelo FOSCAM FI8909W, que fica acoplada ao quadricóptero durante seus voos. A resolução desta câmera Proceedings of XI Workshop de Visão Computacional October 05th07th, 2015 67

Upload: buikien

Post on 02-Apr-2018

214 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Indoor Simulation for Control of Unmanned Aerial Vehicles a imagem indica medidas em pixels e o quadricóptero se ... cálculos abaixo, a taxa de conversão de pixels (px) para centímetros

Indoor Simulation for Control of Unmanned Aerial Vehicles

Ricardo Vergili Filho, Oswaldo Fratini Filho, Francisco de Assis Zampirolli Universidade Federal do ABC

Santo André, Brasil E-mails: {ricardo.vergili, oswaldo.fratini}@aluno.ufabc.edu.br, [email protected]

Abstract—The use of Unmanned Aerial Vehicles (UAV’s) is

becoming increasingly more intense in civilian and military areas, as they can replace humans in dangerous or routine missions. Although well developed, many of these devices still require constant monitoring and human command to perform its functions. This research aims to decrease such dependence by enabling an UAV to orient itself autonomously based on the recognition of pre-determined routes. By means of incorporation of a market IP video camera and the development of a computer vision system in Python using the OpenCV library, the captured images are sent to a PC on land, which is in charge of processing.

Resumo—O uso de Veículo Aéreo Não Tripulado (VANT) vem se tornando cada vez mais intenso nas áreas civis e militares, uma vez que VANTs podem substituir seres humanos em missões perigosas ou rotineiras. Embora sejam bem desenvolvidos, muitos destes aparelhos ainda requerem constante monitoramento e comando humano para o desempenho de suas funções. Essa pesquisa busca diminuir tal dependência, capacitando um VANT a orientar-se de forma autônoma com base no reconhecimento de rotas pré-determinadas. Através da incorporação de uma câmera de vídeo IP de mercado e do desenvolvimento de um sistema de visão computacional implementado em linguagem Python, usando a biblioteca OpenCV, as imagens capturadas são enviadas para um PC terrestre, que é encarregado de processá-las.

Keywords— Image Processing; Computer Vision, Unmanned Aerial Vehicles.

I. INTRODUÇÃO Criados inicialmente para uso militar, os Veículos Aéreos

Não Tripulados (VANT’s), foram projetados e construídos para substituir e auxiliar o homem em missões de grande risco [1, 2]. O incrível sucesso desses aparelhos em atividades como reconhecimento, inteligência, apoio aéreo, combate e controle de artilharia fez com que, posteriormente, fossem sendo descobertas importantes funções civis para os mesmos nas áreas de policiamento, patrulhamento costeiro, proteção ambiental e atividades de busca, dentre outras. Devido à grande utilidade e importância desses equipamentos, o projeto e construção dos VANT’s têm constituído uma promissora área de pesquisa e desenvolvimento [3, 4, 5, 6].

Podendo se diversificar em pequenas aeronaves de asas fixas ou rotativas, esses veículos são operados de duas formas principais: por controle remoto, isto é, pilotados por seres

humanos em uma base fixa de comando; ou por autonomia própria, ou seja, voam de forma automática, através de computadores e softwares programáveis [7]. Além dos sistemas básicos de voo, o projeto dos VANT’s completamente autônomos inclui a necessidade de controladores lógicos programáveis que comandem o aparelho. Tais comandos dependem da função e das missões a serem desempenhadas pelo veículo em questão. Um VANT de patrulhamento costeiro, por exemplo, tem de ser capaz de identificar veículos estranhos e de agir imediatamente, seja se movimentando em direção ao mesmo ou informando uma central operacional sobre a presença desconhecida. Por essas razões, aparelhos completamente autônomos precisam de sistemas integrados de reconhecimento, ação e controle, para que possam voar e desempenhar suas funções de forma conjunta, sem a necessidade de supervisão humana imediata.

Devido ao fato de a pesquisa e o desenvolvimento desses sistemas se encontrarem levemente defasados e ainda necessitarem de esforços e aperfeiçoamento, observa-se um maior uso de VANT’s controlados pelo homem. Entretanto, devido à redução de custos de operação e pessoal que podem trazer, os veículos autônomos representariam uma vantagem nessa área, sendo poucas as missões que estes não podem executar.

O propósito desse trabalho é, portanto, a capacitação de um quadricóptero (um VANT de asas rotativas [8]) quanto à capacidade de se locomover de forma independente. Através de metodologias computacionais, do desenvolvimento e integração dos sistemas de visão e comando, esse projeto busca habilitar o quadricóptero a identificar trajetórias e possíveis caminhos, além de tomar ações em relação a tais detecções.

II. EQUIPAMENTOS Para a execução geral deste trabalho foi utilizado um

quadricóptero já desenvolvido em outra pesquisa na UFABC [8]. Trata-se de um VANT de asas rotativas, dotado de quatro motores, que funcionam sob placas Arduino (Kit Arduino Pilot Mega), responsável pelo controle do quadricóptero.

Para a captura de imagens para processamento foi usada uma câmera IP modelo FOSCAM FI8909W, que fica acoplada ao quadricóptero durante seus voos. A resolução desta câmera

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

67

Page 2: Indoor Simulation for Control of Unmanned Aerial Vehicles a imagem indica medidas em pixels e o quadricóptero se ... cálculos abaixo, a taxa de conversão de pixels (px) para centímetros

é 640 x 480 pixels (300k pixels); lente f: 2.8mm, F:1.8 (IR Lens); compressão de imagem MJPEG; frame rate 15fps (VGA), com 60º graus de campo de visão.

Os recursos de softwares utilizados foram: Ubuntu: Sistema operacional Linux, versão 13.10; MAVLink: protocolo de comunicação de micro veículos aéreos, utilizado para o envio de comandos ao controlador do quadricóptero. Para o controle do equipamento (equipado com placas Arduino) foi usado o software Arduino IDE, versão 1.0.5. Python 2.7.5: linguagem de programação de alto nível, interpretada, e largamente utilizada para o desenvolvimento de trabalhos científicos [7]; OpenCV 2.4.8: biblioteca para subrotinas de visão computacional Open Source da Intel [9, 10]; módulos de processamento de imagens e reconhecimento de objetos numpy, scipy, pymorph, ipython, mahotas, matplotlib, pyparsing e PIL (Python Imaging Library), todos para o Python [7].

III. MÉTODOS

No intuito de desenvolver um sistema autônomo, foram levadas em consideração diversas funções e aplicações que fossem capazes de garantir autonomia de controle ao aparelho. Entretanto, através de uma extensiva revisão da literatura existente, observou-se que mesmo os sistemas mais autônomos dependiam de grandes quantidades de informação e de aplicações externas. Um exemplo é o controle através de GPS (Global Positioning System), que além de requerer mapas atualizados e o delineamento de rotas, também apresenta dificuldades quanto à precisão, segurança e sincronia do sinal transmitido. Devido à dificuldades como essas, iniciou-se a busca por um sistema mais eficiente, baseado em visão computacional, capaz de realizar as funções de controle com mais precisão e sem a necessidade de grandes quantidades de informações prévias.

Os sistemas de visão computacional funcionam através da identificação de características que podem ser encontradas nas imagens. Sendo assim, o reconhecimento de trajetórias e caminhos requer a identificação de uma característica em especial para que sua detecção seja possível. A análise de diversos caminhos revela um padrão em suas áreas, que costumam ser uniformes, de pouca alteração e que apresentam certas caracteríscas dependendo do ângulo com que são observadas. De acordo com [11], um caminho, à ângulos de inclinação próximos de 60°, perpendicular à superfície, pode ser identificado através de sua àrea de acordo com a orientação da trajetória (direita, esquerda, frente, trás).

Nesse sentido, este trabalho tem seu foco no desenvolvimento de um algoritmo em python, que é capaz de identificar trajetórias através de suas áreas. Em seguida, utilizando os caminhos identificados, é possível orientar o VANT quanto às direções a serem tomadas.

Para atingir esse objetivo, este trabalho se divide em três partes: identificação das áreas para o reconhecimento de

trajetórias; calibração da câmera quanto às distâncias; e orientação do veículo de acordo com as áreas identificadas.

Para o funcionamento deste algoritmo foram adotadas algumas premissas iniciais na realização desse trabalho: A aeronave sobrevoará o caminho com uma altitude preestabelecida de maneira estável, sem a presença de giros e guinadas sobre seus eixos (1) (o VANT usado ainda apresenta instabilidade após realizar tais manobras); Caminho determinado utilizando fita adesiva preta sobre uma superfície de cor clara, preferencialmente branca (2) (utilizar essa combinação para certificar a detecção usando a câmera IP); Superfície relativamente plana (3) (necessária uma vez que o VANT realiza o voo em altitude fixa). Para garantir as premissas 1, 2 e 3, o voo foi realizado indoor.

Para identificar as trajetórias de forma que seja possível orientar o VANT, buscou-se detectar áreas dos caminhos nas bordas das imagens obtidas. Para tal, é necessário delimitar as regiões de bordas e buscar detecções nas mesmas. Dado que a imagem da câmera é de 640x480 pixels, foram definidas bordas horizontais de 640x10 pixels e verticais de 10x480 pixels. A delimitação resulta no que pode ser observado na Fig. 1. A partir dessa delimitação, buscou-se detectar objetos nessas bordas. Uma vez que uma área é detectada em uma borda, é possível determinar a direção da trajetória e requisitar que o quadricóptero se oriente de acordo.

Fig. 1. Bordas utilizada para processamento de imagens.

Uma vez que seja possível indicar como uma trajetória se comporta, é possível indicar ao VANT o que o mesmo deve fazer para percorrer tal caminho. Levando em consideração que a imagem indica medidas em pixels e o quadricóptero se move em medidas como metros ou centímetros, é necessário uma calibração. A calibragem da câmera é fundamental para se determinar as distâncias no campo de visão. Para tal, um quadrado de 5x5 cm foi colocado no campo de visão da câmera, de forma que fosse possível medí-lo pelas imagens obtidas. Dado que já se conhecia o tamanho real do objeto e a resolução da câmera, foi possível obter, através dos simples cálculos abaixo, a taxa de conversão de pixels (px) para centímetros (cm). A Fig. 2 ilustra este processo. Através dessa conversão, é possível determinar as distânciais reais (em metros) que o quadricóptero deve percorrer com base no processamento da imagem (em pixels).

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

68

Page 3: Indoor Simulation for Control of Unmanned Aerial Vehicles a imagem indica medidas em pixels e o quadricóptero se ... cálculos abaixo, a taxa de conversão de pixels (px) para centímetros

Altura: 12px/5cm = 2, 4 px/cm

Largura: 16px/5cm = 3,2 px/cm

Fig. 2. Ilustração da conversão de pixel para cm.

Como observado, o processamento da imagem realizado é inspirado na análise de imagem proposta em [11], onde são realizados os passos a seguir:

1) Importar bibliotecas e capturar imagens da câmera;

2) Converter a imagem RGB para uma imagem em níveis de cinza;

3) Converter a imagem em níveis de cinza para uma imagem binária utilizando um threshold. Pelos testes empíricos, o melhor limiar foi de 48;

4) Dividir a imagem em 4 subimagens. Cada subimagem tem 10 pixels de largura/altura e são as bordas, veja Fig. 2;

5) Determinar qual direção seguir: para cada um dos 4 retângulos das bordas da imagem, o processamento é realizado buscando por um ou mais objetos (trecho do caminho) de área mínima. Nessa parte do algoritmo os objetos são contornados e seus respectivos centros de massas são determinados para as próximas etapas. Caso exista mais de um objeto detectado em cada lado da borda, é utilizado como referência para o cálculo o objeto com maior área. Assim, são calculadas as seguintes áreas para cada um destes 4 objetos: areaTop, areaRight, areaBott e areaRight. Se não existir objeto em algum lado da borda, a área associada é zero;

6) Encontradas as áreas de referências, em cada uma das 4 subimagens processadas, o algoritmo tem como base as seguintes condições: Se areaTop==0 e areaRight==0 e areaBott==0 e areaRight==0 "Erro: Não reconheceu objetos!" Senão Se areaBott > 0 e areaTop==0 e areaRight==0 e areaLeft==0 "Retornar!" Senão Se areaTop > areaRight e areaTop > areaLeft # seguir para o Topo Atribuir a coord. destino o centro de massa do objeto do topo; Calcular o ângulo a ser percorrido; Senão Se areaRight > areaTop e areaRight > areaLeft # seguir para a Direita Atribuir a coord. destino o centro de massa do obj da direita; Calcular o ângulo a ser percorrido;

Senão Se areaLeft > areaTop e areaLeft > areaRight # seguir para a Esquerda Atribuir a coord destino o centro de massa do obj da esquerda; Calcular o ângulo a ser percorrido;

Essa última etapa do algoritmo considera a origem das coordenadas (x, y) no canto superior esquerdo da imagem. De acordo com as áreas localizadas nas bordas, são determinadas as coordenadas alvo ‘x’ e ‘y’ de acordo com os centros de massa das áreas detectadas. No algoritmo para seguir à direita, em especial, o cálculo da coordenada alvo ‘x’ soma o centro de massa da área localizada com 630 pois essa é a distância horizontal (em pixels) entre a origem e a borda direita (onde ocorreu a detecção).

IV. RESULTADOS E DISCUSSÃO

Após a implemantação do algoritmo na linguagem Python, foram realiazados vários testes para determinar o quão funcional é a sua execução. Analisando as imagens das Figuras 3, 4 e 5, é possível observar os efeitos de cada parte do código implementado.

Após as conversões dos frames de vídeo para imagens em níveis de cinza e imagens binárias, o código destaca como áreas de processamento as bordas na imagem (como visto acima na Fig. 1). Em seguida, o algoritmo inicia uma busca por objetos nas bordas, que são partes da trajetória (em preto na Figs. 3, 4 e 5). Quando encontradas, esses objetos são contornados de verde e seus centros de massa são calculados. Esse centros são então convertidos em coordenadas alvo. Com base nessas coordenadas, o código retona o ângulo de orientação a ser seguido e traça uma linha (em azul) que vai do centro da imagem ao centro de massa alvo. Isso se repete múltiplas vezes e em várias direções de acordo com a rota seguida. Quando somente uma área na borda inferior é detectada, o código retorna uma mensagem para que o quadrícóptero retorne.

De uma maneira geral, o código se mostrou útil, pois retorna duas informações relevantes na orientação de um véiculo aéreo: a localização do alvo, isto é, as coordenadas relativas da posição para a qual o quadricóptero deve seguir e o ângulo de orientação que o mesmo pode utilizar para atingir seu alvo.

Em posse dessas duas informações e da conversão ilustrada na Fig. 2, é possível definir as distâncias reais e iniciar o desenvolvimento de códigos de ação para o aparelho numa missão que requeira a perseguição de rotas.

Como trabalho futuro, com auxílio do protocolo de comunicação MAVlink, é possível, a partir do que foi realizado nesse artigo, iniciar a comunicação do PC terrestre ao quadrícoptero, possibilitando o comando autônomo do mesmo. Algoritimo semelhante pode ser aplicado às estradas ou ruas, nas quais o aparelho pode se mover de acordo com

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

69

Page 4: Indoor Simulation for Control of Unmanned Aerial Vehicles a imagem indica medidas em pixels e o quadricóptero se ... cálculos abaixo, a taxa de conversão de pixels (px) para centímetros

uma missão planejada, como monitoramento de tráfego em estradas, por exemplo.

V. CONCLUSÕES Através do desenvolvimento deste trabalho, foi possível encontrar um método para o reconhecimento de rotas a serem seguidas por um quadricóptero autônomo durante uma missão. Com as imagens e informações que podem ser extraídas desse algoritmo, é possível o início do desenvolvimento de um sistema que integre os comandos físicos de movimentação do veículo com as interpretações realizadas pelo processamento das imagens da câmera acoplada.

AGRADECIMENTOS Os autores agradecem ao programa de iniciação científica

da UFABC e da CAPES.

REFERÊNCIAS [1] Current and future UAV military users and applications. Air & Space

Europe, Vol.1 (5), pp.51-58, 1999. [2] Blyenburgh, P.V., UAVs: an Overview. Air & Space Europe. Vol. 1, (5–

6), pp.43–47, 1999. [3] Sharp, C.S., Shakernia O., Sastry, S.S. A Vision System for Landing an

Unmanned Aerial Vehicle. IEEE International Conference on Robotics and Automation (ICRA), 2001.

[4] Nygårds, J., Skoglar, P., Ulvklo, M., Högström, T., Navigation Aided Image Processing in UAV Surveillance: Preliminary Results and Design of an Airborne Experimental System. J. Robotic Syst., Vol. 21, pp. 63-72. 2004.

[5] Neto, A.A., Macharet, D.G., Campos, M.F.M., On the Generation of Trajectories for Multiple UAVs in Environments with Obstacles. J. Robotic Syst., Vol. 57, pp. 123-141. 2010.

[6] Frew, E., McGee, T., Kim, Z., Xiao, X., Jackson, S., Morimoto, M., Rathinam, S., Padial, J., Sengupta, R. Vision-Based Road-Following Using a Small Autonomous Aircraft. IEEE Aerospace Conference Proceedings, 2004.

[7] The Python Imaging Library Handbook, PIL Handbook for version 1.1.6. Disponível em: < http://effbot.org/imagingbook/>. Acesso em: 26 Março 2015.

[8] Silva, G.M. e Santos, C.S. Projeto de Construção de um Quadricóptero com Aplicações em Visão Computacional. Congresso de Iniciação Científica da UFABC e USCS, 2012.

[9] The OpenCV Tutorials, Release 2.4.8.0, 2013. Disponível em: <http://docs.opencv.org/opencv_tutorials.pdf>. Acesso em 26 Março 2015.

[10] Marengoni, M. and Stringhini, D. Tutorial: Introdução à Visão Computacional usando OpenCV. RITA, Volume XVI – Número 1, 2009. Disponível em: <http://seer.ufrgs.br/rita/article/viewFile/rita_v16_n1_p125/7289>. Acesso em: 26 Março 2015.

[11] Yano, H.H., Zampirolli, F.A. Image processing in unmanned vehicles: Identification of cases of a road to help vehicle guidance. Workshop de Visão Computacional (WVC), Rio de Janeiro, 2013.

Fig. 3. Resultado do processamento para seguir para a Direita.

Fig. 4. Resultado do processamento para seguir para a Esquerda.

Fig. 5. Resultado do processamento para seguir para o Topo.

Proceedings of XI Workshop de Visão Computacional ‐ October 05th‐07th, 2015

70