sexta-feira, 30 de setembro de 2011

Rumo ao México em 2012!


O Evento
No dia 18 de Setembro de 2011 foram iniciadas em São João Del Rei as competições de robótica que ocorrem junto com o X SBAI. São provas da Competição Brasileira de Robótica (CBR) e da Olimpíada Brasileira de Robótica, além da Mostra Nacional de Robótica (MNR).

Muitas equipes, de todo o Brasil, estão participando das competições e da mostra. O evento é bem grande e muito animado, com competições envolvendo alunos de todos os níveis (fundamental, médio e superior) em diversas categorias. São competições de futebol de robôs (várias categorias), resgate, dança, entre outras. Em todas as provas os robôs devem operar de forma totalmente autónoma, tomando decisões com base apenas em seus sensores e em sua programação.

No dia 18 começaram as competições de algumas categorias da CBR. No dia seguinte foram iniciadas as competições da OBR, em que a nossa equipe Emerotecos participou, assim como os trabalhos da Mostra Nacional de Robótica. Tem muita coisa interessante por aqui! Deixo algumas fotos.



O Rescue A

A categoria da OBR, por falta de sorte, e muita lei de Murphy não nos demos muito bem.

O robô, pra falar a verdade, foi o melhor que já montamos. Ficou compacto, simples e muito eficiente.

A programação ficou com 2500 linhas, sem contar includes de movimentação, sensores...

Haviam no NXT:
  • 1 Arduino com:
    • 3 sensores de Ultrasom
    • 1 sensor de toque
    • 4 motores do VEX
  • 1 Sensor de Bússola
  • 1 Sensor Acelerometro
  • 1 Sensor de linha, com 8 sensores de luz

Um das coisas, que fiz e aprovei, foi uma função "getSafe", que multiplexa o timer interno do NXT para 'n' valores, e te retorna se esta ou não estourado. É bem simples, e as vantagens são imensas! Toda tarefa, que envolvia "agarramento" em alguma coisa real como: quinas, quebra molas na faixa, subidas de rampa... Eu colocava esta tal segurança, que se detectasse um limite imposto, continuava o programa. Isso salvou algumas vezes o robô...

Outra coisa que usei também no campeonato passado, e sempre aconselho usar: um programa de inicialização, que faz a checagem de todos os sensores, motores e afins, que podem por erro humano, estar desconectado. Neste programa, o NXT checava:
  • Motores próprios
  • Sensores I²C
  • Motores VEX
E se alguma coisa estiver errada, ele mostra na tela o erro, e a possível solução. Quantas vez, ligava o NXT, e o cabo do sensor estava invertido com outro? muitas! e isso salvou também.

Enfim, são detalhes que de fato não alteram o robô na hora da competição, mas te da uma segurança maior antes do início.

O robô utilizava PID para diversas tarefas:
  • Seguir parede
  • Seguir linha
  • Girar ângulos precisos com a bússola
  • Controle da velocidade angular das rodas
  • Andar em linha reta, com base no erro da bússola
Isso deu ao robô, maior precisão nas tarefas, e com menos oscilações, uma maior precisão nas leituras dos sensores.


O Rescue B

Como foi o primeiro ano em que foi realizado esta categoria no Brasil, foi apenas uma demonstração.
O robô ficou bem pequeno, leve e como todos, utilizava a plataforma NXT-Arduino que fiz. Possuía 3 sensores de ultrasom, 1 bússola e 1 acelerômetro.
As vítimas, por ser apenas demonstração, não foram colocadas, e portanto tiramos os sensores Infra Vermelho de temperatura.
Ficamos em 1º lugar, e garantimos a vaga no mundial em 2012


O Soccer
A principio, iríamos participar em 3 categorias diferentes, mas por falta de tempo, o robô do Soccer não pode ficar pronto a tempo, e tivemos que ir preparados só para o Rescue A e B. Porém no evento nos unimos à equipe de São Paulo e Pernambuco, para melhorar o robô deles. Ajudei com sensores, e a placa do Arduino com conexão com o NXT, Viramos uma noite inteira trabalhando nas actualizações, como: programação, lógica, mecânica e sensores.

Nas finais, conseguimos ficar em 1º lugar, o que nos deu o direito de competir no mundial em 2012, e com os nossos amigos de São Paulo e Pernambuco.

O mundial
O mundial agora vai ser no México! Estamos sem patrocinadores no momento, e pesquisando pessoas que suportem nossa equipe lá fora.
Se o mundo não acabar ano que vem, estaremos lá...

Social
Adoro participar de competições assim, pois conhecemos gente que gosta dessa area também!
Desejo ao pessoal de Pernambuco, São Paulo, Brasilia, Bahia, Minas Gerais e as outras pessoas com quem conversamos, um abraço. Espero encontrar vocês ano que vem novamente!

Fotos e vídeos
Deixo algumas fotos aqui, e o vídeo eu faço mais pra frente.
Um abraço a todos, e até a próxima!




quarta-feira, 24 de agosto de 2011

Sensores: de Luz

Olá pessoal,
Tive um surto ontem de madrugada para fazer um vídeo, e acabei fazendo mesmo... Comecei meia noite e terminei de editar 4h da manhã!

Já havia pensado nessa idéia a algum tempo, e queria compartilhar com vocês!

Este video mostra um jeito muito simples de se fazer um sensor de Luz, e como aplicar no NXT, PIC e Arduino da maneira mais simples possivel. Além disso, explico oque é um LDR, para que serve e como funciona.


Quero fazer outros sobre sensores de temperatura, toque e se possível os próprios sensores da lego em funcionamento com o PIC e o Arduino.

Se tiverem alguma dúvida podem comentar no próprio tópico mesmo.

Além disso queria pedir a vocês para se inscrever no blog, não machuca, e é uma divulgação que faz crescer!

Um abraço a todos e até o próximo post.

sexta-feira, 19 de agosto de 2011

Vídeo explicativo do Rescue B

Como já sabe, ou se não sabem podem saber AQUI sobre os campeonatos que vamos participar este ano.
Um deles é o Rescue B, que fomos para o mundial competir, e agora estamos indo ao brasileiro competir novamente!
O formato para se inscrever é atravéz de um vídeo, e um texto. Como gosto de criar vídeos, resolvi fazer um no estilo dos que sempre faço, fica ai o vídeo para os interessados, e espero que gostem!



O explicativo do robô enviado junto foi:

"Nosso robô foi construído com base no sistema Lego Mindstorms NXT, utilizando motores, e muitas peças presentes no kit. Além de lego, utilizamos também placas com Arduino Nano, que se comunicam com o NXT pelo protocolo I²C, além de sensores ultrasônicos e infravermelhos de distancia, e do sensor TIR, que é usado para identificar as vitimas (que aquecidas, emitem infravermelho, captável pelo TIR).

O bloco NXT foi programado em linguagem C, utilizando o compilador ROBOT C. Preferimos utilizar linhas de código em vez de linguagem gráfica (NXT-G) por ocupar menos espaço no controlador, e pelo compilador ser um software mais simples, fácil de ser executado em qualquer microcomputador. Os arduinos são responsáveis por realizar as leituras dos sensores ultrasônicos e do sensor TIR (sensor de temperatura por infravermelho).

No inicio, tivemos problemas para subir a rampa da arena com nosso robô, dificuldade que foi contornada mudando o sistema de tração que utilizávamos, em vez de duas rodas de borracha tracionando, uma de cada lado, adicionamos uma roda omnidirecional tracionando em cada lado para facilitar as curvas, e manter contato das rodas constantemente com o chão, mesmo subindo a rampa."

Um abraço a todos, e até o próximo post!

quinta-feira, 4 de agosto de 2011

Fora de casa nunca mais!

O problema
Não sei se vocês já passaram por uma situação como esta, de chegar em casa e notar que esqueceu a chave em algum lugar (muitas vezes dentro de casa mesmo), e tem que chamar algum chaveiro, ou ligar para sua mãe desesperadamente pedindo para ela trazer a chave e abrir para você. Ou talvez, por sua sorte tenha alguém em casa, que com certeza deve te encher o saco para você lembrar de sair com chave! (como minha irmã...)
De qualquer forma, você sempre sai prejudicado (eu pelo menos saio).

A solução
Foi pensando nisso, e nas horas acumuladas esperando lá fora, que tive a ideia de usar meus neurônios para alguma coisa útil. De um projeto no papel, para um esquematico no proteus, para uma placa de circuito impresso, e uma centena de linhas de programação.

Juntando tudo isso deu algo assim:


Pois é, fiz um porteiro eletrônico. Seu papel principal é não me deixar para fora de casa, e impedir que outras pessoas entrem na minha casa.
É só eu não esquecer a senha, que tudo fica bem.

Como funciona


Você digita o * para digitar a senha, digita a senha, e se a senha bater com a que esta na memória dele, ele aciona um relé e abre o portão.
O circuito é feito de modo que você possa deixar o "cérebro" dele dentro de casa, e somente os fios que ligam o teclado e os leds para fora, não deixando exposto o circuito que controla o portão (por segurança).

O que foi preciso



  • 2 leds para ficar mais bonito, já que um circuito sem led não é um circuito.
  • Teclado matricial 4x3 para entrada de dados (1-9, * e #)
  • Relé 5v para acionar o portão e abrir a porta
  • PIC 16F877a para controlar todo o circuito e sistema
  • Regulador de tensão 5v para permitir entrada de diferentes tensões
  • Resistores, capacitores, cristais e terminais T-Block e SIL, e um botão para resetar o PIC
  • Placa de fonolite ou fibra virgem, material para corroer a placa e perfurar. Ou uma CNC que já faça tudo isso para você
Além disso, foi preciso algumas horas para criação do esquemático da placa, programação e claro soldagem.
O circuito já tem a saida para gravação na própria placa (ICSP) oque facilita muito a vida.
Soquetes para a tensão, e para o portão, bem como os pinos para ligar no teclado (7 pinos) e nos leds (2 pinos cada).

Quero fazer também, como faz?
Estou deixando aqui, todo material necessário para vocês fazerem caso tenham o mesmo problema que eu, incluido Esquemático no ISIS, layout no ARES e programação no CCS.
É necessário já ter um conhecimento sobre corrosão de placas, soldagem e montagem.
O teclado matricial, pode ser feito também se você não encontrar algum como o mostrado na foto, ou não tiver paciência para esperar o seu chegar da china depois de 2 meses de espera.
Vai ser preciso também, fazer alguma alteração no circuito do portão da sua casa, isso ai não é tão difícil, mas também não é simples.
E claro, só funciona com portões eletrônicos né...


E agora?
Ainda não instalei o circuito no portão, mas devo fazer isso em algumas semanas, quando fizer posto novamente sobre a dificuldade pra instalar, e se resolveu um dos problemas da minha vida...
Mas por enquanto eu tenho que levar a chave. Droga.

quinta-feira, 14 de julho de 2011

Equipe Emerotecos em 7º lugar!

Eu, Yan, Carmen Faria, Felipe Martins e Matheus em Istambul
Viajamos dia 3 de Julho para o campeonato mundial de robótica, organizado pela RoboCup. Este ano o evento foi realizado em Istambul na Turquia onde também ocorreu outras diversas categorias da liga Júnior, e Major onde muitas das categorias envolvem o resgate de vítimas, e o futebol de robôs.

A equipe
A nossa equipe é composta por 3 estudantes, e 2 orientadores. Quem viajou para o campeonato foram: Ivan Seidel (Eu), Matheus Canejo, Yan Marim e o nosso orientador Felipe Martins.

O Campeonato
O campeonato no qual participamos foi o Rescue B, onde um robô totalmente autônomo deve detectar vítimas aquecidas nas paredes de um labirinto. O labirinto é composto por 3 salas e 1 rampa que conecta a 2ª sala com a 3ª. Todo robô deve ser projetado, montado e programado pela equipe.

Arena da competição
O robô
O robô foi construído utilizando peças do kit Lego Mindstorms NXT, placas com Arduino Nano, além de sensores ultrassônicos, infravermelhos de distância e de temperatura. Todos os circuitos eletrônicos, programas e a estrutura física do robô foram montados pela nossa equipe.
Ele começou no dia 5 de Julho sendo aberto somente para treinos onde tivemos tempo para ajustar nosso programa e adequá-lo à arena do campeonato.

O robô utilizado no campeonato
No dia seguinte já começou com rodadas valendo. Fizemos uma pontuação abaixo do que esperávamos mas isso foi para todas as equipes, parece que Murphy costuma agir nessas primeiras vezes, só foi no 3º round que conseguimos elevar a pontuação e passar na frente de algumas equipes. Não desanimamos com a pontuação, e acertamos tudo para o outro dia ficando em 7º lugar.


Fotos!
Se quiser ver mais fotos do evento, inclusive de outras modalidades entre AQUI (Tiradas pelo Felipe) e AQUI (Tiradas pelo Paulo, da equipe de Pernambuco).

Na mídia
Reportagem no jornal A Gazeta

Vem ai...
Tenho certeza, que este campeonato me despertou um maior interesse em melhorar, vendo equipes construírem robôs de formas totalmente diferentes das que já havia visto. Conversei com a equipe da Suécia, Alemanha que participou do Soccer Jr., e com equipes também brasileiras que participaram de outras modalidades, isso inclui os estados de Brasília, Pernambuco e São Paulo! Foi ótimo ter alguém com quem falar português também.

Nossa equipe e a equipe de Pernambuco
Para o próximo ano, faremos um robô muito melhor que o deste ano, aprenderemos mais sobre eletrônica, programação e tentaremos ganhar novamente. Posso dizer que este campeonato foi um "treino", pois foi o primeiro ano em que foi mesmo um campeonato e não uma demonstração, trocar ideias com equipes foi ótimo para despertar interesses por outras áreas que nem conhecíamos.
Em Setembro ainda tem o campeonato do Rescue A e o Soccer!

Agradecimentos
Em nome da equipe, gostaria de agradecer a todos que nos patrocinaram e apoiaram, possibilitando nossa participação neste mundial. Agradeço aos nossos patrocinadores Granel Química e MTS Engenharia, e às empresas que doaram peças e serviços como a Proesi Componentes Eletrônicos, a InTechno Desenvolvimento e Capacitação e a Automatica Tecnologia. Agradeço, também, pelo apoio oferecido pela professora Carmen Faria e sua equipe do Laboratório de Robótica Educacional da UFES, pelo IFES e por sua fundação de amparo (FACTO).

domingo, 3 de julho de 2011

Rumo a Turquia


No aeroporto de Congonhas

A viagem para a Turquia iniciou esta manha, as 10h no aeroporto de vitoria.
Estamos indo ao campeonato mundial de robótica que ocorrera em Istambul de 5 a 11 de Julho.
Chegamos em são Paulo agora pouco, e estamos trocando de aeroporto, onde esperaremos 11 horas para pegar o voo direto para Istambul.
O robô esta parcialmente completo, faltando apenas alguns ajustes, e acertar o sensor de temperatura.
O campeonato no qual iremos participar e o Rescue B, se quiser saber mais entre aqui.
Estamos em 4 na viagem, Eu, Yan, Matheus e nosso orientador Felipe Martins.
O Felipe possui um twitter e esta postando sobre nossa viagem em cada etapa e postando fotos também. Se quiser receber as atualizacoes pelo twitter clique AQUI.
Chegaremos dia 4 a tarde na Turquia, e no outro dia já começa o campeonato, então fique ligado!
Um abraço a todos.
Equipe Emerotecos

terça-feira, 21 de junho de 2011

Regional da OBR no Espírito Santo

A garra do Hulk, com 4 servo motores do VEX
A OBR

As 6 equipes que participaram do campeonato
Como devem ter percebido, estive ausente este mês devido ao campeonato da OBR (Olimpíada Brasileira de Robótica) que ocorreu sábado passado, no IFES vitória e que me tomou muito tempo.
O desafio é construir e programar um robô autônomo, capaz de seguir uma faixa preta aleatória, contendo obstáculos e gaps (falhas). E no final do trajeto, resgatar uma vítima que é uma lata de refrigerante. Este campeonato é também chamado de RoboCup Junior RESCUE A.
Participaram do campeonato 1 equipe do nível 1 e 6 equipes do nível 2, sendo uma delas a nossa equipe: EMEROTECOS.
Nosso robô, contava com diversos sensores, inclusive uma placa Multiplexadora de sensores e motores utilizando o ARDUINO, que eu produzi para conectar ao NXT.
Ela neste evento, serviu apenas para comandar os quatro motores do VEX, de acordo com os comandos do NXT, mas poderia ser adicionado até 20 servos, ou 20 sensores digitais sendo 8 analógicos. Ele se comunica com o NXT via I²C. Fiz basicamente o mesmo que AQUI, porém utilizando o Arduino nano como micro controlador.


Sensores

Placa Multiplexadora com Arduino
Utilizamos 10 sensores de luz, para seguir a linha e conseguir aplicar algoritmos do tipo PID para se acertar com precisão na linha, e minimizar o erro dele ao longo do percurso.
Um sensor de bussola, fundamental para fazer curvas bem-feitas, e saber sua direção relativa a locais do qual o robô tinha conhecimento de sua direção (como uma borda).
Um sensor de distância Infravermelho, capaz de diferenciar 1mm de distância, responsável por gerar um gráfico no qual usamos para saber a posição da vítima na última sala.


Algoritimos de navegação

O Hulk, robô da OBR regional 2011
Para facilitar a programação, passei algumas horas criando uma máquina de estados para o RobotC, o que me ajudou muito posteriormente. Esta tal "máquina de estados", é um simples diagrama, no qual posso passar de um estado para outro, de qualquer parte do meu programa.
Um exemplo: O robô esta seguindo linha, e uma multi-tarefa, detecta que o sensor de toque foi pressionado. O estado principal, que segue linha, não precisa se preocupar com isso, e apenas deixará de executar este estado, e passará para o de desvio de obstáculo. Isso, sendo feito de qualquer parte do programa!
Agora vem a parte pratico-teórica de verdade.
O robô inicia checando todos os sensores, e motores. Se qualquer um deles estiver desligado/desconectado/quebrado/sumido/derretido/qualquer outra coisa, o NXT joga uma mensagem de erro na tela, dizendo qual sensor esta com erro, e oque deve ser feito.
Feito isso, entra a tela inicial, e escolhemos portanto, seguir linha com um clique no NXT.
Ele começa a seguir linha, e se algum desses 3 eventos ocorrer, ele entra em um novo estado:

  • O robô não esta mais enxergando linha, salva a posição da bússola e vai para a tarefa de gap.
    • Se andou por mais de uma distância, e não detectou linha nenhuma, sabe que esta na ultima sala (pois não há linha) e vai para a tarefa de pegar a lata.
    • Se detectou novamente a linha, volta para a tarefa de seguir linha.
  • O robô detecta que a velocidade angular da roda (derivada do encoder) esta baixa, então vai para a tarefa de obstáculo.
    • Na tarefa de obstáculo, ele desvia e volta para a tarefa de seguir linha.
  • O robô detecta que ao tentar se acertar na linha, seu ângulo de reentrada na linha foi maior que 130º, então sabe que fez alguma cagada (como ir na direção oposta) e reverte seu sentido.

Como não havia paredes na última sala, o sensor de infravermelho detectava sempre seu valor máximo quando não estava vendo a lata, e seu valor mínimo quando na lata. Para achar a posição dela, ele varria a sala com 90º, e gravava 200 amostras de distância. Logo após, varria essas 200 amostras, e descobria qual delas, teve o menor ponto, e que estava ao lado de menores pontos também (para filtrar amostras erradas).
Logo depois, andava um pouco mais a frente, e repetia este processo até estar próximo suficiente, para evitar erros, e conseguir pegar com as garras do Hulk.
Feito isso, o robô se posicionava nas 2 bordas da sala, para resetar sua posição XY e seguia para o final.
Isso tudo em 1300 linhas (com comentários) para conseguir fazer as missões.
Um vídeo mostrando ele na hora do campeonato (o filme não ficou muito bom, pois foi filmado de longe).

O que vem agora?

Se tiver um tempo, edito um vídeo para postar com algumas filmagens do robô em ação.
Como ganhamos o campeonato, iremos para o brasileiro em Setembro que ocorrera em São João Del Rei onde também participaremos do RoboCup Soccer, que são outros 500...
Dia 3 de Julho, viajaremos para Istambul na Turquia, para competir no campeonato mundial, RoboCup RESCUE B e voltaremos dia 14. Vou levar o Xoom, e se der faço um webcasting ao vivo de lá! Só preciso ter Internet.

No mais é isso.
Podem perguntar a vontade quanto ao robô, espero que tenham gostado e que tenha ajudado!