VOLUME V, NUMBER 1
REPORTS ON SYSTEMS AND COMMUNICATIONS
Open-R: un enfoque práctico
FRANCISCO MARTÍN RICO
Móstoles (Madrid), Spain, Dic. 2004
Depósito Legal: 50653-2004
ISSN: 1698-7489
Autor:
Francisco Martín Rico -
[email protected]
Se autoriza la copia y distribución, sin ánimo de
lucro de este libro. Así mismo las copias deberán
citar expresamente el nombre de los autores y de la
obra que forme parte,e incluir esta nota. No se
autoriza a ninguna forma de modificación o
transformación de texto, sin consentimiento de los autores.
Licencia Creative Commons
2
Francisco Martín Rico
Índice general
.
.
.
.
.
1. Helloworld: Mi primer programa con Open-R
.
.
.
.
.
.
1.1. Aplicaciones Open-R . . . .
.
.
1.2. Obteniendo los fuentes de HelloWorld .
.
1.3. Entendiendo HelloWorld . .
.
.
.
1.3.1. Código del objeto . .
1.3.2.
.
.
1.3.3. Compilando, instalando y ejecutando .
.
.
.
.
.
.
1.4. Ejercicio: Compilación e instalación de Helloworld en el robot AIBO .
.
.
.
.
Iniciando el Memory Stick .
1.4.1. Enunciado . . . . .
1.4.2. Cuestiones
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. Comunicaciones entre objetos Open-R
.
.
.
.
.
.
.
.
.
.
.
.
.
2.2.1.
2.2.2.
stub.cfg del SampleSubject
stub.cfg del SampleObserver
2.1. Sujetos y observadores . . .
.
2.2. Definiendo los manejadores de los mensajes .
.
.
.
.
.
.
.
.
.
.
.
2.3. Declarando las comunicaciones en la cabecera .
.
2.4.
.
.
.
2.5. Enviando y recibiendo datos
.
.
2.5.1. Envío de datos
. . .
.
2.5.2. Recepción de datos .
.
2.6. Comunicando objetos . . . .
.
.
2.7. Ejercicio: Comunicación entre objetos Open-R .
.
.
Iniciando y parando la comunicación .
.
.
.
.
2.7.1. Enunciado . . . . .
. . . . .
2.7.2. Cuestiones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Sensores
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
3.3. Seleccionando el sensor . . . .
.
3.4. Ejemplo de lectura de sensores .
3.2.1. OSensorFrameInfo .
3.2.2. OSensorFrameData .
.
.
3.4.1. SensorObserver7.h .
3.4.2. SensorObserver7.cc .
3.1. Seleccionando el subject
.
3.2. El formato de datos OSensorFrameVectorData .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.5. Ejercicio: Lectura de los valores de los sensores .
.
.
3.5.1. Enunciado . . . . .
3.5.2. Cuestiones
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
9
10
11
12
12
12
13
13
14
15
16
16
17
18
18
19
20
20
20
20
21
21
21
22
22
22
23
23
25
30
30
30
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ÍNDICE GENERAL
4. Actuadores
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4.3.
.
.
.
.
.
.
.
.
.
.
.
.
OCommadInfo . .
OCommandData .
4.1. Seleccionando el subject
.
4.2. El formato de datos OCommandVectorData .
.
.
.
.
.
.
.
.
.
4.2.1.
.
.
4.2.2.
.
.
Inicialización de los actuadores .
.
4.3.1. Conseguir los ID de primitivas .
.
4.3.2. Configurar las ganancias de las articulaciones .
.
4.3.3. Calibrar las articulaciones
.
.
4.3.4. RCRegions . . . . .
4.4. Dándole valor a un actuador
.
.
.
.
4.5. Poniendo todo junto . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
4.5.1. MovinLegs7.h completo .
.
4.5.2. MovinLegs7.cc completo .
4.6. Ejercicio: Movimiento de actuadores .
.
.
4.6.1. Enunciado . . . . .
4.6.2. Cuestiones
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Visión en AIBO
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.1. Configuración de la cámara .
5.2. Principios básicos . . . . . .
.
5.3. Obtención de información de la cámara
.
.
.
5.3.1. El tipo de datos OFbkImageVectorData .
.
.
.
.
.
.
5.4.1. Obteniendo una imagen completa a resolución máxima .
.
.
.
.
5.5.1. Configurando un canal de color
.
5.4. Accediendo a las bandas de color .
5.6. OpenCV en el aibo . . . . .
5.5. detección de color . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Programación de red con Open-R
6.1. Conceptos básicos para usar la pila de protocolos en Open-R .
.
.
.
.
.
6.1.1. Creación de enpoints .
6.1.2. Creación de los buffer de memoria compartida .
.
6.1.3. Solicitud de servicios de red .
.
.
6.2. Conectándose con TCP . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7. Remote Processing
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7.1. Creación de una aplicación con TCP Gateway .
7.1.1. Creación de la estructura de directorios
.
7.1.2. Compilando de manera separada .
.
7.1.3. Configuración de TCP Gateway .
7.1.4. Ejecución de la aplicación .
.
.
.
.
.
.
.
.
.
.
.
.
7.2. Depurar un proceso Open-R ejecutándose en el PC con Gdb .
.
7.3. Crear una interfaz GTK+ a un proceso Open-R ejecutándose en el PC .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
33
34
34
34
34
35
36
36
38
39
40
42
46
46
46
47
47
48
48
48
49
51
52
53
55
59
60
60
61
62
63
69
71
71
72
74
76
76
80
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
Francisco Martín Rico
Índice de figuras
2.1. Los objetos se comunican entre sí por paso de mensajes .
.
2.2. Flujo de comunicación entre objetos .
2.3. Comunicaciones en una core class .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.1. Formato de datos OSensorFrameVectorData .
4.1. Formato de datos OCommandVectorData .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
luminosidad . . . . . . . . .
5.1. Cada 4 píxeles comparten las mismas características de color, pero no las de
.
.
.
.
Imagen salvada en rgb, en escala de grises, filtrada con un filtro de Canny y
filtrada con un filtro Laplaciano .
.
.
.
5.2. Formato de datos OFbkImageVectorData
.
5.3. Representación en 3D de los rectángulos en el espacio (Y, Cr, Cb)
5.4. Estructura de datos OCdtVectorData .
.
5.5.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6.1. Los objetos crean endpoint dentro del objeto ANT .
.
6.2. El buffer de memoria compartida es mapeada en los espacios de direcciones del
.
objeto de usuario y de la pila de protocolos
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7.1. Comunicación entre objetos con Open-R .
.
7.2. Esquema de comunicación correcta .
7.3. Esquema de comunicación erroneo .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
14
14
22
33
48
49
53
54
57
61
62
69
75
75
ÍNDICE DE FIGURAS
6
Francisco Martín Rico
Capítulo 1
Helloworld: Mi primer programa con
Open-R
Como en todos los libros en los que se aprende a programar en cualquier lenguaje de progra-
mación, para realizar un “rápido desembarco” en el nuevo entorno vamos a explicar un ejemplo
sencillo, que será el típico “Hello World”.
Daremos por supuesto que tenemos instalado el entorno Open-R, cuyo proceso de configu-
ración está detallado en [2].
1.1. Aplicaciones Open-R
Las aplicaciones Open-R esta formado por uno o varios objetos Open-R. Cada objeto Open-
R es un único proceso mono-hilo, que se ejecuta concurrentemente con otros objetos Open-R
.
Normalmente se organiza el código de los programas en distintos subdirectorios, uno para
cada objeto Open-R . Esto hace que sea mucho más limpio el desarrollo de aplicaciones.
Dicho esto, comenzaremos paso a paso con nuestro ejemplo.
1.2. Obteniendo los fuentes de HelloWorld
En la página de Open-R podemos descargarnos una paquete llamado samples que contie-
ne códigos de ejemplo.
Comentarios de: Open-R: un enfoque práctico (0)
No hay comentarios