sábado, 23 de janeiro de 2016

Como fazer um robô enxergar usando seu smartphone [Parte 01]

INTRODUÇÃO

Navegação autônoma é um dos tópicos fundamentais em robótica que trata do desenvolvimento de técnicas que possibilitam robôs se locomoverem “por conta própria”, o que é essencial para muitas aplicações. Nesse contexto, o controle de trajetória é uma tarefa essencial, que pode ser realizada através da interpretação geométrica do ambiente sem prévio conhecimento do mesmo.

A proposta desta postagem (que será dividida em 5 partes) é mostrar meu TCC que teve o objetivo de implementar uma estratégia de controle de trajetória de um robô (controlado por smartphone) utilizando técnicas de processamento digital de imagens para navegação em ambientes internos (corredores).  Esta primeira postagem tratará de alguns fundamentos necessários para entender como a navegação autônoma funciona, assim, quando tratarmos da parte prática, as coisas ficaram mais simples.



NAVEGAÇÃO AUTÔNOMA

A autonomia de um robô diz respeito ao seu poder de realização de tarefas sem a contínua interferência humana. Em navegação autônoma, particularmente, o objetivo é o desenvolvimento de técnicas que possibilitem robôs se locomoverem “por conta própria” de forma segura, uma habilidade essencial para diversas aplicações.

A navegação autônoma é normalmente vista sobre duas perspectivas: navegação em ambientes internos (indoor) e navegação em ambientes externos (outdoor). Em geral, ambientes internos são mais estruturados, ou seja, mais ricos em padrões que servem de referência para localização e orientação do robô. Corredores são exemplos típicos de ambientes internos estruturados. Trata-se de caminhos retos que se ligam formando junções, conforme pode ser observado na Figura 1.

Figura 1: À esquerda um corredor em um ambiente interno, já na direita a mesma foto com marcações em vermelho indicando padrões de retas e, elipses verdes mostrando a interseção entre as retas detectadas.


Para se locomover, um robô deve perceber o ambiente através de sensores. Os mais comuns em navegação são: sensores infravermelho e ultrassom (sensores ativos) e sensores de imagem (sensores passivos). O Dispositivo de Carga Acoplada (CCD, do inglês Charge-Coupled Device) é o sensor de imagem presente em câmeras digitais. O uso da imagem digital como fonte de dados caracteriza a navegação baseada em visão, tema amplamente abordado na literatura científica.

No exemplo do corredor (Figura 1), pode se perceber da imagem que a junção das paredes com o piso caracterizam linhas que no plano projetivo tendem a convergir para uma localidade chamada ponto de fuga. Algoritmos para detecção de ponto de fuga são bastante utilizados para navegação em ambientes internos para estimar a orientação do robô em relação ao caminho percorrido.


IMPORTÂNCIA DA NAVEGAÇÃO AUTÔNOMA

Em certas aplicações, é desejável que robôs sejam capazes de se locomoverem em ambientes internos sem o prévio conhecimento dos mesmos. Nesse tipo de situação, a interpretação geométrica do ambiente pode servir como base para correção ou mesmo controle de trajetória.
Figura 2: Navegação de veículos aéreos em miniatura em corredores utilizando detecção de ponto de fuga (BILLS et al., 2011).
Bills et al. (2011) mostram em um artigo o tratamento do problema de navegação de veículos aéreos em miniatura, mais especificamente veículos do tipo Parrot AR Drone que podem navegar por corredores e escadas sem a necessidade da construção de um modelo espacial 3D. Para realizar esta navegação, os autores utilizam a técnica de detecção do ponto de fuga (ver Figura 2).

Outro exemplo interessante que demonstra a aplicabilidade da interpretação geométrica para navegação é a navegação em robôs humanoides (robôs com formas de seres humanos) em labirintos de corredores utilizando apenas a informação visual , como se pode ver na Figura 3.

Figura 3: Navegação de um robô humanoide (FARAGASSO et al, 2013).
A abordagem que vamos utilizara aqui pode servir ainda para extensão de novos serviços baseados em robótica. A CNN publicou em seu site em Dezembro de 2013 que a Amazon, empresa de comércio eletrônico, utiliza drones para realizar entrega de produtos (Figura 4). Os veículos são capazes de percorrer áreas externas guiados pelo Sistema de Posicionamento Global (Global Positioning System – GPS). Porém, para navegar em ambientes internos o GPS não apresenta alta precisão e não oferece informações a respeito da estrutura física do ambiente, como obstáculos, paredes, escadas, dentre outros.

Figura 4: Drone utilizado pela Amazon para realizar a entrega de mercadorias. Fonte: AMAZON, 2014


POR QUE USAR O SMARTPHONE?

A evolução na capacidade de processamento dos dispositivos móveis têm permitido experiências diversas relacionadas à aquisição e entendimento de cenas (captura de imagens), como auxílio na direção de veículos e o auxílio na orientação de deficientes visuais.

Outros fatores interessantes para a adoção desta tecnologia podem ser listados: maior autonomia energética (principalmente se comparado com laptops), diferentes tecnologias integradas aos dispositivo (e.g. GPS, internet e sensor de gravidade), e  facilidade de disseminação de aplicativos através de sites especializados, como por exemplo o Google Play.

E, claro, hoje em dia todo mundo tem um smartphone na mão, o que facilita bastante as coisas na hora de testar.

PROTÓTIPO ROBÓTICO

Claro que para ver se o que vamos construir aqui dará certo, precisamos de um protótipo de robô. Para isso, em uma outra postagem, vamos montar e programar um robô de duas rodas motorizadas com corrente contínua que será usado para testar nossa técnica de navegação autônoma. Pra que é curioso, a Figura 5 mostra o protótipo que eu construí na época do meu TCC. O protótipo que vamos construir aqui será semelhante ao da Figura 5.

Figura 5: Protótipo robótico
Nesse nosso projeto, vamos utilizar o Arduino que é uma plataforma de prototipagem eletrônica. A comunicação entre o robô e o smartphone será realizada através de uma conexão bluetooth (que facilitará/ajudará na implementação de um carrinho de controle remoto utilizando o sensor de gravidade do smartphone, tema de uma postagem futura).

CONSIDERAÇÕES FINAIS

Na próxima postagem vamos começar a falar, de forma mais técnica, sobre as abordagens utilizadas para navegação autônoma e focar nos fundamentos da técnica de detecção de ponto de fuga baseado na Transformada de Hough, que será a técnica que vamos implementar.

Será uma postagem interessante para quem deseja conhecer como podemos interpretar os sinais (imagens) obtidos por uma câmera e, assim, extrair informações úteis para obter uma orientação de trajetória de protótipos robóticos.

Dúvidas, sugestões, críticas ou temas podem ser postados aqui no Blog. Eu respondo, assim que possível =)

Abraços e, até a próxima!


REFERÊNCIAS

MORAIS, Isaac Vieira. Navegação de um robô controlado por smartphone utilizando técnicas de Processamento Digital de Imagens. 2014. Trabalho de Conclusão de Curso. (Graduação em Ciência da Computação) - Universidade Federal do Espírito Santo.

BILLS, Cooper; CHEN, Joyce; SAXENA, Ashutosh. Autonomous MAV flight in indoor environments using single image perspective cues. In: Robotics and automation (ICRA), 2011 IEEE international conference on. IEEE, p. 5776-5783, 2011.

FARAGASSO, Angela et al. Vision-based corridor navigation for humanoid robots. In: Robotics and Automation (ICRA), 2013 IEEE International Conference on. IEEE, p. 3190-3195, 2013.

AMAZON. Amazon Prime Air. Amazon. 2014. Disponível em: <http://www.amazon.com/b?node=8037720011>. Acesso em: 23/01/2016.

Nenhum comentário:

Postar um comentário