0% encontró este documento útil (0 votos)
4 vistas10 páginas

Navigation Install ROS

Este documento detalla el funcionamiento y configuración del robot Pioneer 3-DX con un láser SICK para navegación. Se abordan aspectos de hardware, software y la integración con ROS, incluyendo la instalación de librerías necesarias y la creación de mapas para la localización y navegación del robot. Además, se proporcionan comandos específicos para la operación y verificación del sistema.

Cargado por

Ivan Lillo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas10 páginas

Navigation Install ROS

Este documento detalla el funcionamiento y configuración del robot Pioneer 3-DX con un láser SICK para navegación. Se abordan aspectos de hardware, software y la integración con ROS, incluyendo la instalación de librerías necesarias y la creación de mapas para la localización y navegación del robot. Además, se proporcionan comandos específicos para la operación y verificación del sistema.

Cargado por

Ivan Lillo
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Navegación con Pionner 3-Dx

Julio Hurtado
September 2015

1 Introducción
Esta pequeña documentación es para explicar el funcionamiento de los paquetes
de navegación en un robot pionner 3dx con un laser SICK. Esto por parte de
un proyecto.

2 Hardware
2.1 Pionner 3-DX
Es un robot desarrollado por la empresa Adept MobileRobots, cuenta con dos
ruedas principales que hacen toda la fuerza, mas una tercera rueda de apoyo
que ayuda a estabilizar el movimiento. Además cuenta con sonares pero en esta
oportunidad no fueron [Link] lleva carga de hasta 17 Kgs además
puede llegar a alcanzar una velocidad de 1.6 metros por segundos.
Fue equipado con un laser de profundidad que va a ser descrito a contin-
uación.

2.2 Laser SICK


Es un laser de profundidad que entrega la distancia que se encuentran los objetos
en una linea horizontal a una altura mas o menos de 20 cm desde el suelo. Mide
en un radio de 180 grados por lo que no solo ve lo que pasa al frente si no que
también a los lados.
La principal utilidad es la detección de objetos para la creación de mapas y
para evitar las colisiones en la navegación.
Para poder utilizar el lasr con ROS, es necesario instalar un una librerı́a con
su wrapper, esto se explicara a continuación

> git clone [Link]


> git clone [Link]

Luego hay que compilar el proyecto para que reconozca los nuevos paquetes:

1
> cd ~/catkin_ws
> catkin_make

Para verificar que todo esta en correcto funcionamiento y correr el laser,


se utliza, donde el XXX es el puerto donde esta coenctado el laser, puede ser
ttyUSB0 :

> rosrun sicktoolbox_wrapper sicklms _port:=/dev/XXX


_baud:=38400

Si se produce algun error de permisos, puede que se necesite agregar los per-
misos al puerto, para eso verificar los permisos que tiene con el primer comando
y agregar con los permisos con el segundo:

> ls -l /dev/ttyUSB0
> sudo chmod a+rw /dev/ttyUSB0

2.3 Pan-Tilt
Este aparato tiene el propósito de mover la cámara para que apunte en el sentido
deseado y no tener que mover el robot en aquella dirección para que esta pueda
ver el objetivo.
Consta de dos partes, el Pan que es la parte de arriba, su objetivo es hacer
que la cámara cambie su orientación hacia arriba o hacia abajo, verticalmente.
En cambio el Tilt es la encargada de orientar la cámara de manera horizontal.
Para la manipulación del Pan-Tilt se utiliza una librerı́a en python que se
conecta a través del puerto serial, esta se puede utilizar fácilmente, simplemente
basta decirle el ángulo de inclinación en que se quiere tanto el pan como el
tilt. Esto con la ayuda de la clase que se encontró en el siguiente link http:
//[Link]/en/archives/1507.

2.4 Asus xTrion Pro Live


Es una cámara parecida a la Kinect pero no necesita enchufar ce a la corriente,
solo se conecta al notebook mediante un puerto USB. La gracia es que tiene una
cámara RGB y una de profundidad, esto ayuda a detectar objetos, en este caso
personas.
Para el correcto funcionamiento de la cámara fue necesario actualizarle el
firmware para que se pueda conectar a algún USB 3.0, ya que todos los puertos
USB del notebook son 3.0. Luego fue necesario instalar las librerias de OpenNi2
para ros, si es que no estan instaladas:

2
> sudo apt-get install ros-indigo-openni2-camera
> sudo apt-get install ros-indigo-openni2-launch
> sudo apt-get install ros-indigo-rgbd-launch

O se pueden instalar en la carpeta src que crearemos mas adeltante en esta


misma documentación, recordar que cada vez que se clonan repositorios de git
en esta carpeta hay que compilar de nuevo el proyecto:

> git clone [Link]


> git clone [Link]
> git clone [Link]

Para verificar el correcto funcionamiento se tiene que abrir la cámara con


OpenNi2 y ros de la siguiente forma:

> roslaunch openni2_launch [Link]

y verificar que están los tópicos correspondientes o ver las imágenes rgb y
de profundidad con los siguientes comandos, cada uno de ellos tiene que ser
ejecutado en una terminal aparte.

> rosrun image_view image_view


image:=/camera/rgb/image_raw > rosrun image_view
image_view image:=/camera/depth/image

3 Configuración
Una parte importante al ocupar ROS y muchos de sus paquetes es una buena y
ordenada configuración del sistema, para eso son los siguientes pasos:

3.1 ROS
Para este proyecto se utilizo la versión indigo, ya que es la que se acepta cuando
se trabaja en Ubuntu 14.04. Pero una buena anécdota es que el funcionamiento
es muy parecido a la versión Hydro, incluso códigos que funcionan en uno
también pueden funcionar en el otro.
Esto fue sacado de la wiki de ros1 .

3.1.1 Permisos de Ubuntu


1. Permitir a Ubuntu aceptar repositorios ”restricted”, ”universe” y ”multi-
verse”
1 [Link]

3
2. Agregar lista de ROS indigo

> sudo sh -c ’echo "deb [Link]


$(lsb_release -sc) main" > /etc/apt/[Link].d/[Link]’

3. Agregar key:

> sudo apt-key adv --keyserver


hkp://[Link] --recv-key 0xB01FA116

3.1.2 Instalar ROS


1. Para Ubuntu 14.04.2 quizas sea necesario instalar estos paquetes antes,
por problemas de dependencias.

> sudo apt-get install xserver-xorg-dev-lts-utopic


mesa-common-dev-lts-utopic libxatracker-dev-lts-utopic
libopenvg1-mesa-dev-lts-utopic
libgles2-mesa-dev-lts-utopic libgles1-mesa-dev-lts-utopic
libgl1-mesa-dev-lts-utopic libgbm-dev-lts-utopic
libegl1-mesa-dev-lts-utopic

2. Se puede instalar por parte o la version completa, en este caso se instalo


la version completa:

> sudo apt-get install ros-indigo-desktop-full

3.1.3 Configurar ROS


1. Inicializar rosdep:

> sudo rosdep init


> rosdep update

2. Agregar variables de entorno a /.bashrc (Para que cada vez que se abra
una nueva terminal se agregue el path automaticamente).

> echo "source /opt/ros/indigo/[Link]" >>


/.bashrc
> source /.bashrc

4
3. Optativo, instalar rosinstall que ayuda a instalar algunas cosas de ROS:

> sudo apt-get install python-rosinstall

3.1.4 Creación del Espacio de Trabajo en ROS


Para poder desarrollar proyectos es necesario crear un espacio de trabajo2 .

1. Crear carpetas y entrar a ella

> mkdir -p ~/catkin_ws/src


> cd ~/catkin_ws/src

2. Se crea el entorno de trabajo mediante con el manejador de archivos catkin

> catkin_init_workspace

3. Se compila el proyecto y sus paquetes asociados

> catkin_make

3.2 RosAria
RosAria provee una interfaz para poder trabajar con los robot de Adept Mo-
bileRobots, como es el caso del Pionner 3-DX, ya que estos trabajan interna-
mente con una librerı́a llamada Aria. Por lo que mediante esta interfaz uno
tiene acceso a la velocidad, aceleración y base del robot utilizando los tópicos
que ROS entrega3 .
Los pasos para instalar y configurar RosAria se muestra a continuacion4 :

1. Ir a la carpeta donde se encuentran los proyectos asociados

> cd ~/PRUEBA/src

2. Bajar el codigo desde el repositorio de github

> git clone [Link]

2 [Link]
3 [Link]
4 [Link]

5
3. Agregar nuestro [Link] como PATH aceptado y reiniciar el terminal

> echo "source /PRUEBA/devel/[Link]" >> /.bashrc


> source /.bashrc

4. Para instalar Aria con sus dependencias se requiere:

> dpkg-query -W python-rosdep


> sudo apt-get update
> sudo apt-get upgrade

5. Instalar RosAria y compilar el proyecto

> rosdep update


> rosdep install rosaria
> cd ~/catkin_ws
> catkin_make

Para verificar si RosAria esta funcionado correctamente basta revisar los


tópicos que tiene ros cuando se hecha a correr, para esto bastante ejecutar los
siguientes comandos en terminales separadas con el robot ya conectado al pc.

> roscore
> rosrun rosaria RosAria
> rostopic list

4 Software
La mayor parte del software utilizado son paquete de ROS sin modificar o
pequeña modificaciones. Ademas de algunos programas propios para integrar
todo y adecuar la navegacion a lo que el software de reconocimiento de pesronas
encontrara.

4.1 Generación del Mapa


Una parte importante de la localizacion es poder generar un mapa que sea
confiable. Para esto se utilizaron los siguientes pasos5 :
5 [Link]

6
1. Iniciar ROS:

> roscore

2. Iniciar RosAria, para poder conectarnos con los comandos del robot, este
asume que el robot esta conectado al puerto ttyUSB0

> rosrun rosaria RosAria _port:=/dev/ttyUSB0

3. Ejecutar el script [Link], que nos permitirá maniobrar el robot con el


teclado del notebook. Esto a falta de un joystick.

> python script/[Link]

4. Algo importante, no solo en la creación de mapas, son las transformaciones


que se tienen que hacer. En este caso son necesarias 2 transformaciones
estáticas, ya que el resto las generan automáticamente los paquetes que se
utilizan. Estas especı́ficamente le dicen a los tópicos donde se encuentra
el laser con respecto al robot.

> rosrun tf static_transform_publisher 0.034 0.0 0.250 0.0 0.0 0.0


/base_link /laser 100
> rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0
/base_footprint /base_link 100

5. Ahora es necesario conectar el laser. Se asumen que esta en el puerto


ttyUSB1 y se pide que solo entregue 180 grados de profundidad, ya que
si no puede causar problemas de incompatibilidad (no oscile entre 180 y
181).

> rosrun sicktoolbox_wrapper sicklms _port:=/dev/ttyUSB1 _baud:=38400


_resolution:=1.0 _angle:=180

6. Luego se tiene que recolectar los topicos para ir guardandolos antes de


generar el mapa, para esto se utiliza un paquete que se llama gmapping6

> rosrun gmapping slam_gmapping

6 [Link]

7
7. Por ultimo, cuando el robot paso por todos los lugares que se quiere, y se
grabo todo lo que se tenia que grabar, se guarda el mapa.

> rosrun map_server map_saver -f my_lab_map

Si al guardar el mapa, este se ve como si el robot no se hubiera movido pero


con mediciones a todo su alrededor, probablemente es porque las transforma-
ciones no fueron hechas de manera correcta y lo que falta seria decirle al laser
que se comunique con la odometria.

4.2 Localización y Navegación


Como punto final de esta documentación, lo importante es que el robot se pueda
localizar y navegar por el mapa sin problemas, esto quiere decir construyendo
un plano global con un mapa conocido pero a la vez actualizando un mapa local
con los obstáculos que puedan ir apareciendo dinámicamente. No queremos que
el robot choque a personas por ejemplo.
Una buena herramienta para visualizar como se esta comportando el robot
es rviz, donde se pueden mostrar el camino generado, el mapa global, mapa de
obstáculos entre otras cosas.
Los siguientes comandos son para lograr mostrar que el robot se localice y
navegue sin problemas, ademas de un visualizador.

1. Inicializar ROS

> roscore

2. Iniciar RosAria.

> rosrun rosaria RosAria _port:=/dev/ttyUSB0

3. Iniciar el laser

> rosrun sicktoolbox_wrapper sicklms _port:=/dev/ttyUSB1 _baud:=38400


_resolution:=1.0 _angle:=180

4. Iniciar el topico que nos entrega el mapa

> rosrun map_server map_server maps/[Link]

8
5. Iniciar el visualizador, además de un modelo del robot.

> roslaunch src/amr-ros-config/launch/rviz+urdf_state.launch

6. Iniciar todo el modulo de navegación, esto incluye el localizador amcl, el


planer local y global.

> roslaunch src/piero_2dnav/move_base.launch

7. Si se agrega los tópicos en el visualizador, como el mapa, y se le entrega una


posición inicial aproximada, el robot es capaz de navegar sin problemas si
los parámetros están bien configurados (a mano). Para esto se tiene que
colocar un goal.
Si se quiere hacer por código, se puede agregar goal a través de código,
esto se puede hacer con el siguiente script
8. Iniciar todo el modulo de navegación, esto incluye el localizador amcl, el
planer local y global.

> python script/move_robot.py

El arbol de las transformaciones se deberia ver como lo siguiente, si es que


no esta abierto el vizualizador con el modelo del robot:

9
5 Pendientes
• Sacar fotos y colocarlas en el informe
• Colocar fotos de los tfs

References

10

También podría gustarte