domingo, 13 de maio de 2012

Rescue B: Mecânica e Hardware

Postei anteriormente sobre o robô que estamos montando para participar do campeonato RescueB no México agora em Junho.

Daquele momento até agora ocorreram pequenas mudanças, e grandes avanços. Já estamos com todas as peças do robô em mãos, só falta literalmente colocar a mão na massa!

Mecânica
Cortamos a primeira "Versão" do robô em acrílico para ver todos os detalhes que passaram no projeto, e poder acertar tudo para uma segunda versão quase perfeita. Ainda semana que vêm cortaremos o robô novamente e teremos ele finalmente finalizado!


Tivemos que esperar um pouco mais para esta segunda verção pois tínhamos esquecido de um detalhe muito importante no robô: Como existem áreas pintadas de preto no labirinto que indicam "Não passe", precisaríamos de um sensor de luz abaixo do robô para fazer essa leitura, e até aquele momento, não sabíamos nem qual sensor usar, se seria um sensor infra vermelho, LDR ou uma câmera. Optamos pelo LDR pois funciona muito bem para distancias maiores que 5mm, já que a rampa poderia encostar no sensor na hora da chegada no topo.

Eletrônica
No post passado não expliquei muito detalhadamente como funciona a varredura dos sensores, nem onde esta cada sensor no robô, então vou aproveitar para passar o máximo que puder de nossas idéias que estão presentes no robô.


Como já falei, removemos o NXT por ser grande e muito pesado. No lugar colocamos um celular Android 2.4Ghz, com tela de toque, facilitando configurações, visualização de sensores, e até mesmo registro de informações (Log) de erros e ações para debugar.

É no Android, que instalamos um Aplicativo desenvolvido especialmente para o campeonato, e que terá toda lógica do robô, desde leitura de sensores, até locomoção através do labirinto. Por ser rápido (2.4Ghz) nos permite usar algoritmos mais sofisticados como SLAM, e aumentar a precisão de todos os sensores com filtros de Kalman rodando quase que na velocidade da Luz.

O celular Android comunica-se por USB com uma Placa de Interface, que não tem lógica nenhuma de programação, e só serve para fazer o "intercâmbio" de dados entre os sensores, e o Android. Bem como enviar as ações para a outra placa que faz o controle da velocidade dos motores. Os sensores plugados na Interface são vários, como: Temperatura, Distância, Luz, Botão de Stop. Além de um servo motor que falarei no final.

A placa "motora", é conectada na Interface por I2C, e faz todo o trabalho braçal de manter a velocidade em cada um dos quatro motores constante, mesmo em situações extremas, como descida da rampa, ou subida. Ela utiliza algoritmo PID separadamente em cada um dos 4 motores.

Sensores e Motores


Um dos grandes desafios de ter um robô autônomo, que precisa estimar sua posição e "montar" um mundo virtual do que esta captando com seus sensores, é que não funciona com apenas uma leitura de distancia. Robôs de competições mais avançadas, utilizam sensores de varredura laser para fazer isso, mas como não temos 15 mil reais sobrando (se vocês tiverem, aceitamos doações), tivemos que desenvolver nosso próprio  "varredor" a infra vermelho...

Basicamente, colocamos todos os sensores em cima de um servo motor, que consegue girar até 180 graus sem problemas. Nesta base giratória de sensores que fica em cima do servo, estão: 4 sensores de infra vermelho de distância, dois sensores infra vermelho de temperatura e o botão que usaremos para dar início e pausa ao programa, sem atrapalhar a leitura dos sensores. A lógica é a seguinte: gire o servo, e terá até quantas leituras quiser dos sensores, para ângulos diferentes relativo ao robô, sem ter que realmente "girar" o robô no próprio eixo, podendo derrapar, travar...

Da vez passada tivemos muitos problemas com os sensores de ultra som, já que só conseguem medir corretamente em superfícies quase perpendiculares a eles. Desta vez, usaremos sensores de Infra vermelho para medir distâncias, por funcionarem até em chuva de meteórios.

Próximos passos
Precisamos finalizar o robô e soldar as placas eletrônicas para dar fim à parte "mecânica" da coisa.
Feito isso terminaremos a programação de base do robô, com funções básicas de leitura, varredura, locomoção. Tendo a "base" feita em programação, é só alegria para implementar a lógica!

Até a próxima pessoal! Me digam se estão gostando dos posts, se quiserem saber mais sobre qualquer detalhe que não mencionei podem perguntar!

FLL World Festival e Open Florida

Mês passado tive a oportunidade de viajar com duas equipes de robótica da First Lego League, que conquistaram o prêmio de 1o e 3o lugar no Brasileiro à dois campeonatos que aconteceram em St Louis e na Flórida.

O campeonato durou 3 dias no primeiro, e 4 dias no segundo, foi uma oportunidade muito boa para conhecer equipes do mundo todo, como pessoas muito importantes: Dean Kamen, criador do Segway, e fundador da FIRST que organiza a FLL. Presidentes e diretores da Google, Boeing...


O campeonato envolve não só a construção e programação de um robô autônomo, mas também contam pontos uma pesquisa (que precisa ser inovadora) sobre o tema proposto no ano. O tema deste ano foi "Food Factor", que envolve a contaminação de alimentos no transporte até você.

Meu primeiro contato com robótica foi com este campeonato até 2010, onde nossa equipe (Emerotecos) participou do World Festival em 2009. Desta vez fui como apoio às equipes Rio Preto Robotic Team e Tecnobody, que ganharam os prêmios de 3o e 2o lugar em programação. Parabéns!