Difference between revisions of "Fernando-TFM-ROS02"

From robotica.unileon.es
Jump to: navigation, search
Line 22: Line 22:
 
=== Instalando ''Turtlebot-desktop'' ===
 
=== Instalando ''Turtlebot-desktop'' ===
 
Con el sistema [http://www.ros.org ROS] instalado, necesitamos instalar las herramientas para desarrollo del robot [http://www.turtlebot.com Turtlebot] en el equipo de trabajo. Ejecutando el siguiente comando en un terminal comenzará la descarga e instalación:
 
Con el sistema [http://www.ros.org ROS] instalado, necesitamos instalar las herramientas para desarrollo del robot [http://www.turtlebot.com Turtlebot] en el equipo de trabajo. Ejecutando el siguiente comando en un terminal comenzará la descarga e instalación:
      sudo apt-get install ros-electric-turtlebot-desktop
+
<source> 
 +
    sudo apt-get install ros-electric-turtlebot-desktop
 +
</source>
 
Es importante que el reloj del equipo de trabajo se encuentre sincronizado con el reloj del equipo del [http://www.turtlebot.com Turtlebot], para prevenir las posibles perdidas de red inalámbrica. Para instalar el cliente [http://es.wikipedia.org/wiki/Network_Time_Protocol NTP] ''Chrony'' se ejecutará el siguiente comando en un terminal:
 
Es importante que el reloj del equipo de trabajo se encuentre sincronizado con el reloj del equipo del [http://www.turtlebot.com Turtlebot], para prevenir las posibles perdidas de red inalámbrica. Para instalar el cliente [http://es.wikipedia.org/wiki/Network_Time_Protocol NTP] ''Chrony'' se ejecutará el siguiente comando en un terminal:
 +
<source>
 
       sudo apt-get install chrony
 
       sudo apt-get install chrony
 +
</source>
  
 
== Conociendo el Turtlebot ==
 
== Conociendo el Turtlebot ==
Line 47: Line 51:
  
 
En ambos equipos, PC estación de trabajo y PC robot, se añarirá el ROS_MASTER_URI en el archivo de configuración del terminal (.bashrc), que apunta a la dirección IP del PC robot, que es el que ejecuta el servicio maestro. Simplemente se debe escribir el siguiente comando en un terminal, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:
 
En ambos equipos, PC estación de trabajo y PC robot, se añarirá el ROS_MASTER_URI en el archivo de configuración del terminal (.bashrc), que apunta a la dirección IP del PC robot, que es el que ejecuta el servicio maestro. Simplemente se debe escribir el siguiente comando en un terminal, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:
       echo export ROS_MASTER_URI=<nowiki>http://IP_OF_TURTLEBOT:11311</nowiki> >> ~/.bashrc
+
<source>     
 +
       echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc
 +
</source>
 
También se debe asignar un nombre de equipo, tanto al PC estación de trabajo como al PC robot. Este nombre será la dirección IP de cada equipo, que se almacenará también en archivo de configuración del terminal (.bashrc). En un terminal del PC robot de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:
 
También se debe asignar un nombre de equipo, tanto al PC estación de trabajo como al PC robot. Este nombre será la dirección IP de cada equipo, que se almacenará también en archivo de configuración del terminal (.bashrc). En un terminal del PC robot de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:
 +
<source>     
 
       echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc
 
       echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc
 +
</source>
 
En un terminal del PC estación de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_WORKSTATION", por la dirección IP asignada en la red al PC estación de trabajo:
 
En un terminal del PC estación de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_WORKSTATION", por la dirección IP asignada en la red al PC estación de trabajo:
 +
<source>     
 
       echo export ROS_HOSTNAME=IP_OF_WORKSTATION >> ~/.bashrc
 
       echo export ROS_HOSTNAME=IP_OF_WORKSTATION >> ~/.bashrc
 +
</source>
 
* '''Nota''': Para conocer la dirección IP, asignada en la red a un equipo, simplemente se debe ejecutar en un terminal:
 
* '''Nota''': Para conocer la dirección IP, asignada en la red a un equipo, simplemente se debe ejecutar en un terminal:
 +
<source>     
 
       ifconfig
 
       ifconfig
 +
</source>
 
que mostrará una información similar a esta:
 
que mostrará una información similar a esta:
  
 +
<source>
 
       eth0      Link encap:Ethernet  direcciónHW 00:16:d4:55:85:b4   
 
       eth0      Link encap:Ethernet  direcciónHW 00:16:d4:55:85:b4   
 
                 ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
 
                 ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
Line 74: Line 87:
  
 
       wlan0    Link encap:Ethernet  direcciónHW 00:18:de:21:4b:ad   
 
       wlan0    Link encap:Ethernet  direcciónHW 00:18:de:21:4b:ad   
                 Direc. inet:<span style="color: #ff0000">192.168.1.10</span> Difus.:192.168.1.255  Másc:255.255.255.0
+
                 Direc. inet:192.168.1.10  Difus.:192.168.1.255  Másc:255.255.255.0
 
                 Dirección inet6: fe80::218:deff:fe21:4bad/64 Alcance:Enlace
 
                 Dirección inet6: fe80::218:deff:fe21:4bad/64 Alcance:Enlace
 
                 ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
 
                 ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
Line 81: Line 94:
 
                 colisiones:0 long.colaTX:1000  
 
                 colisiones:0 long.colaTX:1000  
 
                 Bytes RX:169415208 (169.4 MB)  TX bytes:9379691 (9.3 MB)
 
                 Bytes RX:169415208 (169.4 MB)  TX bytes:9379691 (9.3 MB)
 +
</source>
  
 
=== Puesta en funcionamiento ===
 
=== Puesta en funcionamiento ===
Line 86: Line 100:
  
 
Las operaciones sobre el PC robot se pueden hacer directamente sobre el equipo, que no es la opción recomendable por comodidad de trabajo. Así que se comenzará conectando por [http://es.wikipedia.org/wiki/Secure_Shell ssh], desde el PC estación de trabajo con el PC robot. Se ejecutará el siguiente comando en un terminal en la estación de trabajo, sustituyendo "IP_OF_TURTLEBOT" por la dirección IP asignada en la red al PC robot:
 
Las operaciones sobre el PC robot se pueden hacer directamente sobre el equipo, que no es la opción recomendable por comodidad de trabajo. Así que se comenzará conectando por [http://es.wikipedia.org/wiki/Secure_Shell ssh], desde el PC estación de trabajo con el PC robot. Se ejecutará el siguiente comando en un terminal en la estación de trabajo, sustituyendo "IP_OF_TURTLEBOT" por la dirección IP asignada en la red al PC robot:
 +
<source>
 
       ssh turtlebot@IP_OF_TURTLEBOT
 
       ssh turtlebot@IP_OF_TURTLEBOT
 +
</source>
 
Pedirá la contraseña asignada al PC robot. Cuando se conecte el [http://es.wikipedia.org/wiki/Prompt prompt] del terminal cambiará por el del PC robot. Se puede comprobar el estado del servicio del robot, tecleando el siguiente comando en el terminal:
 
Pedirá la contraseña asignada al PC robot. Cuando se conecte el [http://es.wikipedia.org/wiki/Prompt prompt] del terminal cambiará por el del PC robot. Se puede comprobar el estado del servicio del robot, tecleando el siguiente comando en el terminal:
 +
<source>
 
       sudo service turtlebot status
 
       sudo service turtlebot status
 +
</source>
 
Devolverá un mensaje que esta iniciado. Es servicio se inicia siempre que encendemos el PC robot, pero se puede detener y poner en marcha desde el terminal con los siguientes comandos:
 
Devolverá un mensaje que esta iniciado. Es servicio se inicia siempre que encendemos el PC robot, pero se puede detener y poner en marcha desde el terminal con los siguientes comandos:
 +
<source>
 
       sudo service turtlebot stop
 
       sudo service turtlebot stop
 
       sudo service turtlebot start
 
       sudo service turtlebot start
 +
</source>

Revision as of 16:57, 3 February 2012

  • Project Name: TFM-ROS02
  • Authors: Fernando Casado
  • Academic Year: 2011-2012
  • Degree: Master
  • SVN Repositories:
  • Tags: turtlebot
  • Technology: ROS, c++
  • State: Development

Instalando ROS

Lo primero que necesitamos es un computador con el sistema operativo Ubuntu, que es el único soportado por ROS, o instalarlo; otros sistemas operativos para los que está disponible solo son experimentales. Para instalar Ubuntu en un equipo con sistema operativo windows, podemos optar entre una instalación tradicional desde un CD-ROM o USB, en una partición diferente a la de windows, o la opción más rápida y sencilla , instalarlo desde windows como si se tratara de una aplicación o programa mas.

Provistos ya de un equipo con Ubuntu, para descargar e instalar el sistema ROS simplemente deberemos seguir las indicaciones de instalación. No esta de más el tomarse un tiempo realizando los tutoriales que proponen, son de gran ayuda para conocer la estructura de ficheros y el funcionamiento de Nodes y Topics.

Instalando Turtlebot-desktop

Con el sistema ROS instalado, necesitamos instalar las herramientas para desarrollo del robot Turtlebot en el equipo de trabajo. Ejecutando el siguiente comando en un terminal comenzará la descarga e instalación:

   
     sudo apt-get install ros-electric-turtlebot-desktop

Es importante que el reloj del equipo de trabajo se encuentre sincronizado con el reloj del equipo del Turtlebot, para prevenir las posibles perdidas de red inalámbrica. Para instalar el cliente NTP Chrony se ejecutará el siguiente comando en un terminal:

      sudo apt-get install chrony

Conociendo el Turtlebot

thumb|130px|Fotografía del [http://www.turtlebot.com Turtlebot].

Hardware

  • iRobot Create
  • ASUS1215N Laptop
  • Microsoft Kinect
  • Placa de gestión de alimentación y sensores
  • Cables USB de comunicaciones y alimentación
  • Estructura de soporte de elementos

Software

  • Sistema operativo Ubuntu
  • ROS con Turtlebot-robot

Conexión estación de trabajo-robot

Configuración de la red

Lo habitual conectar ambos equipos a una red Wi-Fi, pero puede darse que el PC estación de trabajo no disponga de un interfaz de red inalámbrica. En este caso es necesario poder conectarse a un puerto del router que provee la red Wi-Fi, para que exista una ruta de acceso entre el PC estación de trabajo y el PC robot.

En ambos equipos, PC estación de trabajo y PC robot, se añarirá el ROS_MASTER_URI en el archivo de configuración del terminal (.bashrc), que apunta a la dirección IP del PC robot, que es el que ejecuta el servicio maestro. Simplemente se debe escribir el siguiente comando en un terminal, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:

      
      echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc

También se debe asignar un nombre de equipo, tanto al PC estación de trabajo como al PC robot. Este nombre será la dirección IP de cada equipo, que se almacenará también en archivo de configuración del terminal (.bashrc). En un terminal del PC robot de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_TURTLEBOT", por la dirección IP asignada en la red al PC robot:

      
      echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc

En un terminal del PC estación de trabajo se ejecutará el siguiente comando, sustituyendo "IP_OF_WORKSTATION", por la dirección IP asignada en la red al PC estación de trabajo:

      
      echo export ROS_HOSTNAME=IP_OF_WORKSTATION >> ~/.bashrc
  • Nota: Para conocer la dirección IP, asignada en la red a un equipo, simplemente se debe ejecutar en un terminal:
      
      ifconfig

que mostrará una información similar a esta:

      eth0      Link encap:Ethernet  direcciónHW 00:16:d4:55:85:b4  
                ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
                Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
                Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
                colisiones:0 long.colaTX:1000 
                Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
                Interrupción:44 

      lo        Link encap:Bucle local  
                Direc. inet:127.0.0.1  Másc:255.0.0.0
                Dirección inet6: ::1/128 Alcance:Anfitrión
                ACTIVO BUCLE FUNCIONANDO  MTU:16436  Métrica:1
                Paquetes RX:64 errores:0 perdidos:0 overruns:0 frame:0
                Paquetes TX:64 errores:0 perdidos:0 overruns:0 carrier:0
                colisiones:0 long.colaTX:0 
                Bytes RX:5184 (5.1 KB)  TX bytes:5184 (5.1 KB)

      wlan0     Link encap:Ethernet  direcciónHW 00:18:de:21:4b:ad  
                Direc. inet:192.168.1.10  Difus.:192.168.1.255  Másc:255.255.255.0
                Dirección inet6: fe80::218:deff:fe21:4bad/64 Alcance:Enlace
                ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
                Paquetes RX:130972 errores:0 perdidos:0 overruns:0 frame:0
                Paquetes TX:87840 errores:0 perdidos:0 overruns:0 carrier:0
                colisiones:0 long.colaTX:1000 
                Bytes RX:169415208 (169.4 MB)  TX bytes:9379691 (9.3 MB)

Puesta en funcionamiento

Con la red configurada, ya se puede proceder a la puesta en funcionamiento del Turtlebot. Se conectarán los cables USB de comunicación y alimentación del robot al PC robot, se encenderá el iRobot Create y se arrancará el PC robot.

Las operaciones sobre el PC robot se pueden hacer directamente sobre el equipo, que no es la opción recomendable por comodidad de trabajo. Así que se comenzará conectando por ssh, desde el PC estación de trabajo con el PC robot. Se ejecutará el siguiente comando en un terminal en la estación de trabajo, sustituyendo "IP_OF_TURTLEBOT" por la dirección IP asignada en la red al PC robot:

      ssh turtlebot@IP_OF_TURTLEBOT

Pedirá la contraseña asignada al PC robot. Cuando se conecte el prompt del terminal cambiará por el del PC robot. Se puede comprobar el estado del servicio del robot, tecleando el siguiente comando en el terminal:

      sudo service turtlebot status

Devolverá un mensaje que esta iniciado. Es servicio se inicia siempre que encendemos el PC robot, pero se puede detener y poner en marcha desde el terminal con los siguientes comandos:

      sudo service turtlebot stop
      sudo service turtlebot start