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.