PDF de programación - Virtualización ligera para sistemas embebidos con aplicaciones robóticas usando ROS y Docker

Imágen de pdf Virtualización ligera para sistemas embebidos con aplicaciones robóticas usando ROS y Docker

Virtualización ligera para sistemas embebidos con aplicaciones robóticas usando ROS y Dockergráfica de visualizaciones

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´
  • Links de descarga
http://lwp-l.com/pdf17541

Comentarios de: Virtualización ligera para sistemas embebidos con aplicaciones robóticas usando ROS y Docker (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad