Mostrando postagens com marcador Robô móvel. Mostrar todas as postagens
Mostrando postagens com marcador Robô móvel. Mostrar todas as postagens

domingo, 7 de julho de 2013

Arduino Robot - O primeiro Robô Arduino oficial!

Nerea e Iván com seu robô Nexus.
Asociación de Robótica Complubot é sediada em Madri, Espanha, e trabalha com robótica educacional desde 2003. Com o objetivo principal de contribuir com o aprendizado, a Complubot apoiou (e apóia) o desenvolvimento de diversos robôs por crianças e adolescentes participantes de seus projetos.

Nerea de la Riva e Iván Gallego, hoje com  21 e 19 anos de idade, respectivamente, formam parte da Complubot desde o início, orientados por Eduardo Gallego. Com seus robôs Nexus, por 6 anos participaram de campeonatos de futebol de robôs organizados pela RoboCupJunior, e por 4 vezes foram campeões mundiais! Tive o imenso prazer de conhecê-los e de trabalhar com eles durante a RoboCupJunior 2013, evento que agora eles ajudam a organizar.

Por sua experiência no desenvolvimento de robôs, Nerea e Iván participaram do projeto do Arduino Robot, uma plataforma fantástica para quem quer aprender robótica! O projeto nasceu em setembro de 2010, quando eles participaram de um campeonato na Itália e tiveram a oportunidade de conversar com David e Máximo (da equipe do Arduino) sobre a ideia de desenvolverem uma plataforma didática de robótica. Desde então eles trabalharam com a equipe do Arduino no desenvolvimento do robô que em breve estará disponível para venda!

Você pode ler a história com mais detalhes no site da Complubot.

Arduino Robots apresentados no Workshop da RoboCupJunior 2013.

O Arduinto Robot é uma plataforma de tração diferencial com 19cm de diâmetro e 10cm de altura. Cada robô possui duas placas, cada uma com seu próprio microcontrolador ATmega32u4 . De fato, é como se cada robô tivesse dois Arduinos, um responsável pelo controle dos motores e outro responsável pelos sensores e pelo comportamento do robô. As duas placas se comunicam e o usuário pode programá-las com a conhecida IDE do Arduino. A placa inferior já vem pré-programada, podendo o usuário programar apenas os comportamentos de alto-nível. Mas, também é possível alterar o programa da placa inferior pois, como todo Arduino, o projeto é open-source.

Arduino Robot - vista supuperior (esq.) e inferior (dir.).

A placa superior conta com um belo LCD gráfico colorido (conectado via SPI), um leitor de cartão SD, um speaker, um potenciômetro e alguns botões para interface com o usuário. Também conta com uma bússola incorporada e diversos conectores para montagem de sensores.

Caixa assinada pelos projetistas do robô.
A placa inferior possui um suporte para 4 baterias recarregáveis NiMh tamanho AA, circuito para carga das baterias, um conversor DC-DC para alimentação de 5V para todo o robô, circuitos para acionamento dos dois motores DC e sensores infravermelhos de reflexão apontando para o piso. Esses sensores podem ser usados para detecção de linhas, por exemplo.

Todos os sensores e atuadores do robô são acessados através de bibliotecas especialmente desenhadas para o Arduino Robot. Por exemplo, o programa abaixo faz o robô se movimentar para frente com velocidade máxima, parar, girar em torno do próprio centro no sentido horário e parar novamente (você vai precisar do Arduino IDE versão 1.0.5 ou superior):

#include
void setup(){
  Robot.begin();
}
void loop(){
  Robot.motorsWrite(255,255); //Make the robot go forward, full speed
  delay(1000);
  Robot.motorsWrite(0,0); //Make the robot stop
  delay(1000);
  Robot.motorsWrite(255,-255);//Make the robot rotate right, full speed
  delay(1000);
  Robot.motorsWrite(0,0); //Make the robot stop
  delay(1000);
}

Na página oficial do Arduino há um guia para você começar a brincar com seu robô!

Deixo vocês com Iván e Nerea apresentando o Arduino Robot recém saído do forno! :-)



Até a próxima!

Referências:
http://complubot.educa.madrid.org/proyectos/arduino/ArduinoRobot/es/ArduinoRobot_es.php
http://complubot.educa.madrid.org/proyectos/arduino/ArduinoRobot/es/ArduinoRobot_historia_es.php
http://arduino.cc/en/Main/Robot

segunda-feira, 10 de dezembro de 2012

Robô pássaro-operado

A robótica... aplicada para o bem da natureza.



O próximo passo é fazer uma unidade para tele-presença! :-)

Até a próxima!

domingo, 9 de setembro de 2012

Monte seu robô com Arduino!

Mini-robô com Arduino.
Quer montar seu próprio robô? Você pode!! 

Neste post vou descrever como você pode montar o robô ao lado, mostrando onde comprar as peças e dando dicas para sua montagem. 

A montagem não é complicada! Você não precisa ser um expert em eletrônica para montar este robô, mas precisa ter noções básicas (para poder ligar os cabos corretamente), além de fazer soldagem de componentes e fios. 

Se você quer montar um robô sem precisar fazer soldas nem se preocupar com a eletrônica, experimente o Lego NXT (veja aqui).

O vídeo abaixo mostra um resumo da montagem e testes do mini-robô com Arduino:


Por onde começar?

Em primeiro lugar, você deve definir o que seu robô vai fazer e em que ambiente ele vai se deslocar. Isso é essencial para a escolha das peças e estrutura corretas. Por exemplo, a estrutura de um robô que irá se deslocar em piso liso e limpo será muito diferente daquela de um robô capaz de se locomover em ambientes externos com piso de areia. 

Uma opção bem econômica é aproveitar aquele velho carro de controle-remoto que você não usa mais (ou roubar o do seu irmão). Nesse caso, você pode aproveitar a estrutura mecânica e os motores. Retire toda a eletrônica original (com cuidado, para que você consiga montar novamente caso seu irmão descubra), e substitua pelas placas que vou descrever a seguir.

Eu montei o meu com as peças mostradas abaixo.

Peças usadas na montagem do robô. A lista completa e locais de compra encontra-se no final deste post.


No fim deste post há uma lista detalhada com a quantidade de peças necessárias e seus sites para compra. 



Se você quiser montar um robô diferente, pode usar qualquer um dos diversos kits disponíveis no mercado. Veja alguns exemplos em:


Robô com Esteiras

Um robô a esteiras é melhor do que um robô a rodas para se deslocar em ambientes acidentados. Ele pode passar por cima de obstáculos maiores que robôs com rodas, o que é interessante! No entanto, robôs com esteira exigem mais energia durante seu deslocamento, o que significa que eles gastam mais bateria que os robôs a rodas.

A estrutura mecânica deste robô torna desnecessário o uso de rodas direcionais. Para fazer curvas, basta que uma esteira se movimente mais rápido que a outra. Se uma se mover num sentido e a outra se mover no sentido contrário com a mesma velocidade, o robô fará um giro em torno de seu centro. Isso resulta em boa mobilidade e facilita o controle.

Dicas de Montagem - Vamos ao que interessa!

Base


A base tem dimensões de 98 x 86 x 39 mm. É feita de plástico, tem suporte para 4 pilhas AA, para os dois motores e para as rodas. As quatro rodas e as duas esteiras de borracha acompanham o conjunto.


A base vem quase pronta, mas alguma montagem é necessária. Você vai precisar encaixar os contatos metálicos para as pilhas. Os contatos das extremidades não têm local fixo de encaixe, então você pode colá-los com um pouco de Super Bonder ou prender com uma fita dupla-face. Eu usei fita isolante mesmo. É uma boa ideia soldar os fios aos contatos das pilhas antes de prendê-los à base! Lembre-se de usar fios de cores diferentes para os terminais positivo e negativo das pilhas, pois isso ajuda a evitar ligações incorretas que podem resultar em queima dos circuitos.


Motores 

Os motores que usei são micro-motores de 6V que já vêm com uma caixa de redução de 100:1. Ou seja, a cada 100 voltas no eixo do motor, a roda dará apenas uma volta. Isso significa que a roda gira numa velocidade muito menor que o eixo do motor. Porque queremos isso? Simples: com a caixa de redução, o torque disponível na roda aumenta na mesma proporção da redução da velocidade. Ou seja, o robô fica mais lento, mas muito mais forte!

No site da Pololu você encontra outros motores que se encaixam na base. Eles têm o mesmo tamanho e mesma tensão, mas relação de redução é diferente. Com isso, se você quiser um robô mais rápido (e menos forte), pode usar um motor com redução menor (50:1, por exemplo).


Atenção! As rodas dos motores são diferentes! Elas tê um pequeno rasgo na lateral e o encaixe do eixo não é perfeitamente redondo: possui um chanfro para encaixar o eixo do motor. Depois de encaixar os motores nas rodas, você pode usar a própria roda como base para soldar os fios nos terminais dos motores. De novo, lembre-se de usar cores diferentes para os terminais positivo e negativo.

      

Após encaixar os motores e soldar os terminais, encaixe os motores na base.

Sensores de giro (opcional)

Se você quiser, pode instalar codificadores ópticos (encoders) para medir o giro das rodas de seu robô. Essa característica é interessante se você pensa em aplicar controladores mais complexos em seu robô, pois os encoders permitem medir a velocidade das rodas e estimar a posição relativa do robô. Se não quiser usar encoders, seu robô também vai funcionar!


Os encoders que eu usei são próprios para as rodas que vêm com a base. Por isso, basta cortar um pouco o plástico superior da base e parafusar os encoders como mostrado na foto ao lado. Sim, o furo da placa se alinha perfeitamente ao furo da base!


O funcionamento do encoder (de forma resumida) é o seguinte: LEDs da placa emitem luz infravermelha que é refletida pelos dentes existentes na parte interna da roda. Com o giro da roda, os dentes se movem e a reflexão ocorre de maneira alternada. A partir da detecção ou não do reflexo de luz, um trem de pulsos elétricos é gerado. Contando o número de pulsos é possível saber quantos graus a roda girou. Conhecendo a geometria do robô, pode-se determinar sua velocidade e seu deslocamento. 

Detalhe: para saber se a roda está girando no sentido horário ou anti-horário, cada placa tem dois emissores e dois receptores. Eles são montados de forma que o giro da roda em dado sentido provoca reflexão em um dos sensores primeiro. 

Os sensores da Pololu são muito bons. Eles podem ser alimentados diretamente pelo Arduino e seus sinais de saída também são conectados diretamente aos pinos do Arduino. No entanto, verifiquei que os encoders sofrem muita interferência de iluminação externa, o que pode exigir algum ajuste ou colocação de algum tipo de cobertura. 

Motor Shield para Arduino

O uso do Arduino como placa controladora permite a utilização de um shield para controle dos motores. Eu usei o Arduino Uno, mas você também pode usar outras versões, como o Leonardo ou o Duemilanove. 

Motor Shield encaixado no Arduino.

O shield que utilizei está mostrado na figura ao lado, já encaixado no Arduino Uno. Ele tem um chip com duas pontes-H com capacidade para controlar dois motores de corrente contínua de maneira independente. Recebe alimentação entre 6 e 15V e inclui um regulador de 5V para alimentar o Arduino, o que é muito interessante já que as 4 pilhas (alcalinas) resultam numa fonte de 6V. 

A ligação dos motores ao motor shield é bem simples: basta parafusar seus fios ao conector verde com as indicações M1+, M1-  (motor 1) e M2+, M2- (motor 2).  Os terminais da bateria devem ser ligados ao conector com as indicações VS (positivo) e GND (negativo). O jumper J4 deve permanecer encaixado para que a alimentação do Arduino seja feita através do regulador do motor shield.  Encaixe o motor shield no Arduino de maneira que as bordas das placas fiquem alinhadas.

Um código para teste do shield e acionamento dos motores está disponível na página do fabricante (veja link no final do post). A velocidade dos motores é controlada pela variação da razão cíclica do sinal PWM gerado pelo Arduino. No exemplo do fabricante, ele usa a função analogWrite para gerar o PWM, o que resulta num sinal com frequência de ~490Hz. Nos testes que realizei, os motores funcionaram sem nenhum problema com esse PWM, mas emitiram ruído audível que pode incomodar um pouco.

Detalhe importante: para que o robô se desloque em linha reta é necessário que as duas esteiras girem na mesma velocidade. No seu programa, você pode usar o mesmo valor na função analogWrite de ambos os motores, mas isso não garante que as rodas irão girar na mesma velocidade! Apesar de serem do mesmo tipo, dois motores nunca são exatamente iguais. Além disso, características como atrito, deslizamento e até diâmetro das rodas irão afetar a velocidade final de deslocamento. Com o uso de encoders você pode fazer um programa que mede a velocidade das rodas e realiza a compensação necessária, caso queira que o robô se mova em linha reta.

Com a base montada, motores encaixados e eletrônica pronta, seu robô já está pronto para andar!


Sensor ultrassônico

Módulos ultrassônicos.
Um robô só é um robô de verdade quando ele pode perceber o meio. Um sensor muito popular que permite a medição de distância a obstáculos é o sensor ultrassônico. A figura ao lado apresenta dois módulos de sensores ultrassônicos (um é visto de frente e o outro é visto de costas). Segundo o fabricante, esse módulo é capaz de medir distância a obstáculos entre 3cm e 4 metros!

O módulo ultrassônico funciona como um Sonar. Para medir a distância ao objeto que está a sua frente, o módulo emite um pulso de ultrassom (som em frequência de 40kHz, nesse caso) e mede o tempo que o reflexo do som leva para retornar. Sabendo que a velocidade do som no ar (à temperatura ambiente) é de ~340m/s, conhecendo o tempo que o som levou para ir até o obstáculo e voltar você pode calcular a que distância ele está! 

O Arduino possui um exemplo de programa que funciona exatamente com esse modelo de sensor. Você pode encontrá-lo em Exemples -> 06. Sensors -> Ping. Usei este exemplo para testar o módulo ultrassônico como mostrado no vídeo. Pude observar que esse módulo tem precisão de +/-1cm para leituras entre 3 e 30cm. Também notei que o ângulo de abertura do sensor não é muito grande: para distâncias menores que 20cm, o obstáculo deve estar praticamente em frente ao sensor para que possa ser detectado. A 20cm do sensor, um afastamento de 5cm do centro de sua linha de ação já faz com que o obstáculo não seja percebido.

Robô montado

Provisoriamente, encaixei os sensores de ultrassom numa pequena matriz de contatos apoiada na parte superior do robô. Um sensor está voltado para para a frente e o outro para trás, já que esse robô pode se deslocar nos dois sentidos. 

Robô montado.

Espero que tenha gostado do post e que ele lhe ajude a montar o seu próprio robô! 
A seguir, veja a listagem de peças utilizadas, seu modelo, a quantidade necessária e sites para compra.

Até a próxima!