33
PFC: Localización de robots mediante filtro de Kalman Sergio Pereira Ruiz Página 57 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓN El Roomba Open Interface (OI) es un software para controlar y manipular el comportamiento de la Roomba. Este software te permite manipular el comportamiento de la Romba y leer sus sensores a través de una serie de comandos, como son comandos de de modo, comandos de actuación, comandos de sonidos y comandos de sensores, que se envían a través del puerto serie de la Roomba conectando un PC o un micro controlador al conector Mini-Din de la aspiradora. 5.2.- CONEXIONES FÍSICAS Para usar el OI, un procesador como un PC o un micro controlador capaces de generar comandos series, debe ser conectado a la conexión Mini-Din de la Roomba. El conector también proporciona una conexión directa a la batería de la aspiradora, la cual se puede usar para aplicaciones de OI de Power y está localizado en la parte superior tras la carcasa de adorno. 5.3.- PINES DEL CONECTOR PUERTO SERIE MINI-DIN La figura muestras los pines vistos desde arriba del conector hembra en la Roomba.

5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 57

5. - IROBOT ROOMBA OPEN INTERFACE (ROI)

5.1.- INTRODUCCIÓN

El Roomba Open Interface (OI) es un software para controlar y manipular el

comportamiento de la Roomba. Este software te permite manipular el

comportamiento de la Romba y leer sus sensores a través de una serie de

comandos, como son comandos de de modo, comandos de actuación, comandos

de sonidos y comandos de sensores, que se envían a través del puerto serie de la

Roomba conectando un PC o un micro controlador al conector Mini-Din de la

aspiradora.

5.2.- CONEXIONES FÍSICAS

Para usar el OI, un procesador como un PC o un micro controlador capaces de

generar comandos series, debe ser conectado a la conexión Mini-Din de la

Roomba. El conector también proporciona una conexión directa a la batería de la

aspiradora, la cual se puede usar para aplicaciones de OI de Power y está

localizado en la parte superior tras la carcasa de adorno.

5.3.- PINES DEL CONECTOR PUERTO SERIE MINI-DIN

La figura muestras los pines vistos desde arriba del conector hembra en la

Roomba.

Page 2: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 58

Figura 32. Pines del conector Mini-Din

Los pines de TX y RX usan voltajes de 0-5V y el puerto serie del PC usa diferentes

niveles de tensión (niveles RS232), por lo que es necesario cambiarlos. Para ello

es necesario un cable serie DB-9, un adaptador para la Roomba (ya sea de puerto

serie del PC a puerto de la Roomba, o puerto usb del PC al puerto Roomba) y un

cable que va del adaptador al conector Mini-Din.

5.4.- CARACTERÍSTICAS DEL PUERTO SERIE

• Baudios: 115200 ó 19200

• Bit de datos: 8

• Paridad: Ninguna

• Bits de stop: 1

Page 3: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 59

• Control de flujo: Ninguno

Por defecto la Roomba se comunica a 115200 baudios. En nuestro caso los motes

van a trabajar a 19200 baudios, por lo que para forzar la Rommba hay 2 métodos:

• Método 1:

Cuando se enciende la Roomba mantener pulsado el botón Clean/Power.

Después de 10 segundos se escuchará un sonido descendente. La Roomba ya se

comunicará a 19200 baudios hasta que se apague, se gaste la batería o se

cambie específicamente con el OI.

• Método 2:

Usando el pin 5 del conector Mini-Din. Una vez encendida la Roomba esperar 2

segundos y darle 3 pulsos bajos de entre 50 y 500 ms y la aspiradora se

comunicará a 19200 baudios.

5.5.- MODOS DE FUNCIONAMIENTO DEL ROOMBA OPEN INTERFACE

El OI de la Roomba tiene 4 modos de funcionamiento: Off, Passive, Safe y Full.

Después de un cambio de batería o cuando se enciende por primera vez, el OI

estará en modo “Off”. Al estar en modo “Off” el OI escucha por defecto a 115200 o

19200 según se ha configurado previamente. Una vez que la aspiradora recibe el

comando “Start” se pude cambiar de modo de operación mandando comandos OI.

Vamos a describir los modos.

• Modo Passive

Después de mandar el comando “Start” o algún comando de limpieza (por ejemplo

Spot, Clean, Seek Dook) el OI entra en modo Passive. En este modo se puede

solicitar y recibir datos de los sensores, pero no se pueden cambiar los parámetros

Page 4: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 60

actuales de los comandos de actuación (motores.luces, etc). Para poder hacerlo

se debe cambiar a modo “Full” o modo “Safe”.

• Modo Safe

Este modo te da control total de la aspiradora, excepto en las siguientes

condiciones de seguridad:

• Detección de un acantilado cuando va hacia delante

• Detección de la caída de una rueda

• Cargador conectado y la aspiradora cargando

Si alguna de las condiciones anteriores se produce mientras la aspiradora está en

modo Safe, la Roomba se detiene y vuelve al modo Passive.

Si no se envían comandos al IO en el modo Safe, Roomba espera con todos los

motores y los LEDs de apagados y no responde a las pulsaciones de botón o la

entrada de otros sensores.

• Modo Full

El modo Full te da control total de la aspiradora, la totalidad de sus actuadores y

todas las condiciones de seguridad que restringen cuando se está en modo Safe

(como la detección de acantilados), el modo Full las quita. Para volver al modo

Safe, se tiene que enviar un comando Safe.

Si no se envían comandos al IO en el modo Full, Roomba espera con todos los

motores y los LEDs de apagados y no responde a las pulsaciones de botón o la

entrada de otros sensores.

Page 5: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 61

5.6.- REFERENCIA DE COMANDOS DEL OPEN INTERFACE

La siguiente lista son los comandos del OI, cada comando empieza con un código

(1 byte)., Algunos comandos llevan bytes de datos. Pasamos a describirlos.

Comandos de inicio

Los siguientes comandos arrancan el OI y lo dejan listo para usar.

Start Opcode: 128 Data bytes: 0

Este comando arranca el OI. Se debe mandar antes de cualquier otro comando.

• Secuencia: [128]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive. Cuando se recibe la Rommba da un bepp para

saber que está en modo “Off”.

Baud Opcode: 129 Data bytes: 1

Este comando establece la tasa en bits/seg a la cual se envían los comandos y los

datos. Por defecto la comunicación es a 115200 baudios, pero manteniendo

pulsado el botón de Clean durante 10 segundos se cambia a 19200 baudios.

• Secuencia: [129][Baud Code]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Baudios Data Byte: Código de baudios (0-11)

Page 6: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 62

Tabla 6. Tasas envío en bps

Comandos de modo

La Roomba tiene 4 modos de funcionamiento: Off, Passive, Safe y Full. Cuando se

enciende la aspiradora estará en modo Off. Los siguientes comandos cambian el

modo de funcionamiento.

Safe Opcode: 131 Data bytes: 0

Este comando pone el OI en modo Safe, permitiendo al usuario el control de la

aspiradora. Apaga todos los LEDs. Para aceptar este comando el OI puede estar

en modo Passive, Safe o Full.

• Secuencia: [131]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Safe.

Full Opcode: 132 Data bytes: 0

Este comando pone el OI en modo Full, permitiendo al usuario el control total, la

aspiradora hace caso a cualquier comando que se le envíe, sin las restricciones

Page 7: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 63

de seguridad que hay el modo Safe. Si se le envía el comando [128] pasará a

modo Passive.

• Secuencia: [132]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Full.

Comandos de limpieza

Clean Opcode: 135 Data bytes: 0

Este comando arranca el modo de limpieza por defecto

• Secuencia: [135]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive.

Max Opcode: 136 Data bytes: 0

Este comando arranca el modo de limpieza Max.

• Secuencia: [136]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive.

Spot Opcode: 134 Data bytes: 0

Este comando arranca el modo de limpieza Spot

• Secuencia: [134]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive.

Seek Dock Opcode: 143 Data bytes: 0

Este comando manda la Roomba a su base

Page 8: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 64

• Secuencia: [143]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive.

Schedule Opcode: 167 Data bytes: 15

Este comando manda a la Roomba un nuevo horario de limpieza. Para

deshabilitarlo se manda todo ceros.

• Secuencia: [167][Días][Domingos horas][Domingos minutos]……[Sábado

Horas][Sábado minutos]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Formato de horas (0-23) y minutos (0-59)

Días

Bit 7 6 5 4 3 2 1 0

Valor Res S V J X M L D

Set Día/hora Opcode: 168 Data bytes: 3

Este comando configura el reloj de la aspiradora

• Secuencia: [168][Día][Hora][Minuto]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Formato de horas (0-23) y minutos (0-59)

Page 9: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 65

Tabla 7. Código de los días

Power Opcode: 133 Data bytes: 0

Este comando apaga la Roomba

• Secuencia: [133]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Passive.

Comandos de actuación

Los siguientes comandos actúan sobre las ruedas, la aspiradora, los cepillos, los

altavoces, los LEDs y los botones.

Drive Opcode: 147 Data bytes: 4

Este comando controla las ruedas motrices de la Roomba. Lleva 4 bytes de datos

interpretados como 2 cadenas de 16 bits en complemento A2. Los primeros 2

bytes indican la velocidad y los otros 2 el radio en milímetros con que gira la

Roomba. Un valor positivo de velocidad y radio hace que la aspiradora vaya hacia

delante y girando a la izquierda. Si se le da un valr de radio negativo girará hacia

la derecha.

• Secuencia: [147][Velocidad high byte][Velocidad low byte][Radio high

][Radio low]

Page 10: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 66

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Velocidad (-500 – 500mm/s)

• Radio (-2000 – 2000 mm/s)

• Casos especiales:

o Recto: 32768 ó 32767=hex 8000 ó 7FFF

o Girar a la derecha sobre si mismo = -1

o Girar a la izquierda sobre sí mismo = 1

Drive Direct Opcode: 145 Data bytes: 4

Este comando permite controlar el movimiento hacia delante o hacia atrás las

ruedas motrices de la aspiradora de forma independiente. Lleva 4 bytes de datos

interpretados como 2 cadenas de 16 bits en complemento A2. Los primeros 2

bytes indican la velocidad de la rueda derecha en mm/s y los otros 2 bytes

especifican la velocidad de la rueda izquierda. Un valor positivo hace que la rueda

gire hacia delante y un valor negativo hace que gire hacia atrás.

• Secuencia: [145][Velocidad derecha high byte][Velocidad derecha low

byte][Velocidad izquierda high byte ][Velocidad izquierda low byte]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Velocidad rueda derecha(-500 – 500mm/s)

• Velocidad rueda izquierda (-500 - 500 mm/s)

Drive PWM Opcode: 146 Data bytes: 4

Este comando permite controlar el movimiento primario hacia delante o hacia atrás

las ruedas motrices de la aspiradora con independencia. Lleva 4 bytes de datos

interpretados como 2 cadenas de 16 bits en complemento A2. Los primeros 2

Page 11: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 67

bytes indican el PWM de la rueda derecha y los otros 2 bytes especifican el PWM

de la rueda izquierda. Un valor positivo de PWM hace que la rueda gire hacia

delante y un valor negativo hace que gire hacia atrás.

• Secuencia: [146][Right PWM high byte][Right PWM low byte][Left PWM high

byte ][Left PWM low byte]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Rueda derecha PWM (-255 – 255)

• Rueda izquierda PWM (-255 -255)

Motors Opcode: 138 Data bytes: 1

Este comando permite el control de la velocidad del cepillo principal, el lateral y la

aspiradora de forma independiente. La velocidad del motor no puede ser

controlado con este comando, todos los motores arrancarán a la máxima

velocidad cuando se activen. El cepillo principal y el lateral pueden girar en

cualquier dirección, pero la aspiradora sólo gira hacia delante.

• Secuencia: [138][Motors]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Bits 0-2: 0=OFF, 1=ON ( a la maxima velocidad).

• Bits 3 y 4: 0 = Dirección por defecto de los motores, 1= Dirección contraria.

La dirección por defecto de los cepillos es la de las manillas del reloj.

Tabla 8. Bits que activan los motores de la Roomba

Page 12: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 68

PWM Motors Opcode: 144 Data bytes: 3

Este comando controla el movimiento hacia delante o hacia atrás del cepillo

principal de la Roomba, del cepillo lateral y de la aspiradora. Con cada byte de

datos, se especifica el ciclo de trabajo del lado del conductor baja (máx. 128). Por

ejemplo, si se quiere controlar un motor con un 25% del voltaje de la batería, se

elije un ciclo de trabajo de 128 * 25% = 32. El cepillo principal y cepillo lateral

pueden girar en cualquier dirección. La aspiradora sólo corre hacia adelante.

Velocidades positivas del motor hace que giren en su dirección por defecto

(limpieza). La dirección por defecto para el cepillo lateral es a la izquierda.

Dirección por defecto para el cepillo principal / trampa es hacia dentro.

• Secuencia: [144][Cepillo principal PWM][Cepillo lateral PWM][Aspiradora

PWM]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Ciclo de trabajo del cepillo principal y lateral (-127 - 127)

• Ciclo de trabajo de la aspiradora (0 – 127)

LED´s Opcode: 139 Data bytes: 3

Este comando controla los LED´s de la Roomba. El LED Claen/Power se

especifica por 2 bytes, uno para el color y otro para la intensidad.

• Secuencia: [139][LED bits][Clean/Power Color][Clean/Power Intensidad]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• LED bits (0-255)

Home and Spot usa LEDs verdes: 0 = off, 1 = on

Check Robot usa un LED naranja.

Debris usa un LED azul.

Page 13: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 69

Clean/Power usa un LED bicolor (rojo/verde) . La intensidad y el color de

este LED puede ser controlado con 8 bits.

LED bits (0-255)

Tabla 9. Bits que activan los led´s de la Roomba

Clean/Power LED Color (0-255)

0=verde, 1=rojo. Valores intermedios dan colores intermedios (naranja, amarillo,

etc).

Clean/Power LED Intensidad (0-255)

0=OFF, 1=intensidad completa. Valores intermedios dan intensidades intermedias.

Botones Opcode: 165 Data bytes: 1

Este comando permite pulsar los botones de la Rommba. El botón dejará de estar

pulsado después de 1/6 de segundo.

• Secuencia: [165][Buttons]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Buttons (0-255). 1=botón pulsado, 0= botón libre

Buttons

Tabla 10. Bits que activan los botones de la Roomba

Page 14: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 70

Song Opcode: 140 Data bytes: 2N+2 (N número de notas )

Este comando permite definir 4 canciones, que el OI usará más adelante en la

Roomba. Cada canción se asocia a un número. El comando Play usa el número

para hacer sonar la canción. Cada canción puede contener 16 notas.

• Secuencia: [140][Song Number][Song lenght][Nota 1][Duración Nota 1], etc

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Song number (0-4)

• Song Lenght (1-16). Longitud de la canción.

• Bytes de datos 3, 5, 7, etc. Indican el número de la nota (31-127)

• Bytes de datos 4, 6 , 8, etc. Indican la duración de la nota (0-255)

Tabla 11. Códigos de las notas que sonará en la Roomba

Page 15: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 71

Play Opcode: 141 Data bytes: 1

Este comando permite seleccionar una canción de las definidas con el comando

Song y que suene en la Roomba.

• Secuencia: [141][Song number]

• Disponible en modos: Safe o Full.

• Cambia el modo a: Ninguno.

• Song number (0-4)

Comandos de entrada

Los siguientes comandos permiten leer el estado de los sensores de la Roomba y

de algunas variables internas. LA Roomba actualiza estas variables internas cada

15 ms. No enviar estos comandos con una frecuencia mayor que la indicada

anteriormente.

Sensors Opcode: 142 Data bytes: 1

Este comando solicita al OI que envíe un paquete de datos con el valor de los

sensore. Hay 58 paquetes de sensores diferentes. Cada paquete proporciona un

valor específico del sensor o grupo de sensores.

• Secuencia: [142][Packet ID]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Packet ID: Identifica cual de los 58 paquetes de sensores que pueden ser

enviados por el OI. Un valor de 100 indica un paquete con todos los

sensores. Valores de 0 a 6 o de 101 a 107 indican subgrupos de sensores.

Page 16: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 72

Query list Opcode: 148 Data bytes: N+1 (N paquete solicitado)

Este comando permite preguntar por un conjunto de paquetes de sensores. El

robot devuelve los sensores en el orden especificado

• Secuencia: [149][Number of packet][Packet ID 1]Packet ID 2[]…[Packet ID

N]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Song number (0-4)

Stream Opcode: 149 Data bytes: N+1 (N paquete solicitado)

Este comando comienza una cadena de paquetes de datos. La lista de paquetes

solicitados se envía cada 15 ms, en los cuales la Roomba actualiza los datos. Este

método de solicitar los paquetes es mejor si se está controlando la Roomba en

una red inalámbrica, con software ejecutándose en el PC.

• Secuencia: [148][Number of packets][Packet ID 1]Packet ID 2[]…[Packet ID

N]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Song number (0-4)

El formato de los datos devueltos es:

[19][N- Bytes][Packet ID 1][Packet 1 datos][Packet ID 2] [Packet 2

datos][Checksum]

N- bytes es el número de bytes entre N-bytes y el Checksum.

El Checksum es el valor de 1 bit. Es el complemento 8-bit de todos los bits entre la

cabecera y el checksum.

Page 17: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 73

Ejemplo: Para tomar los datos de la Roomba de señal de acantilado izquierdo

(packet 29) y de sensor de muralla virtual (packet 13), se manda lo siguiente al

robot: [148][2][29][13]. Y la Roomba manda un flujo de datos tal que:

Pause/Resume Sream Opcode: 150 Data bytes: 1

Este comando permite parar y reanudar el flujo de datos que devuelve la

Rommba, sin borrar la lista de los paquetes solicitados.

• Secuencia: [150][Stream state]

• Disponible en modos: Passive, Safe o Full.

• Cambia el modo a: Ninguno.

• Rango: 0- 1. Cero para el flujo de los datos y 1 lo reanuda.

Paquetes de sensores del Roomba Open Interface

La Roomba devuelve uno de los 58 paquetes de sensores. Dependiendo del valor

del byte del paquete, respondiendo a un comando Sensor, Query list, o un

comando Stream para la solicitud de un paquete de datos de sensores.

La mayoría de los paquetes (los números 7 - 58) contienen el valor de un solo

sensor o variable, que puede ser de 1 byte o 2 bytes. Paquetes de 2 bytes

corresponden a valores de 16 bits, enviando en primer lugar el byte alto.

Algunos de los paquetes (0-6, 100-107) contienen grupos de los paquetes de valor

único.

Page 18: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 74

Tabla 12. Paquetes de sensores del ROI

Golpes y rueda suelta Packet ID:7 Data bytes: 1, unsigned

El estado de choque (0= no bump, 1=bump) y de sensor de rueda suelta (0= rueda

levantada, 1= rueda caida), son enviados como bits individuales.

Rango: 0-15

Tabla 13. Bits indicadores de golpes y rueda suelta

Wall Packet ID: 8 Data bytes: 1, unsigned

El estado del sensor de pared es enviado como 1 bit (0= no pared, 1= pared vista).

Rango: 0 – 1.

Page 19: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 75

Acantilado izquierdo Packet ID:9 Data bytes: 1, unsigned

El estado del sensor de acantilado del lado izquierdo de la Roomba se envía con 1

bit (0= no Cliff, 1 = Cliff)

Rango: 0 – 1

Acantilado frontal izquierdo Packet ID: 10 Data bytes: 1, unsigned

El estado del sensor de acantilado del frontal izquierdo de la Roomba se envía con

1 bit (0= no Cliff, 1 = Cliff)

Rango : 0 – 1

Acantilado frontal derecho Packet ID: 11 Data bytes: 1, unsigned

El estado del sensor de acantilado del frontal derecho de la Roomba se envía con

1 bit (0= no Cliff, 1 = Cliff)

Rango : 0 – 1

Acantilado derecho Packet ID: 12 Data bytes: 1, unsigned

El estado del sensor de acantilado del lado derecho de la Roomba se envía con 1

bit (0= no Cliff, 1 = Cliff)

Rango : 0 – 1

Virtual Wall Packet ID: 13 Data bytes: 1, unsigned

El estado del detector de pared virtual es enviado como 1 bit (0= pared virtual no

detectada, 1= pared virtual detectada).

Rango: 0 – 1.

Page 20: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 76

Whell Overcurrent Packet ID: 14 Data bytes: 1, unsigned

El sensor de sobrecorriente en las ruedas no está disponible en la Roomba 500.

Rango: 0 – 31.

Tabla 14. Bits que indican sobrecorriente en las ruedas

Detector de suciedad Packet ID: 15 Data bytes: 1

El sensor detecta el nivel de suciedad.

Rango: 0 – 255.

Byte sin usar Packet ID: 16 Data bytes: 1

Byte sin uso: un byte sin uso es enviado después del byte de detección de

suciedad cuando el paquete solicitado es el 0, 1 o 6. El valor de este byte sin uso

es siempre cero.

Rango: 0

Caracter infrarojo Omnidireccional Packet ID: 17 Data bytes: 1, unsigned

Este valor identifica el carácter de 8 bits de IR que se está recibiendo por el

receptor omnidireccional Roomba.

Un valor de 0 indica que ningún carácter está siendo recibido. Estos caracteres

son los enviados por la distancia Roomba, el Dock, Roomba 500 Virtual Paredes,

crear robots utilizando el comando Enviar-IR, y los dispositivos de usuario

Created.

Page 21: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 77

Rango: 0 – 255.

Caracter infrarojo izquierdo Packet ID: 18 Data bytes: 1, unsigned

Este valor identifica el carácter de 8 bits de IR que se está recibiendo por el

receptor izquierdo Roomba.

Un valor de 0 indica que ningún carácter está siendo recibido. Estos caracteres

son los enviados por la distancia Roomba, el Dock, Roomba 500 Virtual Paredes,

crear robots utilizando el comando Enviar-IR, y los dispositivos de usuario

Created.

Rango: 0 – 255.

Caracter infrarojo derecho Packet ID: 19 Data bytes: 1, unsigned

Este valor identifica el carácter de 8 bits de IR que se está recibiendo por el

receptor derecho Roomba.

Un valor de 0 indica que ningún carácter está siendo recibido. Estos caracteres

son los enviados por la distancia Roomba, el Dock, Roomba 500 Virtual Paredes,

crear robots utilizando el comando Enviar-IR, y los dispositivos de usuario

Created.

Rango: 0 – 255.

Caracteres enviados por dispositivos iRobot:

• Configuración Dock beam

Page 22: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 78

Figura 33. Dock beam

• Configuración Lighthouse beam

Figura 34. Lighthouse beam

Page 23: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 79

Tabla 15. Caracteres enviados por la Rommba

Page 24: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 80

Botones Packet ID: 18 Data bytes: 1, unsigned

El estado de los botones de la Roomba es enviado en bits individuales ( 0= botón

no presionado, 1= botón presionado). El día, hora, minutos, reloj y botones de

programación sólo están disponibles en la Roomba 560 y 570, en el resto

devuelve siempre cero.

Rango: 0 – 255

Distancia Packet ID: 19 Data bytes:2, signed

La distancia que la Roomba ha recorrido desde que se solicita al robot, se envía

en 16 bits. Es lo mismo que la distancia recorrida por ambas ruedas dividida entre

dos. Valores positivos indican que ha andado hacia delante y valores negativos

que ha ido en dirección contraria.

Rango: -32768 – 32767

Ángulo Packet ID: 20 Data bytes:2, signed

El ángulo en grados que la Roomba ha girado desde que se solicita el valor al

robot, se envía en 16 bits. Valores positivos cuando el giro es contrario a las

agujas del reloj y valores de ángulo negativos cuando se gira en el sentido de las

agujas del reloj.

Rango: -32768 – 32767

Estado de carga Packet ID: 21 Data bytes:1, unsigned

Page 25: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 81

Este código indica el estado actual de carga de la Roomba.

Rango: 0 – 5

Tabla 16. Código indicador del estado de carga

Voltaje Packet ID: 22 Data bytes:2, unsigned

Este código indica el voltaje de la batería de la Roomba en mV

Rango: 0 – 65535

Corriente Packet ID: 23 Data bytes:2, signed

La corriente en miliamperios (mA) que fluye hacia dentro o hacia fuera de la

batería de la Roomba. Corrientes negativas indican que la corriente fluye de la

batería hacia fuera (funcionamiento normal). Corrientes positivas indican que la

corriente circula hacia dentro de la batería, como durante la carga.

Rango: -32768 – 32767

Temperatura Packet ID: 24 Data bytes:1, signed

La temperatura de la batería de la Roomba en grados Celsius.

Rango: -128 – 127

Page 26: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 82

Carga de la batería Packet ID: 25 Data bytes:2, unsigned

La carga actual de la batería de la Roomba en miliamperios/ hora (mAh). El valor

de la carga se decrementa cuando la batería se agota (Roomba en

funcionamiento) y aumenta cuando se está cargando.

Rango: 0 – 65535 mAh

Capacidad de la batería Packet ID: 26 Data bytes:2, unsigned

La capacidad estimada de carga de la batería de la Roomba en mAh.

Rango: 0 – 65535 mAh

Señal de pared Packet ID: 27 Data bytes:2,unsigned

La fuerza de la señal de pared es devuelta en 16 bits, el byte alto primero.

Rango: 0 - 1023

Señal de acantilado izquierdo Packet ID: 28 Data bytes:2,unsigned

La fuerza de la señal de acantilado a la izquierda es devuelta en 16 bits, el byte

alto primero.

Rango: 0 – 1023

Señal de acantilado frontal izquierdo Packet ID: 29 Data bytes:2,unsigned

Page 27: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 83

La fuerza de la señal de acantilado frontal a la izquierda es devuelta en 16 bits, el

byte alto primero.

Rango: 0 – 4095

Señal de acantilado frontal derecho Packet ID: 30 Data bytes:2,unsigned

La fuerza de la señal de acantilado a la derecha es devuelta en 16 bits, el byte alto

primero.

Rango: 0 – 4095

Señal de acantilado derecho Packet ID: 31 Data bytes:2,unsigned

La fuerza de la señal de acantilado a la derecha es devuelta en 16 bits, el byte alto

primero.

Rango: 0 – 1023

Sin uso Packet ID: 32 - 33 Data bytes:3

Rango: 0

Fuentes de carga disponibles Packet ID: 34 Data bytes: 1,unsigned

Las conexiones de la Roomba a la “Home base” y al cargador interno son

devueltas en bits individuales tal y como se muestra abajo

Rango: 0 – 3

Page 28: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 84

Tabla 17. Bits que indican donde se está cargando la Roomba

Modos del OI Packet ID: 35 Data bytes:1, unsigned

El modo actual del Open Interface en que está la Roomba se devuelve.

Rango: 0 – 3

Tabla 18. Modos de funcionamiento

Número de canción Packet ID: 36 Data bytes:1, unsigned

Se devuelve la actual canción del OI seleccionado.

Rango: 0 – 15

Canción sonando Packet ID: 37 Data bytes:1, unsigned

Devuelve el estado de reproducción de la canción del OI. 1=sonando, 0= sin

sonar.

Rango: 0 – 1

Page 29: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 85

Número cadena de paquetes Packet ID: 38 Data bytes:1, unsigned

Devuelve el número de datos en la cadena de paquetes.

Rango: 0 – 108

Velocidad solicitada Packet ID: 39 Data bytes:2, signed

La velocidad más recientemente solicitada con un comando Drive se devuelve en

16 bits.

Rango: -500 – 500 mm/s

Radio solicitado Packet ID: 40 Data bytes: 2, signed

El radio más recientemente solicitado con un comando Drive se devuelve en 16

bits

Rango: -32768 – 32767 mm

Solicitud velociad derecha Packet ID: 41 Data bytes:2, signed

La velocidad de la rueda derecha solicitada con el comando DriveDirect se

devuelve en 16 bits.

Rango: -500 – 500 mm/s

Solicitud velociad izquierda Packet ID: 42 Data bytes:2, signed

La velocidad de la rueda izquierda solicitada con el comando DriveDirect se

devuelve en 16 bits.

Page 30: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 86

Rango: -500 – 500 mm/s

Cuentas codificador derecho Packet ID: 43 Data bytes:2, unsigned

El número acumulado de cuentas en bruto del codificador derecho se devuelve en

16 bits. Cuando pasa de 65535 vuelve a 0.

Rango: 0 – 65535

Cuentas codificador izquierdo Packet ID: 44 Data bytes:2, unsigned

El número acumulado de cuentas en bruto del codificador izquierdo se devuelve

en 16 bits. Cuando pasa de 65535 vuelve a 0.

Rango: 0- 65535

Luz de choque Packet ID: 45 Data bytes:1, unsigned

Las detecciones de la luz de choque se devuelven en bits individuales.

Rango: 0 – 127

Tabla 19. Bits de luz de choque

Page 31: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 87

Señal luz de choque izquierda Packet ID: 46 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque izquierda se devuelve en 16 bits.

Rango: 0 – 4095

Señal luz de choque frontal izquierda Packet ID: 47 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque frontal izquierda se devuelve en 16 bits.

Rango: 0 – 4095

Señal luz de choque central izquierda Packet ID: 48 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque central izquierda se devuelve en 16 bits.

Rango: 0 – 4095

Señal luz de choque central derecha Packet ID:49 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque central derecha se devuelve en 16 bits.

Rango: 0 – 4095

Señal luz de choque frontal derecha Packet ID: 50 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque frontal derecha se devuelve en 16 bits.

Rango: 0 – 4095

Page 32: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 88

Señal luz de choque derecha Packet ID: 51 Data bytes:2, unsigned

La fuerza de la señal de la luz de choque derecha se devuelve en 16 bits.

Rango: 0 – 4095

Corriente del motor izquierdo Packet ID: 54 Data bytes:2, signed

Devuelve la corriente que el motor de la rueda izquierda esta usando en 16 bits.

Rango: -32768 – 32767 mA

Corriente del motor derecho Packet ID: 55 Data bytes:2, signed

Devuelve la corriente que el motor de la rueda derecha esta usando en 16 bits.

Rango: -32768 – 32767 mA

Corriente del motor del cepillo principal Packet ID: 56 Data bytes:2, signed

Devuelve la corriente que el motor del cepillo principal esta usando en 16 bits.

Rango: -32768 – 32767 mA

Corriente del motor del cepillo lateral Packet ID: 57 Data bytes:2, signed

Devuelve la corriente que el motor del cepillo laterall esta usando en 16 bits.

Rango: -32768 – 32767 mA

Page 33: 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓNbibing.us.es/proyectos/abreproy/11879/fichero/PFC... · Sergio Pereira Ruiz Página 59 • Control de flujo: Ninguno Por

PFC: Localización de robots mediante filtro de Kalman

Sergio Pereira Ruiz Página 89

Stasis Packet ID: 58 Data bytes: 1

El sensor devuelve 1 cuando está progresando hacia delante y 0 si no. Devuelve

siempre 0 cuando el robot está girando, yendo hacia atrás o no está anandando.

Rango : 0 – 1