Difference between revisions of "Fernando-TFM-ROS02"
Line 54: | Line 54: | ||
echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc | echo export ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311 >> ~/.bashrc | ||
</source> | </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 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á en el 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> | <source> | ||
echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc | echo export ROS_HOSTNAME=IP_OF_TURTLEBOT >> ~/.bashrc | ||
Line 134: | Line 134: | ||
=== Creando un espacio de trabajo === | === Creando un espacio de trabajo === | ||
− | Lo más cómodo para trabajar es crear un directorio propio para ''stacks'' y ''packages'' en el PC estación de trabajo, ya que [http://www.ros.org ROS] tiene por defecto como directorio para ''stacks'' y ''packages'' /opt/ros/electric/stacks. Se pueden crear los nuevos ''stacks'' o ''packages'' en este directorio por defecto, pero queda más organizado y accesible de esta forma. | + | Lo más cómodo para trabajar es crear un directorio propio para ''stacks'' y ''packages'' en el PC estación de trabajo, ya que [http://www.ros.org ROS] tiene por defecto como directorio para ''stacks'' y ''packages'' '''/opt/ros/electric/stacks'''. Se pueden crear los nuevos ''stacks'' o ''packages'' en este directorio por defecto, pero queda más organizado y accesible de esta forma. |
El directorio se puede situar donde y con el nombre que se quiera. Se comenzará creando un directorio, por ejemplo en la carpeta personal: | El directorio se puede situar donde y con el nombre que se quiera. Se comenzará creando un directorio, por ejemplo en la carpeta personal: | ||
Line 148: | Line 148: | ||
export PYTHONPATH=$ROS_ROOT/core/roslib/src:$PYTHONPATH | export PYTHONPATH=$ROS_ROOT/core/roslib/src:$PYTHONPATH | ||
export ROS_PACKAGE_PATH=~/ros_workspace:/opt/ros/electric/stacks:$ROS_PACKAGE_PATH | export ROS_PACKAGE_PATH=~/ros_workspace:/opt/ros/electric/stacks:$ROS_PACKAGE_PATH | ||
+ | </source> | ||
+ | Se debe añadir este nuevo archivo creado al archivo de configuración del terminal (.bashrc), para hacer efectiva esta modificación. Para ello se debe ejecutar el siguiente comando en un terminal: | ||
+ | <source> | ||
+ | echo source ~/setup.sh >> ~/.bashrc | ||
+ | </source> | ||
+ | |||
+ | === Creando un ''package'' === | ||
+ | En el directorio de trabajo creado se creará un ''package'', el cual va a depender de otros ''packages'' del sistema. Las dependencias van en función del tipo de mensajes que queremos enviar o recibir, y el lenguaje empleado en los programas. En este primer programa no se necesitan todas las dependencias, pero se usaran en los siguientes programas, por lo que las añadiremos al crear el ''package'' que va a contener los programas. Para esto se introducirá el siguiente comando en un terminal: | ||
+ | <source> | ||
+ | roscreate-pkg beginner_tutorials std_msgs turtlebot_node geometry_msgs nav_msgs rospy roscpp | ||
</source> | </source> |
Revision as of 11:50, 4 February 2012
- Project Name: TFM-ROS02
- Authors: Fernando Casado
- Academic Year: 2011-2012
- Degree: Master
- SVN Repositories:
- Tags: turtlebot
- Technology: ROS, c++
- State: Development
Contents
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
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á en el 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 marcha
Con la red configurada, ya se puede proceder a la puesta en marcha 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 él, pero 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 diciendo que está 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
En un terminal nuevo, de forma local sin conectar con el PC robot, se ejecutará la aplicación del tablero de instrumentos (dashboard) del robot. Simplemente se debe introducir este comando en el terminal:
rosrun turtlebot_dashboard turtlebot_dashboard&
Aparecerá una pequeña ventana similar a esta:
La ventana del tablero de instrumentos consta de tres zonas bien diferenciadas:
- Diagnóstico del sistema, mensajes del sistema y modo de operación.
- Interruptores de los circuitos de las tres salidas digitales del iRobot Create.
- Niveles de batería de el iRobot Create y el PC robot.
Si todo va bien, como en la imagen, estarán en verde los iconos de diagnostico del sistema (llave inglesa) y mensajes del sistema (nube de llamada). El modo de operación se debe poner poner en Full Mode, para poder operar el robot. En los otros modos no está permitida la operación del robot, son el modo de carga (Passive Mode) y de espera (Safety Mode).
También se debe activar los interruptores de las tres salidas digitales, deben estar los tres en verde. Ahora ya esta todo listo para comenzar a operar con el robot. Para verlo en funcionamiento es recomendable probar alguna de las aplicaciones de demostración.
Primer programa
Creando un espacio de trabajo
Lo más cómodo para trabajar es crear un directorio propio para stacks y packages en el PC estación de trabajo, ya que ROS tiene por defecto como directorio para stacks y packages /opt/ros/electric/stacks. Se pueden crear los nuevos stacks o packages en este directorio por defecto, pero queda más organizado y accesible de esta forma.
El directorio se puede situar donde y con el nombre que se quiera. Se comenzará creando un directorio, por ejemplo en la carpeta personal:
mkdir ~/ros_workspace
Para que el sistema también busque stacks y packages en nuestra carpeta, se debe crear, en la carpeta personal un archivo llamado "setup.sh" con el siguiente contenido:
#!/bin/sh
source /opt/ros/electric/setup.bash
export ROS_ROOT=/opt/ros/electric/ros
export PATH=$ROS_ROOT/bin:$PATH
export PYTHONPATH=$ROS_ROOT/core/roslib/src:$PYTHONPATH
export ROS_PACKAGE_PATH=~/ros_workspace:/opt/ros/electric/stacks:$ROS_PACKAGE_PATH
Se debe añadir este nuevo archivo creado al archivo de configuración del terminal (.bashrc), para hacer efectiva esta modificación. Para ello se debe ejecutar el siguiente comando en un terminal:
echo source ~/setup.sh >> ~/.bashrc
Creando un package
En el directorio de trabajo creado se creará un package, el cual va a depender de otros packages del sistema. Las dependencias van en función del tipo de mensajes que queremos enviar o recibir, y el lenguaje empleado en los programas. En este primer programa no se necesitan todas las dependencias, pero se usaran en los siguientes programas, por lo que las añadiremos al crear el package que va a contener los programas. Para esto se introducirá el siguiente comando en un terminal:
roscreate-pkg beginner_tutorials std_msgs turtlebot_node geometry_msgs nav_msgs rospy roscpp