ROS e Arduino

ROS e Arduino

O arduino é um dos microcontroladores que podem ser usados em robots com  ROS.

Até ao momento tenho usado o arduino mega 2560 em todas as experiências assim como na primeira versão do rospibot.

Os principais motivos são:

  • Mais memória disponível
  • Múltiplas portas de hardware disponíveis no mega

A minha aprendizagem nas ultimas semanas sobre o funcionamento do ros e a sua relação com o arduino permite-me concluir o seguinte:

Existência de vários métodos para atingir essa integração:

  • Uso do pacote rosserial e rosserial_arduino, incluidos na distro do ROS e que contemplam um leque extenso de funcionalidades;
  • Uso de outro software já disponivel que implemente um protocolo serie  (alternativo) de comunicação com o ROS;
    • ros_arduino_bridge (que não consegui por a funcionar)
    • chefbot arduino node (que experimentei na implementação parcial do Chefbot)
  • Desenvolver um novo protocolo serie de comunicação com o ROS;

Rosserial arduino

A minha primeira escolha foi efectuar o software para o arduino com o rosserial e o rosserial arduino.

Caso não estejam instalados, os pacotes rosserial e rosserial_arduino podem ser instalados com o apt.

As minhas impressões sobre a implementação de soluções baseadas no rosserial arduino são as seguintes:

  • Existe perda de mensagens nos tópicos subscritos pelo arduino mesmo a baixa frequência
  • Com muitos subscribers, publishers e broadcasters o looptime começa a aumentar, em particular quando os tópicos tem muita frequência e mensagens longas, e funções como o controlo pid são afectadas, por exemplo no caso do pid, perdendo suavidade e a sincronia entre rodas.
  • O programa no arduino deve ser o mais pequeno e rápido possível, evitando mesmo em algumas situações efectuar a publicação de mensagens com o tipo mais adequado e efectuar a conversão recorrendo a um node no computador.