Estudio del estado del arte en metodología de programacion de robots móviles.
Integración de ROS (Robot Operating System) sobre Raspbian en Raspberry PI
Comunicación Raspberry PI y Arduino gestionada por ROS
Diseño de 4 modelos de aplicaciones robot móviles:
1. Estación meteorológica móvil geolocalizada con posicionamiento controlado por usuario.
2. Estación meteorológica con movimiento autónomo y capacidad de evitación de obstáculos.
3. Control háptico, mediante la integración de Android con ROS, de robot móvil
4. Robot móvil autónomo con capacidad de evitación de obstáculos en el sentido de la marcha.
Integración de ROS (Robot Operating System) con las plataformas Arduino y Raspberry PI y Diseño de Control para Robot móvil
1. Control de robot móvil basado en Arduino y
Raspberry PI
Integración de ROS (Robot Operating
System) con Arduino y Raspberry PI
Álvaro Ángel Romero Gandul
Jesús Vico Serrano
2. ÍNDICE
1. INTRODUCCIÓN
2. ESTADO DEL ARTE
1. ESTADO DEL ARTE
2. ESTADO DEL ARTE II : CONCLUSIONES
3. ESTADO DEL ARTE III : SOLUCIÓN ADOPTADA
3. PLATAFORMAS : CARACTERÍSTICAS
4. ROS
1. ROS : INTRODUCCIÓN
2. ROS II : FEATURES
3. ROS III : CONCEPTOS BASICOS
4. ROS IV: ESQUEMA DE FUNCIONAMIENTO
5. INSTALACIÓN
6. ROBOT OBJETIVO
7. MODELO 1
8. MODELO 2
9. CONCLUSIONES
4. ESTADO DEL ARTE
Control mediante
Microcontroladores
Ejemplos :
PIC
PLC
Motorola HC8000
Ventajas
•Control de tiempo de
ejecución
•Mayor especialización
•Integración
•Recursos dedicados
Inconvenientes
•Mayor coste
•No placas de propósito
general
•Software privativo
Control basado en
Arduino
Arduino Mega ADK:
hardware y software libre
Ventajas
•Numerosos pines I/O
•Pines digitales y analógicos
•Facilidad de
programación
•Placa de propósito general
Inconvenientes
•Frecuencia de reloj
•Versatilidad en lenguajes
•Control de tiempo de
ejecución
•Memoria de programa
Control Raspberry Pi
Placa de propósito
general con
arquitectura ARM6.
S.O GNU/Linux
Ventajas
•Control total a bajo nivel
de cada pin I/O
•Lenguaje de
programación sencillo y
orientado a objetos
•Simplicidad de desarrollo
•Entorno amigable
Inconvenientes
•Pines de propósito general
reducidos
•Nivel digital de 3,3V
•Requisitos de alimentación
•Robustez
•Capacidad de
procesamiento
Control basado en
Rasp. Pi + Arduino
Se compensan
limitaciones de ambas
plataformas por
separado
Ventajas
•Multiples y variadas
interfaces
•Comunicación entre
placas
•Entorno amigable
•Posibilidad de instalación
de SO especializado
Alternativas estudiadas en cuanto a plataformas de control y
programación de robots
5. ESTADO DEL ARTE II : CONCLUSIONES
La solución adoptada, basada en las plataformas Arduino + Raspberry Pi,
ofrece un marco de desarrollo de bajo coste , propósito general y gran
flexibilidad.
Problemas
Comunicación entre ambas placas
Niveles lógicos diferentes en puertos serie y pines digitales ( 3,3V vs 5V)
Riesgo real de inutilización de pines dedicados en Raspberry Pi
Solución
Arquitectura
basada en Linux
SO libres
especializados
en control de
robots
Middleware
para
comunicaciones
7. PLATAFORMAS : CARACTERÍSTICAS
Sistema Operativo: Linux
ARM Raspbian wheezy (
basado en Debian)
Alimentación : 5V 3.5W
CPU: ARM1176JZF-S
700Mhz
GPU: Broadcom
VideoCore IV
Memoria RAM: 512 MB
compartidos con GPU
Almacenamiento:
Tarjeta de memoria SD
de 8 GB
Interfaces
1 puerto Ethernet RJ-45
100Mbps.
2 puertos USB 2.0
Microcontrolador: ATmega2560
Alimentación: 5V
Entrada: 7-12V
Límites (max): 5.5-16V
Pines digitales: 54 (14 con PWM)
Pines analógicos: 16
Corriente por pin: 40 mA
Corriente sobre pin 3,3V: 50 mA
Memoria Flash (programa): 256 KB (8 KB
usados para el bootloader)
SRAM: 8 KB
EEPROM: 4 KB
Reloj: 16 MHz
1 micro USB
1 puerto HDMI
1 puerto 3.5MM Audio
(Jack)
1 interfaz RCA video
Conector CSI para
cámara
1 cabecera JTAG
1 puerto DSI para
display digital.
8 pines de propósito
general.
Interfaz SPI
Interfaz I2C
Interfaz UART
Raspberry
PI
Arduino
MEGA ADK
8. ROS : INTRODUCCIÓN
•ROS (en inglés Robot Operating System, ROS) o Sistema
Operativo Robótico, es un framework para el desarrollo de
software para robots que provee la funcionalidad de un
sistema operativo en un clúster heterogéneo
¿Qué es?
•ROS provee los servicios estándar de un sistema operativo tales
como abstracción del hardware, control de dispositivos de bajo
nivel, implementación de funcionalidad de uso común, paso
de mensajes entre procesos y mantenimiento de paquetes
•ROS proporciona librerías y herramientas para ayudar a los
desarrolladores de software a crear aplicaciones robóticas,
abstracción de hardware, los controladores de dispositivo,
bibliotecas, visualizadores, paso de mensajes, gestión de
paquetes y más, bajo licencia de código abierto BSD
¿Para qué sirve?
9. ROS II (FEATURES)
Middleware de
comunicaciones
Abstracción a
alto nivel
Publicador/
subscriptor
Rviz
Rqt
Herramientas Shell
Rosbag
Rosserial
Tutoriales
Navegación
Lenguaje de
descripción de
robot
Diagnóstico
HerramientasComunicación
Paquetes
específicos
Características
especiales
10. ROS III (CONCEPTOS BÁSICOS)
Roscore
El servicio roscore está constituido por una serie de nodos y programas que son
pre-requisitos del sistema base ROS. Se ha de tener una instancia de roscore
funcionando para que los nodos de ROS puedan comunicarse
Nodos
Un nodo es un proceso que realiza la computación.
Son entidades ejecutadas en el sistema que implementan la rutina de control
del robot
Topics
Son buses a través de los cuales se intercambian mensajes entre los nodos.
Si un nodo está interesado en un tipo de dato en concreto se subscribe al topic
en cuestión
11. ROS IV: ESQUEMA DE FUNCIONAMIENTO
Topic A
NODO A
Topic B
Topic C
Topic A
Topic B
Topic C
NODO B
Nodo
Publicador/suscriptor
Topic
12. Basado en Debian
Wheezy
Raspi Config
Configuración de
interfaz de red WLAN y
XDRP
Actualización de
paquetes
Tipos de instalación:
•Desde fuente (svn)
•Desde repositorio (binary
packages)
Rosserial Arduino
Inexistencia de
retrocompatibilidad
entre versiones
Repositorios
desactualizados
Soporte limitado para
versiones no recientes
INSTALACIÓN
Gestión mediante
SSH
Gestión mediante
escritorio remoto
13. ROBOT OBJETIVO
Cebekit C-8090
Robot móvil de 6
ruedas
Dos motores DC
con 170rpm de
velocidad
nominal
Alimentación
mediante baterías
(6V por motor)
Grupo reductor
independiente
14. MODELO 1
Diseño de aplicaciones móviles robot utilizando las características y
funcionalidades de la asociación Raspberry PI + Arduino + ROS
Aspectos principales
Sensores
Android
Sensores i2c
Sensores
genéricos
Integración
de cámara
on-board
Control PWM
Nodo Ras.Pi
• Rutinas de control
• Publicación y
subscripción
Nodo Arduino
• Publicación datos
sensores
• Rutinas de
actuación
• Migración de paquetes del
núcleo a Github
• Nuevo sistema de construcción
de paquetes Catkin (sustituye a
rosbuild)
• Nuevas herramientas: GUI-rqt
• Resideño de rviz
• Reescritura de librerías pluginlib y
class_loader
• Pluggins c++
• Herramientas que no usan
Catkin
• Transición del entorno Wt a Qt
15. MODELO 1.1 : DESCRIPCIÓN
Estacion meteorológica móvil geolocalizada
Sistema controlado en entorno WLAN
Sensores que usan el bus i2c
Temperatura
Humedad
Presión
Localización GPS facilitada por Smartphone Android
El usuario indica coordenadas GPS a las que desea enviar la estación
Funcionamiento controlado por sensor lumínico de Smartphone Android
Cámara On-Board
Funcionalidad de Streaming y captura de imágenes
Integración
Android Sensor
Driver
Creación
paquete ROS
•Custome message
•Integración Raspberry
PI Camera
•Librerías Arduino
Programación
C++ Nodo
Arduino
•Publicadores para los
datos de sensores i2c
•Subscriptores al nodo
controlador
•Actuación PWM
Programación
C++ Nodo
Rasperry PI
•Publicadores y
subscriptores
•Algoritmos de alcance de
posición GPS
Wheater Shield
Raspberry PI Camera
16. MODELO 1.1: ESQUEMA DE FUNCIONAMIENTO
Publicación Tópic Android/Illuminance (Sensor lumínico)
Publicación Tópic Android/NavSatFix (GPS)
Subscriptor a
Android/Imu
Publicación Tópic Android/Imu (Acelerómetro)
Subscriptor a
Android/Illuminance
Subscriptor a
Android/NavSatFix
Publicador
Topic
Opcion
Publicador
Topic
Velocidad
Subscriptor
Topic Opcion
Subscriptor Topic
velocidad
Publicador Topic
i2c
NODO
RASPBERRY PI
Raspberry
Camera
NODO
ARDUINO
Custom Message
• 3 Float32
• Temperatura
• Humedad
• Presión
Float32
Velocidad PWM
Giro de los motores
18. MODELO 1.2 : DESCRIPCIÓN
Estación meteorológica móvil
Funcionamiento autónomo
Implementación de algoritmo de evitación de obstáculos en
el sentido de la marcha
5 sensores de ultrasonido HC-SR04
Funcionamiento controlado por sensor lumínico de Smartphone Android
Las condiciones de baja luminosidad determinarán su
funcionamiento
Cámara On-Board
Funcionalidad de Streaming y captura de imágenes
Medida y
publicación de
distancias
Subscripción y
ejecución de
algoritmo de
control
•NODO Raspberry Pi
•Algoritmo de evitación
de obstáculos
•Publicación de señal
PWM
•Captura de imágenes
•NODO Arduino
NODO Arduino
•Actuación PWM
•Actuación sobre el
sentido de la marcha
•Publicación datos
meteorológicos
Raspberry PI Camera
19. MODELO 1.2 : ESQUEMA DE FUNCIONAMIENTO
Publicación Tópic
Android/Illuminance
(Sensor lumínico)
Subscriptor
Topic Opcion
Subscriptor Topic
velocidad
Publicador Topic
i2c
Subscriptor a
Android/Illuminance
Publicador
Topic
Opcion
Publicador
Topic
Velocidad
NODO
RASPBERRY PI
Raspberry
Camera
Subscriptor
Topic
Distancias
Publicador
Topic
Distancias
NODO
ARDUINO
Float32
Velocidad PWM
Giro de los motores
Trigger + echo x5 ( digital)
010101101
101010101
21. MODELO 2
Se basa en el control de un robot móvil haciendo uso de la plataforma
Ras.Pi +Arduino y las posibilidades que ROS ofrece.
Aspectos a tener en cuenta:
Control PWM
Uso de sensores
integrados en
smartphone
Sensores
integrados en PCB
customizada
Nodo A Rasp.Pi
• Ejecución de rutina de control en
función de datos de nodos
remotos
• Publicación de señales para
actuadores
• Frecuencia de ejecución de rutina
: 5 Hz
Nodo B Arduino Mega ADK
• Gestión de señales de control
para actuadores
• Tratamiento de señales de
sensores y publicación de las
mismas
ROS Fuerte
22. Instalación de
aplicación ROS
Android
Publicación de
datos de
sensores
Procesamiento
por parte de
Nodo A de datos
de acelerómetro
Publicación de
señales PWM
Gestión de
señales por parte
de Arduino y
activación de
actuadores
MODELO 2.1 : DESCRIPCIÓN
Control de robot móvil desde smartphone Android.
23. MODELO 2.1 : ESQUEMA DE FUNCIONAMIENTO
Esquema de funcionamiento
Publicación Tópic
Android/IMU
(acelerómetro)
Hacia IP 192.168.1.X IP 192.168.1.X
Suscriptor a Topic
Android/IMU
Aceleración lineal X, Y, Z
Publicación Topic Opción Publicación Topic Velocidad PWM
Motor izqd IN/ Motor der IN
Velocidad PWM
Suscriptor Topic Opción Suscriptor Topic Velocidad PWM
0101010101
0101010101
Float32Float32
24. MODELO 2.1: MONTAJE REALIZADO
Montaje realizado y establecimiento de escenario
Puente H como driver para los motores
Batería de 12 voltios para alimentación
25. MODELO 2.2: DESCRIPCIÓN
Robot evitador de obstáculos
Arduino Arduino Rasp.Pi Rasp.Pi Arduino
5 sensores HC-SR04
2 sensores LDR
Medida de
distancia a
obstáculos y
luminosidad
Publicación de
datos hacia
nodo A
Ejecución de
algoritmo de
control
Publicación de
señales PWM
Gestión de
señales por parte
de Arduino y
activación de
actuadores
El control implementado dota al
robot de la capacidad de
evitación de obstáculos en su
marcha hacia delante.
La activación del mismo se
puede configurar para
establecerse en condiciones de
alta y baja luminosidad
26. MODELO 2.2 : ESQUEMA DE FUNCIONAMIENTO
Suscriptor
Topic
Distances
Motor izqd IN/ Motor der IN
Trigger + echo x5 ( digital)
Publicador Topic Opción
010101101
101010101
Float32
LDR, Luminosidad x2 (analógico)
Float32
Publicador
Topic
Distances
Mensaje
distances
Suscriptor Topic Opción
Suscriptor Topic Velocidad
PublicadorTopic
Velocidad
Generación
de mensaje
customizado
5xFloat 32 para la
distancia a objetos de
cada sensor
2 x Float 32 para la
luminosidad captada
por cada LDR
27. MODELO 2.2 : PLACA PCB
Para el rutado de las señales provenientes de sensores y hacia los
actuadores se ha diseñado un shield para Arduino customizado para este
propósito en el que se ha incluido toda la cirucuitería necesaria para el
funcionamiento del modelo en una placa de circuito impreso (PCB)
Diseño de
schematic
Diseño del Layout
Impresión de PCB
y montaje de
componentes
28. MODELO 2.2 : RESULTADO FINAL
Montaje final Funcionamiento
29. CONCLUSIONES
En la programación de Robots móviles, encontramos en ROS una herramienta de gran potencia
en cuanto nos ofrece un framework de programación de alto nivel para ciertas funciones las
cuales suponen una complejidad añadida, y pasan a ser transparentes para al programador.
Todo esto, haciendo uso de una plataforma libre instalable sobre cualquier máquina capaz de
correr un sistema operativo GNU/Linux.
ROS consta de herramientas muy útiles a la hora de programar funciones clave como la
comunicación entre procesos, la encapsulación y la reconstrucción de mensajes, así como la
posibilidad de generación de librerías para poder construir fácilmente mensajes customizados
de información a intercambiar entre los diferentes nodos del robot
En cualquier caso la finalización de este proyecto, más que representar un final como tal, va
mucho más allá y abre las puertas a unas más que interesantes líneas de investigación y
desarrollo que podrían llegar a ser muy útiles de cara a interés personal pero sobre todo abre un
sinfín de posibilidades de cara a su continuación y/o trabajo sobre las bases establecidas para la
Universidad:
Realización de laboratorios en el ámbito del control y programación de robots.
Líneas de desarrollo y programación de aplicaciones robot.
Investigación y desarrollo de aplicaciones más complejas y completas.
Impartición y aprendizaje de nuevos conocimientos a nivel de software y hardware