sexta-feira, 30 de dezembro de 2011

Barco autônomo: Android, NXT, RF e Algoritmoss

Olá!
Agradeço a todos por estarem divulgando o blog, comentando e assistindo aos vídeos! Isso me faz dar continuidade com as engenhocas que faço.


Pois bem, não ouviram falar do barco a um tempo não é? Para os que não sabem, é basicamente um barco (de 1m) que navega autonomamente dada uma trajetória, guiado por um sensor de GPS e uma bussola.

Vou comentar aqui, as novidades para o projeto, como oque tenho feito desde a ultima postagem.

O algoritmo
Criei meu próprio algoritmo de navegação, baseado em um simples PID, que é auto ajustável.
Ele funciona, para manter o barco no "rumo", já que existe vento, ondas, atrito e resistência do ar, se não houver um controle ideal, ele faria sempre uma parábola, e como a menor distancia entre dois pontos é uma reta, ele não estaria sendo econômico.

O hardware
Adoro ver a junção dos dois melhores controladores que já vi, NXT e Arduíno. Como uso nos campeonatos, também usei no barco pois precisava controlar 2 servo motores, coisa que o nxt nao faz, mas o Arduíno faz rindo. Como também, precisava de bluetooth (já vão entender porque), coisa que o NXT já possui integrado. Além dos sensores de Bussola e GPS, que já possuo para o NXT.
Fiz um teste com um motor de 50A, controlado pelo Arduíno, que era controlado pela bussola do NXT, funcionou perfeitamente!
Quanto ao hardware, ele esta pronto, só faltando mesmo fixar as partes no barco.
Aqui esta o vídeo (bem simples) do funcionamento do hardware




Android e bluetooth
Pois bem, me deparei com um problemão de começo. Se quisesse modificar a rota no lugar que estivesse (Praia, lago, piscina...) eu teria de ter internet, depois pegar a coordenada da latitude e longitude no computador para cada ponto, fazer uma lista destas coordenadas num arquivo de texto, importar para o NXTe fazer uma nova compilação do programa.
Ou seja, nada "simples", muito menos eficiente. A idéia que tive, foi fazer um aplicativo para o Android, que basicamente, possui uma lista de coordenadas onde posso modificar, deletar, adicionar e visualizar isso tudo sobre um mapa da google no próprio celular android.
Adicionar um ponto da rota é basicamente clicar sob o mapa. Enviar isso tudo para o NXT, seria só clicar em "enviar para NXT". Ele transforma aqueles pontos para dados txt, e envia para o NXT via bluetooth.
Fiz um teste de comunicação com o bluetooth do android com o NXT e funcionou perfeitamente, usando o RobotC.
Algumas telas do app para o android (em desenvolvimento...)



Segurança
Como sou ma pessoa que pensa muito no tal do "o que pode acontecer de pior?", ou seja, na infeliz da Lei de Murphy, previ algo como o modo automático "sem querer" virar 180º e se dirigir para china, sem querer.
Para ter controle sobre essas "cagadas", montei um sistema RFSafe, onde o Arduíno, controla os servos, apenas SE o receptor de rádio frequência do controle remoto estiver desligado (quando desligamos de um lado, ele desliga do outro).
Então, se quiser deixar no modo autônomo, desligue o controle. Se quiser colocar no modo manual, é só ligar o controle que o NXT e Arduíno não estarão mais no controle a situação.



Quero montar um vídeo completo do barco, só quando realmente estiver funcionando.

Se tiverem duvidas, dicas, ou qualquer outro comentário que queiram fazer eu aprecio bastante!
Um abraço a todos.

4 comentários:

  1. Parabéns Ivan!!!! excelente ideia!!!

    ResponderExcluir
  2. Só dá pra visualizar o vídeo se possuir conta no Facebook. Se der pra colocar no youtube... obrigado.

    ResponderExcluir
  3. Olá, gostei muito do seu projeto, mas você fala pouco sobre o software e ainda não colocou detalhes como o software faz o controle do barco, você poderia postar sobre isto ou mandar por Email?
    Grato

    ResponderExcluir
  4. Olá, amigo! Ficou muito bom mesmo!
    Estou fazendo um projeto parecido mas estou com dificuldades achar o motor ideal. Onde vocês arrumaram esse motor? Ele funciona a quantos volts? E como vocês alimentaram ele, pilhas, bateria?
    Parabéns pelo projeto!

    ResponderExcluir