Colégio Dante Alighieri - sistemaolimpo.org filemapeamento e análise de mapas, ... Introdução...

13
Colégio Dante Alighieri Alameda Jaú, 1061 - CEP 01420-001 - SP - Telefone: (11) 3179-4400 - Fax: (11) 3289-9365 E-mail: [email protected] EXPLORAÇÃO DE AMBIENTES DESCONHECIDOS POR ROBÔ MÓVEL AUTÔNOMO BASEADO EM PLATAFORMA ARDUINO COM LINGUAGEM C Vitor Martes Sternlicht Orientador: Rodrigo da Silva Viana Co-orientadora: Valdenice Minatel Melo de Cerqueira Período de desenvolvimento do projeto: 01/11/10 a 15/09/11 São Paulo Setembro/2011

Transcript of Colégio Dante Alighieri - sistemaolimpo.org filemapeamento e análise de mapas, ... Introdução...

Colégio Dante Alighieri

Alameda Jaú, 1061 - CEP 01420-001 - SP - Telefone: (11) 3179-4400 - Fax: (11) 3289-9365

E-mail: [email protected]

EXPLORAÇÃO DE AMBIENTES DESCONHECIDOS POR ROBÔ MÓVEL

AUTÔNOMO BASEADO EM PLATAFORMA ARDUINO COM LINGUAGEM C

Vitor Martes Sternlicht

Orientador: Rodrigo da Silva Viana

Co-orientadora: Valdenice Minatel Melo de Cerqueira

Período de desenvolvimento do projeto: 01/11/10 a 15/09/11

São Paulo

Setembro/2011

DEDICO ESTE TRABALHO AOS MEUS PAIS,

QUE SEMPRE ME APOIARAM, À MINHA

IRMÃ E À TODA A MINHA FAMÍLIA

AGRADEÇO AOS PROFESSORES RODRIGO VIANA E TANIA

CRISTINA PEREIRA LUCIANO, QUE ME AJUDARAM NESTE

PROJETO DESDE O INÍCIO, À COORDENADORA DE TECNOLOGIA

EDUCACIONAL, VALDENICE MINATEL MELO DE CERQUEIRA, POR

ACEDITAR E ME APOIAR EM TODAS AS MINHAS IDEIAS E AO

DAVID HENRIQUE DA CUNHA PEREIRA, QUE ME ENSINOU

LINGUAGEM C DESDE O PRINCÍPIO, SEM O QUAL EU NUNCA

TERIA CRIADO ESTA COMPLEXA PROGRAMAÇÃO.

4

Resumo

Tendo em vista a amplitude de áreas nas quais a exploração robótica pode ser

utilizada, como, por exemplo, atuação nas áreas industriais e residenciais, operações

de resgate e exploração, desenvolvi um robô na plataforma Arduino, programado em

linguagem C, que é capaz de explorar completamente ambientes desconhecidos com

custos baixos (aproximadamente R$ 500,00).

Utilizei basicamente dois motores (de corrente contínua com caixa de redução),

sensores fotodiodo (para detecção de faixa) e de infravermelho (para detecção de

obstáculo) para a construção em um chassi mecânico. Também utilizei uma garra

mecânica com servomotor para agarrar objetos. Já na programação, trabalhei com

pilhas e arrays, criando um banco de dados do ambiente baseado em blocos (do

tamanho do robô) livres ou ocupados.

Essa tarefa foi concluída com êxito, como planejei desde o início, mas ainda

pretendo melhorar esse projeto no futuro, acrescentando a capacidade de

mapeamento e análise de mapas, permitindo, por exemplo, que o protótipo explore

um ambiente desconhecido, crie um mapa e calcule a rota mais curta até

determinado ponto, desviando de obstáculos.

5

1. Introdução

Conforme SOUSA [2006], atualmente a área de pesquisa de robótica móvel está

crescendo cada vez mais, implementando nos agentes robóticos algum sistema de

deslocamento e possibilitando-os, portanto, se movimentar no ambiente no qual são

inseridos. São então adicionados sensores, permitindo-lhes desempenhar complexas

tarefas reagindo a partir da interpretação dos diversos fatores ambientais, tais como

temperatura, luminosidade e distância, por exemplo.

Surgem então inúmeras aplicações da robótica móvel, que vão muito além da

clássica atuação nas indústrias, casas e lojas. Os robôs se demonstram capazes de

realizar resgates, executar tarefas agrícolas e explorar o mar, ambientes hostis ou em

situações de catástrofe, e até outros planetas.

Porém, os pesquisadores ainda enfrentam grandes desafios no desenvolvimento

da robótica e da inteligência artificial.

Entre outras habilidades, os robôs autônomos devem se adaptar aos diferentes

ambientes de operação, aprender conforme adquirem mais experiência e realizar

escolhas frente às mudanças apresentadas por estes ambientes, conforme expõe

COSTA [2003].

Neste trabalho, que tem tal direção, o protótipo construído com uma placa

Arduino, programada em linguagem C com conceitos de pilha e armazenamento de

dados em arrays, explora completamente o ambiente e cria uma estrutura que pode

ser facilmente usada para a criação de mapas.

6

2. Objetivos e relevância do trabalho

Desde seus primórdios, com sua incomutável curiosidade, o ser humano explora

minuciosamente os ecossistemas ao seu redor, para dele extrair os mais diversos

recursos. Com o crescente desenvolvimento tecnológico da sociedade, até os mais

complexos e perigosos ambientes, submetidos a condições totalmente precárias, vão

sendo mapeados. Mas ao alcançar um estágio no qual a hostilidade do desconhecido

pode ser fatal ao seu explorador, o que faremos?

Minha ideia, com este projeto, é a de possibilitar a exploração de qualquer

ambiente inacessível a um indivíduo de nossa espécie por um simples protótipo

robótico, que pode ser adaptado para resistir a condições extremas como o frio de

grandes geadas, o calor de monumentais incêndios, ausência de gás oxigênio, e

muitas outras.

Além do mais, se concluído com sucesso, esse robô poderá também ser útil para,

em uma das guerras infelizmente previstas para o futuro (como, por exemplo, por

água), explorar territórios inimigos discretamente enviando dados ao vivo para um

sistema de computadores, provenientes até de outros sensores que podem ser

facilmente inseridos (temperatura, luz, umidade, etc.).

Além disso, o protótipo terá um custo consideravelmente baixo

(aproximadamente R$500,00), sobretudo se levarmos em conta a amplitude de áreas

nas quais a exploração e o mapeamento robótico podem ser utilizados, como

atuações nas áreas industriais e residenciais, operações de resgate em situações de

catástrofe, exploração marítima e planetária, execução de tarefas agrícolas, e muitas

outras.

7

3. Desenvolvimento do projeto

3.1. Mecânica e construção do protótipo

Foi utilizada uma versão modificada do Arduino comum, desenvolvida pela

empresa GlobalCode, e denominada Program-me. Segue abaixo uma descrição

técnica da placa, extraída do site da ELÉTRONLIVRE [2011]:

Program-ME é uma placa controladora compatível com Arduino e programável

através de uma simplificação da linguagem C. A transferência do programa é feita

por USB com uma interface amigável que funciona em diferentes sistemas

operacionais.

8

Figura 1 – Detalhes dos componentes do Program-me

Arduino com mais de 12 funções:

Sensor de luz

Sensor de temperatura

4 Transistores

Ponte H L293D

2 entradas para servo-motor

Speaker;

Botão / chave tátil;

2 entradas analógias

2 entradas para interrupções

1 entrada I2C

1 entrada para bluetooth

5 leds

Características técnicas:

Baseado no microcontrolador (MCU) ATMega da empresa AVR;

ATMega 328 (32K);

Clock de 16 mhz;

512 bytes de EEPROM;

1 serial UART;

1 interface I2C;

20 milhões de instruções por segundo (MIPS).

A placa foi inserida em um chassi mecânico com caixas de redução, transistores

para controle dos motores e uma garra mecânica com servo-motor. Seguem abaixo

os principais componentes listados:

9

1 placa eletrônica Arduino (Figura 2);

1 sensor infravermelho (detecção de obstáculos);

5 sensores tipo fotodiodo (detecção de faixa);

2 motores de corrente contínua para locomoção, ligados em ponte H;

1 servo-motor de rotação para a garra.

Figura 2 – Vista superior da placa Arduino inserida no chassi

Figura 3 – Foto do robô com o chassi e a garra

10

Figura 4 – Detalhe dos sensores de fotodiodo

3.2. Estratégia e programação

O código foi escrito em linguagem C, compilado com o próprio software do

Arduino (IDE), com conceitos do livro Beginning Arduino[4], visando seguir a

seguinte estratégia:

O robô percorre parte do espaço no sentido vertical, indo primeiro ao norte e

depois ao sul, e então desloca-se para leste, repetindo esse processo até que tais

movimentos sejam impedidos por uma barreira física. Nesse momento o robô refaz

o caminho, o que é possível pois cada deslocamento é armazenado em uma pilha

(conceito em linguagem C), procurando áreas adjacentes não exploradas, e as

explora. Ao retornar ao ponto de partida, o processo se repete, porém, desta vez,

após explorar verticalmente o espaço, o protótipo se desloca a oeste.

11

Na figura 5, é exposto um exemplo de ambiente no qual o robô pode ser inserido

para realizar a exploração.

Figura 5 – Possível aplicação do algoritmo de exploração

12

4. Conclusão

A exploração de ambientes desconhecidos com o Arduino, programado em

linguagem C, é totalmente possível utilizando-se apenas um sensor de ultrassom

(Ping da Parallax) e outros 5 sensores de luz (tipo fotodiodo).

Também é totalmente possível gerar mapas e, utilizando-se a tecnologia

Bluetooth ou Wireless para transmitir os dados coletados diretamente para um

computador, os mapas podem tornar-se muito mais complexos, sem o limite de

memória imposto pelo Arduino e outros microprocessadores.

Por fim, ressalto que pretendo melhorar esse projeto no futuro, permitindo que o

robô mapeie ambientes e, com base nos dados do mapa, calcule a rota mais curta até

determinado ponto, desviando de obstáculos e criando estatísticas sobre os trajetos.

13

5. Referências bibliográficas

[1] ARDUINO - Site Oficial. http://www.arduino.cc/. Acesso em setembro de

2011.

[2] SOUSA, Miguel Ângelo de Abreu de. Mapeamento de Ambientes

Desconhecidos por Robôs Móveis Utilizando Autômatos Adaptativos,

dissertação de Mestrado, POLI-USP, São Paulo, 2006.

[3] ELÉTRONLIVRE - Site Oficial. http://www.eletronlivre.com.br/. Acesso em

setembro de 2011.

[4] MCROBERTS, Michael. Beginning Arduino, Editora Technology In Action,

2010.