segunda-feira, 18 de outubro de 2010

Projeto: robô hexápode

Meu último projeto com Arduino Mega é este robô hexápode. Com 3 graus de movimento em cada perna, ele é capaz de realizar movimentos bem complexos.



Apesar do microcontrolador de 8 bits limitar bastante o movimento por não ser muito adequado aos cálculos de cinemática reversa, apenas com tabelas de lookup é possível implementar vários gaits e realizar movimentos interessantes.




O corpo foi construído em polietileno de alta densidade. Os servos são 12 TowerPro MG995, com engrenagens de metal e alto torque, e 6 TowerPro SG5010. Não são a melhor alternativa, mas em um país onde paga-se 100% de imposto em produtos importados sem equivalente nacional, é o melhor que pude encontrar dentro do orçamento que tinha.

A comunicação é feita por um módulo XBee 2.5 de 2mW, ligado ao Arduino Mega com um shield do sparkfun.com. Na foto ele está com uma bateria de NiMh de 1800mAh, mas o robô já está com baterias de íons de lítio com 2400mAh.

O vídeo abaixo mostra alguns dos gaits já programados, incluindo alguns tropeços.




A idéia é em breve substituir o Arduino Mega por um microcontrolador STM32F103 de 32 bits, capaz de realizar os cálculos trigonométricos necessários para cinemática reversa em tempo real, além de melhor monitorar o contato das patas com o solo.

45 comentários:

  1. Ola, gostei desse seu hexapod, gostaria se possivel você me dar uma dica de como você programou os servos no arduino mega, Obrigado.

    ResponderExcluir
  2. Da mesma forma que qualquer outro servo, usando a lib padrão do Arduino. É mais fácil você me dizer que problema teve e eu te explicar como resolver.

    ResponderExcluir
  3. Gostaria de saber como faço para controlar mais de 18 servos no Arduino Mega e tambem um exemplo de codigo fonte,pois sou iniciante em arduino e estou com algumas dificuldades, Obrigado.

    ResponderExcluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir
  5. Como você fez a parte mecânica? as peça etc?
    O ATMEGA 8 ou 168 consegui controlar 18 servos?
    Quanto tempo em média você demorou para programar?

    ResponderExcluir
  6. Marcelo,

    A parte mecânica foi feita com polietileno de alta densidade de 6mm, cortado com uma serra tico-tico.

    Creio que o Atmega8 (168, 328) pode controlar até 12 servos gerando o sinal diretamente, mas note que neste projeto foi usado o Arduino Mega, que usa o Atmega 1280. É possível controlar mais de 12 servos com o Atmega8 se você fizer um multiplexador com shift register (74595), mas dá um pouco mais de trabalho.

    Não sei quanto tempo demorei, foram algumas horas por dia, durante vários dias.

    ResponderExcluir
  7. Eu gostaria de gastar o mínimo possível, a preferencia é de que eu tenha que fazer a placa (e não comprar uma pronta)por acaso saberia indicar algum circuito? ou então algum microcontrolador?

    ResponderExcluir
  8. Se sua preocupação é gastar o mínimo possível, recomendo que busque outro projeto ou algum hexápode alternativo, com menos DOF. A diferença do Arduino para o Arduino Mega não é uma parte tão grande do preço total que compense a diferença.

    Você pode fazer um hexápode com 12DOF que pode ser montado apenas com o Arduino e daria um resultado legal.

    ResponderExcluir
  9. Poderia me dizer quanto gastou no projeto?

    ResponderExcluir
  10. Gastei por volta de R$ 700, sem impostos de importação das peças.

    ResponderExcluir
  11. Este comentário foi removido pelo autor.

    ResponderExcluir
  12. Cara por acaso sabe algum tutorial que explique o principio sobre a programação de um servo motor(comandos, etc)?
    Encontrei alguns, mas era utilizando o Arduino, a princípio terei que usar 8051.

    ResponderExcluir
  13. Não usei saidas PWM. Usei a lib Servo do Arduino, que gera sinal PWM em quantos pinos você desejar usando um dos timers.

    ResponderExcluir
  14. Este comentário foi removido pelo autor.

    ResponderExcluir
  15. Ligou as saída PWM direto nos servo motor? me aconselharam a usar resistor e um transistor.

    ResponderExcluir
  16. Você deve estar confundindo com motores comuns.

    ResponderExcluir
  17. Cara pode me explicar o que ocorre com os 6 servos da "base", quando o robô realiza o movimento esquerda ou direita?

    ResponderExcluir
  18. ola estou fazendo um robô quadrapod tipo o seu com quatro patas,
    eu controlo com pic 18f452 comprei os motores MG995 tower pro
    quando eu aciono qualquer um deles eles me queima o pic, ja comprei quatro pics e todos queimaram. voçe sabe qual e a corrente do sinal PWM desse servo? pensei em colocar um transistor.

    obrigado.

    se puder me ajudar ficarei muito grato

    Email rodrigo_canas@hotmail.com

    ResponderExcluir
    Respostas
    1. ola
      por acaso vc esta ligando alimentação dos servos na mesma alimentação da placa.
      use alimentações separadas unindo apenas o GND
      quando o servo encontra resistência ele aumenta a corrente para ter mais força isso pode sobrecarregar a placa controladora
      ate mais

      Excluir
  19. Ola caro colega, talvez seja pedir demais ,mas vc nao poderia disponibilizar o projeto desse robo hexapod, codigos , eletronica, etc.....Obrigado...

    ResponderExcluir
  20. Gostaria de fazer no meu TCC do curso de engenharia um hexápode, porém não tenho experiência, sou o "sonhador" do meu grupo, quando disse sobre isso acharam impossível, poderia me orientar de forma leiga os primeiros passos em como começar um projeto de um hexápode, depois eu me viro?
    Desde já, obrigado pela atenção.

    ResponderExcluir
  21. Ah, esqueci de mencionar, falta 3 semestres pra terminar o curso, será que da tempo para eu aprender desde o hardware a linguagem de programação? ou melhor abandonar logo esse projeto?

    ResponderExcluir
    Respostas
    1. Construir um hexápode é complicado mesmo para quem já tem bastante experiência. Se você tem 3 semestres, é melhor ir fazendo outros projetos mais simples, e deixar o hexápode para quando tiver mais prática.

      Excluir
  22. Mas vc fez sozinho, seria eu e mais 4 pessoas, talvez de pra sair algo razoável.

    ResponderExcluir
    Respostas
    1. Eu fiz sozinho, mas não foi meu primeiro projeto.

      Excluir
  23. Enfim, vou tentar, valeu pelas "orientações".

    ResponderExcluir
  24. Gostaria de saber se da pra usar um arduíno due no lugar do microprocessador STM32F103?

    ResponderExcluir
    Respostas
    1. Nunca usei o Arduino Due, mas não vejo nenhum impedimento.

      Excluir
  25. Sabe me dizer se é possível miniaturizar este projeto para usar microservos 9g?Gostei muito do projeto e queria fazer um hexapode também,e já tenho muitos microservos se puder usá-los sairia mais em conta.Obrigado pela atenção!

    ResponderExcluir
    Respostas
    1. claro que é possível vc precisa apenas colocar os servos de 900 gramas cm
      ja que essa estrutura é leve
      o resto ñ precisa mudar nada

      Excluir
  26. Rogério.

    Não conheço nenhum servo 9g com torque suficiente. Se quer mesmo experimentar, vale a pena fazer um teste de torque. Talvez até funcione.

    ResponderExcluir
  27. boa tarde estou iniciando nesse mundo e estou querendo montar um hexápode tbm, não se estou sendo abusivo, mas poderia passar os desenhos dele, estou com placas de PVC para fazer o desenho dele.
    Parabéns pelo blog muito bom.

    ResponderExcluir
    Respostas
    1. poderia passar para mim tbm
      zoowltar@hotmail.com
      obrigado

      Excluir
  28. e o meu olho brilhando aqui...
    ai quando eu aprender programação e conseguir montar minha impressora 3d...kkkkkk

    ResponderExcluir
  29. ola
    estou montando um com placa controladora de 32 canais
    e 18 servos mg995
    poderia me passar um modelos da parte mecânica tipo patas e chassi para eu ter uma ideia
    meu e-mail é
    zoowltar@hotmail.com
    se poder ajudar agradeço

    ResponderExcluir
  30. Olá Pedro; muito Show seu projeto parabéns. Amo muito está área, conheço Arduino a pouco tempo no primeiro no segundo mês que conhecia este mundo de microcontroladores já consegui ter um conhecimento para criar meu primeiro hexapod a plataforma arduino é muito simples mudou minha forma de ver a tecnologia de automação e robótica... antes era tão imposssivel e inesplicavel agora é tão fácil... no meu hexapod consigo ligar 32 servos com um arduino UNO ! ? uso um ,multiplexador chamado tlc5940 que expande as portas. estou querendo montar um projeto para tornar acessível de forma simples e barata a criação de robos hexapods e bípedes ... queria trocar umas ideias com vc. se possível me passe seu email... veja alguns de meus projetos aqui https://www.youtube.com/results?search_query=nadiel+fernandes+lima+maia

    ResponderExcluir
    Respostas
    1. Nadiel, eu não tenho mais tempo para mexer com isso, agora tenho um robôzinho de carne e osso fazendo bagunça pela casa, mas obrigado pelo convite.

      Excluir
  31. Boas , como fez o movimento das pata ?
    cumprs

    ResponderExcluir
    Respostas
    1. http://wiki.python.org.br/ComoFazerPerguntasInteligentes

      Excluir
  32. ola sou iniciante em hexapod estou construindo um de seis pernas sera que podes me passar o codigo por favor envie para email : bruno.b_alberto@hotmail.com

    ResponderExcluir
    Respostas
    1. http://wiki.python.org.br/ComoFazerPerguntasInteligentes

      Excluir
  33. Estou tentando construir um com peças de pvc e servos 1,5kg com 90graus
    Mais preciso estudar muito programação pois sou iniciante na area
    Vc que tem experiência na area leva mais de 1ano e 5 meses para mim construir um?

    ResponderExcluir