Arduino + ROS Indigo 32 on Nootrix Virtual Machine

Facebooktwittergoogle_plusredditpinterestlinkedinmail


[In English]
ROS puede conectarse con un Arduino sin problemas. Mi objetivo es comprobar si esta conexión puede hacerse a través de la máquina virtual que proporciona Nootrix, ya que es la que utilizo en clase, puesto que facilita el trabajo con máquinas Windows, y también es más rápida y sencilla de instalar para los alumnos.

En mi máquina tengo instalado Xubuntu 14.04, uso Virtual Box 4.3.10, y la máquina virtual que he instalado es la de  ROS Indigo de 32 bits. Una vez que has instalado la máquina de ROS en Virtual Box, hay que seguir estos pasos:

  • Si tu usuario no está en vboxusers, añádelo  con sudo adduser tu_usuario vboxusers (o sudo usermod -aG vboxusers tu_usuario).
  • Arrancar la máquina virtual y escoger el Arduino de los dispositivos USB en el menú Dispositivos de Virtual Box.
  • Seguir las instrucciones de instalación de Arduino (con catkin); hay una pequeña variación en la máquina Nootrix: el directorio de sketches está en $HOME/Arduino.

Una vez instalados los elementos básicos para trabajar con Arduino en ROS, veamos qué hace falta para ejecutar uno de los ejemplos básicos incluidos en la instalación de Arduino: HelloWorld.ino, en el que el Arduino publica en un topic el  mensaje “hello world!”.

  • Seguir las instrucciones para ejecutar HelloWorld (importante: asegurarse que se han escogido las instrucciones para  Indigo).
  • Para averiguar qué dev utilizar: lsusb, y luego dmesg | grep tty.
  • Ahora hay que dar permisos a ese dispositivo serie, con cd /dev/ y luego sudo chmod 666 ttyACM0.
  • Después, pasamos el programa al Arduino, seleccionando bien el puerto.
  • Abrir un terminal con roscore.
  • Abrir otro terminal con rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0.
  • Abrir otro terminal con rostopic echo chatter (chatter es el nombre del topic usado en el código .ino de ejemplo)
  • Aviso: como ROS está usando rosserial, el Serial Monitor de Arduino no funciona (al menos con Arduino UNO)

El resultado se puede ver en el vídeo al final del post 🙂


[En español]

ROS can be easily connected to an Arduino board. But I wanted to check if this connection could be done with the Nootrix virtual machine, the one I use for my classes since it makes easier to work with ROS if you have Windows machines, and it helps the ROS installation for the students.

My machine runs on Xubuntu 14.04, I use Virtual Box 4.3.10, and the virtual machine I have chosen is ROS Indigo 32 bits. Once you have installed the ROS virtual machine on Virtual Box, you should  follow these steps:

  • If your user does not belong to vboxusers  group, you should add it with sudo adduser your_user vboxusers (or sudo usermod -aG vboxusers your_user).
  • Run the virtual machine and choose Arduino from the USB devices listed on the Virtual Box Devices menu.
  • Go to  Arduino installation and follow those steps (use catkin); there is a sligth modification on the Nootrix machine: the sketches folder is stored in $HOME/Arduino.

Now we have all the basic elements to work with Arduino under ROS; let’s see what else we need to run one of the basic examples included with the Arduino installation: HelloWorld.ino, which makes Arduino publish a “hello world!” message in a topic.

  • Follow these steps to run  HelloWorld (it is important to choose the proper instructions, i.e., the Indigo ones).
  • In order to know which dev to use: lsusb, and then dmesg | grep tty.
  • Now you have to grant permissions to that serial device: cd /dev/ and then sudo chmod 666 ttyACM0.
  • Then you upload the program to the Arduino, choosing the right port.
  • Open a terminal and run roscore.
  • Open another terminal and run rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0.
  • Open another terminal and run rostopic echo chatter (chatter is the name of the topic used in the .ino example code)
  • Warning: since ROS is using rosserial, Arduino’s Serial Monitor does not work (at least with Arduino UNO)

And voilà, here we have our Arduino publishing in a ROS topic 🙂

Preinstalled Nootrix ROS Indigo VM (Xubuntu, Windows 7)

Facebooktwittergoogle_plusredditpinterestlinkedinmail


[In English]
La máquina virtual es la de ROS Indigo Igloo 32 bits que ofrece preinstalada Nootrix y que puede descargarse aquí.

En Xubuntu 14.04, la he instalado en Virtual Box 4.3.10. Para no perder la costumbre ;), me han surgido algunos problemas, que he resuelto como sigue:

  • Los problemas de creación o cierre del fichero .vmdk han desaparecido forzando a que, en Virtual Box, la opción Archivos -> Preferencias -> General -> Carpeta predeterminada de máquinas  contenga el directorio donde está almacenado en el fichero .ova, en lugar de modificar ese path al instalar la máquina.
  • Una vez instalada la máquina correctamente, el que ha protestado ha sido Virtual Box. Afortunadamente, en el propio error se indicaba la solución, que efectivamente funciona: The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing
    ‘/etc/init.d/vboxdrv setup’
    as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.

En Windows 7, la he instalado en Virtual Box 4.2.10.  Aparentemente, la instalación ha ido bien.


[En español]
I have chosen the 32 bits preinstalled virtual machine of ROS Indigo Igloo offered by Nootrix here.

Under Xubuntu 14.04 I have Virtual Box 4.3.10. Just for a change ;), some issues arose, and they were solved like that:

  • Problems related to creating or closing the  .vdmk file disappeared when I forced, in Virtual Box, that the folder in  Files -> Preferences -> General -> Predetermined machine folder  (I hope I have translated this properly, since my Virtual Box is in Spanish) is the same that the folder which stores de .ova file, instead of changing that path directly when the virtual machine is installed.
  • Once the virtual machine was properly installed,  Virtual Box did not feel comfortable 😉 Luckily, the error info showed also how to solve it (and it works):  The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing
    ‘/etc/init.d/vboxdrv setup’
    as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.

On Windows 7, I used Virtual Box 4.2.10, and everything seems to be fine by now.