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!

7 comentários:

  1. Muito bacana, Ivan! Acho que vocês devem escrever um breve artigo para apresentarem no Workshop da RoboCup!! Com os dois posts que você escreveu (e ajuda do Google Translator), o artigo está praticamente pronto! :-)
    Abraços!

    ResponderExcluir
  2. Show Ivan! ta correndo atras de um nobel já né? kkkk
    Lembra de botar uma proteção nele, se não no México vai pifar de tanta baba!

    ResponderExcluir
  3. Ivan, vc como sempre inovando. Parabéns pelo trabalho! Se precisar de algo em que eu possa ajudá-lo estou a disposição.
    Abraços
    Graciela

    ResponderExcluir
  4. Parabens pela ideia ! Tambem fica o interesse em asquirir um desses. Como posso entrar em contato com vc ? Obrigado

    ResponderExcluir
    Respostas
    1. Obrigado! Pode me contactar pelo e-mail ivan_sg_@hotmail.com
      Abraços

      Excluir
  5. Como eh o nome do aplicativo para android?

    ResponderExcluir
    Respostas
    1. Olá Nicolas,
      Este aplicativo foi desenvolvido pela nossa equipe, com o intuito de funcionar apenas no nosso robô... não foi divulgado na App store, por ser para algo MUITO específico.
      Abraços

      Excluir