Arduino ROS custom messages

Para usar ROS custom messages (mensagens personalizadas) no Arduino com o rosserial, é obrigatório ter instalados no computador os pacotes do ROS:  rosserial e rosserial arduino. Para instalar pode-se usar os seguintes comandos:

sudo apt install ros-melodic-rosserial
sudo apt install ros-melodic-rosserial-arduino

Quando o programa para o Arduino requer mensagens personalizadas do ROS  (ROS custom messages). Como por exemplo quando inclui uma linha como a seguinte:

#include <ntbd_msgs/Motors_Array.h>

Teremos que efectuar um procedimento especial, que envolve a compilação do pacote de ROS que tem as mensagens personalizadas (neste caso o ntbd_msgs), e obter o ficheiro de header necessário (neste caso, o ficheiro Motors_Array.h).

Para obter o ficheiro header , é necessário, antes de mais, colocar o pacote do ROS com a definição da mensagem na pasta adequada do catkin e proceder á sua compilação:

cd ~/catkin_sw/src
git clone https://github.com/HotBlackRobotics/ntbd
cd ~/catkin_sw
catkin_make

De seguida, tem de se usar um dos seguintes comandos (pelos vistos existe a informação de vários devido à evolução das várias versões do ROS):

No ROS Melodic, o comando que funcionou foi  o ultimo dos indicados abaixo.

rosrun rosserial_client make_library.py ~/ ntbd_msgs
rosrun rosserial_arduino make_library.py ~/ ntbd_msgs
rosrun rosserial_arduino make_libraries.py ~/ ntbd_msgs

~/ representa a pasta de destino onde se encontra a ros_lib (biblioteca rosserial para o arduino)

ntbd_msgs, indica o pacote (com as mensagens) a ser compilado

O comando que usei (o último) gerou uma pasta ros_lib na home com toda a biblioteca do rosserial incluindo uma pasta ntbd_msgs que contem o ficheiro pretendido.

Nesta fase, e tendo em consideração o exemplo, podemos optar por uma das duas soluções:

  • Copiar a pasta ~/ros_lib/ntbd_msgs para ~/Arduino/libraries/ros_lib;
  • Copiar a pasta para dentro da pasta do sketch do arduino, e alterar uma linha de include para passar a incluir a biblioteca localmente: #include “ntbd_msgs/Motors_Array.h”

Já podemos compilar e enviar o programa para o Arduino