colégio dante alighieri - sistemaolimpo.org filemapeamento e análise de mapas, ... introdução...
TRANSCRIPT
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
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.