Arduino, Eletrônica, Robótica, ROS

ROS kinetic e IDE Arduino

ROS kinetic Kame

Robot Operating System

A plataforma Arduino é uma ótima ferramenta para programar Hardware. Usando o pacote “rosserial_arduino” é possível se comunicar com o ROS diretamente através de um Arduino. O pacote rosserial implementa o protocolo de comunicação ROS através da UART da placa do Arduino. Inclusive também é possível usar o ES8266 e através de WIFI via socket TCP usando esta mesma biblioteca. Com isso é possível uma placa Arduino ser um nó(node) com todas as suas capacidades como: “publish” e “subscribe”, “publish TF transforms” e pegar o “ROS system time”.

Instale o IDE do Arduino no Ubuntu através dos procedimentos detalhados em https://www.arduino.cc/en/Guide/Linux ou caso use Windows, baixe e siga o passo a passo de instalação fornecido no próprio site do arduino.cc

DICA: ao tentar instalar a versão 1.6.1 e a 1.8.2 aconteceu um erro durante a instalação. Após pesquisas, encontrei que o erro está no “install.sh” que fica dentro da pasta do Arduino, para isso você terá que editar o arquivo. Entre na pasta e clique com botão direito do mouse sobre o arquivo “install.sh” e clique em editar com gedit. Onde tem a linha

RESOURCE_NAME=cc.arduino.arduinoide

substitua por:

RESOURCE_NAME=arduino-arduinoide

Salve as alterações e repita o comando ./install.sh no terminal.


Configurando o IDE Arduino para funcionar com o ROS

Procedimentos mais detalhados em: http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup

Para usar o ROS com Arduino será necessária uma biblioteca do ROS. Esta biblioteca deve ser gerada no computador (ou máquina Virtual) onde existe a instalação do seu ROS. Depois de gerada, a biblioteca funciona em qualquer instalação do Arduino. Bastando apenas copiá-la para a pasta “libraries” do deu IDE Arduino. Vamos lá, num terminal no Ubuntu digite:

sudo apt-get install ros-kinetic-rosserial-arduino
sudo apt-get install ros-kinetic-rosserial

O primeiro comando instala dependências para funcionar ROS com Arduino e o segundo comando instala o pacote ROS para comunicação serial (socket TCP incluído).

Depois, vamos gerar nossa biblioteca para Arduino com o comando:

rosrun rosserial_arduino make_libraries.py .

O ROS vai criar uma pasta com nome ros_lib na sua pasta HOME. Esta pasta contém a biblioteca para comunicação com o ROS. Copie e cole esta pasta na sua IDE Arduino dentro da pasta “libraries” que geralmente fica dentro da pasta arduino.

DICA: De preferência use uma pasta para os sketchs Arduino no seu home folder para evitar problemas de permissões do Linux. Exemplo: após instalar o IDE Arduino verifique se ele já criou uma pasta “Arduino” no seu home. caso não tenha criado crie uma pasta no seu home com nome “Arduino” e depois, dentro da IDE do Arduino, vá em “File > Preferences” e “sketchbook folder” e insira lá o caminho da pasta sketchbook que você acabou de criar exemplo “/home/seunome/Arduino”. Reinicie o IDE.

Reinicie o IDE Arduino. Agora deve aparecer “ros_lib” dentro de “File > Examples”. E com isso agora você pode testar os exemplos.

OBS: Dentro do código Arduino deverá agora ser incluído #include <ros.h> antes de qualquer outro código ou outra declaração de include.


Testando:

Abra A IDE Arduino, vá em “File > Examples>HelloWorld”. Com o Arduino UNO já plugado na USB, clique em upload. OBS: neste exemplo o Arduino irá transmitir a mensagem “hello world!” no tópico “chatter”

Caso apareça o erro ” avrdude: ser_open(): can’t open device “/dev/ttyACM0″: Permission denied ” ao tentar enviar o programa para a placa, vá em um terminal e digite no terminal do linux:

  sudo chmod a+rw /dev/ttyACM0 

Após upload, abra um terminal no linux inicie o node(nó) Master com:

roscore

Em um segundo terminal… inicie o nó que será responsável por fazer a ponte entre a porta USB e o sistema ROS:

rosrun rosserial_python serial_node.py /dev/ttyACM0

Em um terceiro terminal… vamos ver o que está sendo transmitido pelo Arduino no tópico “chatter”:

rostopic echo /chatter

DICA: para encerrar algum processo use “control+c” e para abrir uma nova aba no terminal “shift+control+t”.

Então é isso… até a próxima =)

3 Comments

  1. Leonardo

    Muito obrigado pelas dicas e referência. Me ajudou a iniciar uma parte do meu TCC em mecatrônica. Uso ROS Kinetic no Ubuntu 16.04 e com a IDE do arduino 1.8.9

  2. Geraldo

    Se alguem tiver problemas rodando rosrun se seu ambiente tiver o Anaconda instalado tente :

    python2.7 /opt/ros/kinetic/share/rosserial_arduino/make_libraries.py /home/user/arduino-1.8.5/libraries/