Publicado el 18 de Abril del 2020
886 visualizaciones desde el 18 de Abril del 2020
1,2 MB
64 paginas
Creado hace 8a (17/01/2016)
Administración de Sistemas
Virtualizaci ón ligera para sistemas
embebidos con aplicaciones
rob óticas usando ROS y Docker
Ander Granado Masid
17 de enero de 2016
Índice general
I.
Introducci ón
1. Objetivo
2. Herramientas utilizadas
2.1.1. Raspberry Pi
2.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1.1. Funcionamiento de Docker . . . . . . . . . . . . . . . .
2.2.2. ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Docker
II. Docker
1
2
3
3
3
4
5
5
5
7
3.
Introducci ón a Docker
3.1.
3.2. Uso básico de Docker
Instalación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
9
3.2.1.
run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.2. ps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.3.
3.2.4. stop y kill
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.5.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
images y rmi
3.2.6.
3.3. Creación de Dockerfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4. Profundizar en Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
inspect
II
Índice general
III
4. Redes en Docker
17
4.1. Redes básicas en Docker . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1. docker0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.2. Prueba de conexión entre contenedores . . . . . . . . . . . . . . 18
4.1.2.1. ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2.2. netcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.3. Links entre contenedores . . . . . . . . . . . . . . . . . . . . . . 21
4.2. Redes avanzadas con Docker . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1. network de Docker . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1.1. Prueba de network . . . . . . . . . . . . . . . . . . . . 22
4.2.2. Redes Multi-Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Instalación de Swarm . . . . . . . . . . . . . . . . . . . 24
4.2.2.1.
4.2.2.2. Creación de un Swarm . . . . . . . . . . . . . . . . . . 25
4.2.2.3. Lanzar el Swarm manager
. . . . . . . . . . . . . . . . 27
4.2.2.4. Configurar el Swarm y lanzar contenedores . . . . . . . 29
4.3. Configuración manual de redes . . . . . . . . . . . . . . . . . . . . . . . 32
III. ROS
34
5.
Introducci ón a ROS
35
5.1. Entorno de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2. Uso de ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.3. Gestionar paquetes ROS . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.1. Crear paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.2. Compilar paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.4. Modelo distribuido Publisher-Subscriber . . . . . . . . . . . . . . . . . . 38
6. Prueba con nodos ROS
39
6.1. Código de la prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.1.1. Publisher
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.1.2. Subscriber
6.1.3. CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2. Construir el paquete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3. Ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
IV.
Implementaci ón del sistema
46
7. Creaci ón del sistema
47
7.1. Crear el sistema con Docker
. . . . . . . . . . . . . . . . . . . . . . . . 49
7.2. Aplicaciones para el sistema . . . . . . . . . . . . . . . . . . . . . . . . 51
7.2.1. Obtener imágenes de una Webcam . . . . . . . . . . . . . . . . 51
7.2.2. Otras aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Ander Granado Masid
III
Índice general
V. Conclusiones
IV
55
8. Conclusiones
56
8.1. Sobre Docker y ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.2. Sobre la asignatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Ander Granado Masid
IV
Índice de figuras
4.1.
4.2.
Imágenes GNU/Linux creadas . . . . . . . . . . . . . . . . . . . . . . . 27
Imágenes GNU/Linux creadas para el Swarm . . . . . . . . . . . . . . 29
5.1. Modelo Publisher-Subscriber . . . . . . . . . . . . . . . . . . . . . . . . 38
7.1.
7.2.
7.3.
7.4.
Esquema del sistema en un ordenador x86 . . . . . . . . . . . . . . . . 48
Esquema del sistema en una Raspberry Pi . . . . . . . . . . . . . . . . 49
Activación de la Webcam en VirtualBox . . . . . . . . . . . . . . . . . . 51
Ventana con la imagen de la Webcam . . . . . . . . . . . . . . . . . . . 53
V
Parte I.
Introducci ón
1
1
Objetivo
En el siguiente documento tiene como objetivo desarrollar un sistema virtualizado
para controlar un vehículo robótico. Este sistema dispondrá de diferentes módulos
que estarán conectados entre sí e interactuarán entre ellos. Para desarrollarlo se
hará uso de ROS y Docker. El sistema estará pensado para funcionar dentro de
una Raspberry Pi. En el siguiente capítulo se explicará en profundidad todas las
herramientas que usaremos para desarrollarlo, tanto de hardware como de software.
2
2
Herramientas utilizadas
2.1. Hardware
Aunque el vehículo dispone de numeroso hardware, en esta sección solo hablare-
mos sobre el hardware para el cual nosotros vamos a programar. En este caso todo
nuestro sistema se montará en una Raspberry pi, aunque el desarrollo del sistema lo
haremos en los PCs con arquitectura x86.
2.1.1. Raspberry Pi
Raspberry Pi es un ordenador de placa reducida que debido a us bajo coste (35 $)
y su pequeño tamaño, es ampliamente usado en sistemas de bajo coste, sistemas
embebidos o en entornos educativos. Existen dos principales modelos, la Raspberry
Pi y la Raspberry Pi 2. La Raspberry Pi a su vez cuenta con 4 diferentes submodelos,
el A, el A+, el B y el B+.
Aunque cuenta con diferentes submodelos con diferentes especificaciones, las ca-
racterísticas generales de la Raspberry Pi son [Wikimedia Foundation Inc.(5 de Oc-
tubre de 2015)]:
SoC (System on Chip) Broadcom BCM2835:
• CPU ARM 1176JZF-S a 700 MHz single-core (familia ARM11)
• GPU Broadcom VideoCore IV (OpenGL ES 2.0, MPEG-2 y VC-1, 1080p30
H.264/MPEG-4 AVC3)
Memoria SDRAM: 256 MB (en el modelo A) o 512 MB (en el modelo B), com-
partidos con la GPU
Puertos USB 2.0: 1 (en el modelo A), 2 (en el modelo B) o 4 (en el modelo B+)
10/100 Ethernet RJ-45 (en el Modelo B)
3
CAPÍTULO 2. HERRAMIENTAS UTILIZADAS
4
Salidas de video:
• Conector RCA (PAL y NTSC)
• HDMI (rev1.3 y 1.4)
• Interfaz DSI para panel LCD
Salidas de audio:
• Conector de 3.5 mm
• HDMI
Puertos GPIO: 8 o 17 (en el caso de las versiones +)
El segundo modelo de Raspberry Pi, conocido como Paspberry Pi 2, añade mejo-
ras notables con respecto a la anterior generación. Sus características básicas son:
SoC Broadcom BCM2836:
• 900 MHz quad-core ARM Cortex A7
• GPU Broadcom VideoCore IV (OpenGL ES 2.0, MPEG-2 y VC-1, 1080p30
H.264/MPEG-4 AVC3)
1GB memoria SDRAM, compartida con la GPU
4 puertos USB 2.0
10/100 Ethernet RJ-45
Salidas de video:
• Conector RCA (PAL y NTSC)
• HDMI (rev1.3 y 1.4)
• Interfaz DSI para panel LCD
Salidas de audio:
• Conector de 3.5 mm
• HDMI
17 puertos GPIO
2.2. Software
Para lograr dicho objetivo anteriormente descrito, se hace uso de una serie de
herramientas, entre las cuales se incluye Docker y ROS.
Ander Granado Masid
4
CAPÍTULO 2. HERRAMIENTAS UTILIZADAS
5
2.2.1. Docker
Docker es una plataforma abierta para aplicaciones distribuidas para desarrollado-
res y administradores de sistemas [Docker Inc.(29 de Septiembre de 2015)]. Docker
automatiza el despliegue de contenidos de software proporcionando una capa adi-
cional de abstracción y automatización de virtualización a nivel de sistema operativo
en Linux [Wikimedia Foundation Inc.(29 de Septiembre de 2015a)]. Docker utiliza
características de aislamiento de recursos del kernel de Linux,
2.2.1.1. Funcionamiento de Docker
Docker se basa en el el principio de los contenedores. Cada contenedor consta
de una serie de aplicaciones y/o librerías que se ejecutan de manera independien-
te del OS (Sistema Operativo) principal, pero que usan el kernel Linux del sistema
operativo anfitrión. Para hacer esto se hacen uso de diferentes técnicas tales como
cgroups y espacios de nombres (namespaces) para permitir que estos contenedores
independientes se ejecuten dentro de una sola instancia de Linux. De esta manera
se logra reducir drásticamente el consumo de recursos de hardware, a cambio de
que las librerías, aplicaciones o sistemas operativos deban ser compatibles con linux
y ser compatibles con la arquitectura del hardware en la que se están ejecutando
(x86, ARM, SPARC,...).
Mediante el uso de contenedores, los recursos pueden ser aislados, los servicios
restringidos, y se otorga a los procesos la capacidad de tener una visión casi com-
pletamente privada del sistema operativo con su propio identificador de espacio de
proceso, la estructura del sistema de archivos, y las interfaces de red. Los conte-
nedores comparten el mismo kernel, pero cada contenedor puede ser restringido a
utilizar sólo una cantidad definida de recursos como CPU, memoria y E/S. [Wikimedia
Foundation Inc.(29 de Septiembre de 2015a)].
2.2.2. ROS
ROS (Robot Operating System) es un framework flexible para desarrollar software
para robots. Es una colecci´
Comentarios de: Virtualización ligera para sistemas embebidos con aplicaciones robóticas usando ROS y Docker (0)
No hay comentarios