PFC: Localización de robots mediante filtro de Kalman

PFC: Localización de robots mediante filtro de Kalman 5. - IROBOT ROOMBA OPEN INTERFACE (ROI) 5.1.- INTRODUCCIÓN El Roomba Open Interface (OI) es un

8 downloads 77 Views 350KB Size

Story Transcript

PFC: Localización de robots mediante filtro de Kalman 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.

Sergio Pereira Ruiz

Página 57

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Página 58

PFC: Localización de robots mediante filtro de Kalman •

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

Sergio Pereira Ruiz

Página 59

PFC: Localización de robots mediante filtro de Kalman 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.

Sergio Pereira Ruiz

Página 60

PFC: Localización de robots mediante filtro de Kalman 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)

Sergio Pereira Ruiz

Página 61

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Página 62

PFC: Localización de robots mediante filtro de Kalman 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 Sergio Pereira Ruiz

Página 63

PFC: Localización de robots mediante filtro de Kalman •

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

Valor Res

6

5

4

3

2

1

0

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)

Sergio Pereira Ruiz

Página 64

PFC: Localización de robots mediante filtro de Kalman

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]

Sergio Pereira Ruiz

Página 65

PFC: Localización de robots mediante filtro de Kalman •

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

Sergio Pereira Ruiz

Página 66

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 67

PFC: Localización de robots mediante filtro de Kalman 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. Sergio Pereira Ruiz

Página 68

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 69

PFC: Localización de robots mediante filtro de Kalman 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 Sergio Pereira Ruiz

Página 70

PFC: Localización de robots mediante filtro de Kalman 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.

Sergio Pereira Ruiz

Página 71

PFC: Localización de robots mediante filtro de Kalman 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. Sergio Pereira Ruiz

Página 72

PFC: Localización de robots mediante filtro de Kalman

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.

Sergio Pereira Ruiz

Página 73

PFC: Localización de robots mediante filtro de Kalman

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.

Sergio Pereira Ruiz

Página 74

PFC: Localización de robots mediante filtro de Kalman 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. Sergio Pereira Ruiz

Página 75

PFC: Localización de robots mediante filtro de Kalman 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. Sergio Pereira Ruiz

Página 76

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Página 77

PFC: Localización de robots mediante filtro de Kalman

Figura 33. Dock beam



Configuración Lighthouse beam

Figura 34. Lighthouse beam

Sergio Pereira Ruiz

Página 78

PFC: Localización de robots mediante filtro de Kalman

Tabla 15. Caracteres enviados por la Rommba Sergio Pereira Ruiz

Página 79

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Packet ID: 21

Data bytes:1, unsigned

Página 80

PFC: Localización de robots mediante filtro de Kalman 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 Sergio Pereira Ruiz

Página 81

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Packet ID: 29

Data bytes:2,unsigned

Página 82

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 83

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Página 84

PFC: Localización de robots mediante filtro de Kalman 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. Sergio Pereira Ruiz

Página 85

PFC: Localización de robots mediante filtro de Kalman

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

Sergio Pereira Ruiz

Página 86

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 87

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 88

PFC: Localización de robots mediante filtro de Kalman 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

Sergio Pereira Ruiz

Página 89

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.