Está en la página 1de 16

Facultad de Ingeniera Mecatrnica

Reporte Interno

Dinmica e Interfaz de Comunicacin Serial del iRobot Create


Investigador Principal:
Ing. Rudy Cepeda Gmez, Ph.D.

Coinvestigador
Ing. Luis Fernando Perico Remolina

Resumen
Este documento incluye un estudio detallado de la plataforma

iRobot Create

, presente en el laboratorio

de control y robtica de la Facultad de Ingeniera Mecatrnica de la Universidad Santo Toms, seccional Bucaramanga. Se describen las capacidades de la plataforma y su interfaz de comunicacin serial, haciendo especial nfasis en las posibilidades que ofrece para realizar experimentos de control cooperativo. Se incluye adems un anlisis de la cinemtica de los robots mviles diferenciales.

9 de agosto de 2013

1.

Introduccin
El laboratorio de control y robtica de la Facultad de Ingeniera Mecatrnica de la Universidad Santo Toms,

seccional Bucaramanga, cuenta con seis plataformas

iRobot Create. stas se encuentran subutilizadas debido a Puesta en Marcha de un Equipo de Robots Mviles para investigacin y Docencia en el rea de Control Cooperativo busca darles
que no existe una base de conocimientos sobre su manejo. El proyecto de investigacin titulado uso a estos equipos y, de paso, abrir una nueva lnea dentro del grupo de investigacin de la facultad. Al emplear estos robots en este proyecto, se espera no slo tener la posibilidad de estudiar algoritmos y problemas de control cooperativo, sino tambin crear documentacin suciente sobre el manejo de los

Create

que facilite su empleo

en otras tareas. En las siguientes secciones este documento se describir la plataforma disponible, de manera fsica en la seccin 3 y su interfaz de comunicacin serial en la seccin 4. Pero primero, la seccin 2 presentar un estudio de la cinemtica de los robots mviles diferenciales, conocimiento necesario para poder implementar algoritmos de control sobre el

Create.

2.
2.1.

Cinemtica de Robots Mviles Diferenciales


Introduccin

Los robots mviles pueden clasicarse de acuerdo con el tipo de elemento que produce la traccin (ruedas, orugas, patas, etc.). Aquellos que operan con ruedas pueden a su vez clasicarse dependiendo de la cantidad, la ubicacin y el tipo de ruedas, adems de la forma en que las ruedas son actuadas. Para la mayora de aplicaciones que implican robots sencillos, la conguracin diferencial es la ms usada [1]. Un robot mvil diferencial tiene dos ruedas que pueden ser actuadas de manera independiente. El diseo de sistemas de control para estos robots presenta un reto especial desde el punto de vista terico debido a que tienen restricciones cinemticas de tipo no holnomo. Es decir, tienen restricciones en las velocidades que no pueden reducirse a una relacin algebraica entre las variables que describen la conguracin del sistema. El estudio terico de estos robots ha sido una rea de investigacin bastante activa en las ltimas tres dcadas. Ac se compilan algunos resultados previos obtenidos por diversos autores y que forman la base matemtica sobre la cual se desarrollarn algoritmos de control cooperativo.

2.2.

Cinemtica

Un robot mvil diferencial es, desde el punto de vista cinemtico, equivalente a un uniciclo, es decir a una rueda que gira sin deslizar sobre una supercie plana. Las variables que describen el estado del uniciclo consisten en las coordenadas de su posicin en el plano, stas se describen en la gura 1. Debido a que la rueda gira sin deslizar, el uniciclo no puede desplazarse en direccin perpendicular a su velocidad. Esta es una restriccin no holnoma que puede expresarse mediante la ecuacin:

(x, y )

y su orientacin con respecto al sistema de coordenadas,

x sin y cos = 0 x 2 + y 2 . =

(1)

Las velocidades posibles del uniciclo, y que pueden ser usadas como entradas de control, son entonces la velocidad lineal

v=

y la velocidad angular

De esta manera, el modelo cinemtico del unicilo

puede expresarse as:

x cos 0 y = sin 0 0 1
En el caso de un robot diferencial, como el

(2)

Create, la velocidad lineal y la velocidad angular dependen de las

velocidades de cada rueda y de la separacin que entre ellas exista. Normalmente, en una aplicacin prctica, el controlador de nivel ms bajo se encarga de mantener la velocidad de cada motor en el valor requerido por

Figura 1: Variables que describen el estado de un uniciclo. (Adaptado de [1])

vr v r vl

l Centro de rotacin instantneo


Figura 2: Velocidades en un robot diferencial

el controlador de ms alto nivel. Para obtener la relacin entre las velocidades de las ruedas y las velocidades lineal y angular del robot, se considera una situacin como la de la gura 2. El centro instantneo de rotacin, el punto alrededor del cul est girando el robot en un instante dado, se encuentra en un punto sobre la proyeccin del eje sobre el cual las ruedas estn montadas, a una distancia

del centro del robot. Puesto que la velocidad

angular de todos los puntos sobre el robot es la misma, se pueden obtener las siguientes expresiones:

= =

vr l r+ 2 vl = l r 2
siendo

v r

(3a) (3b)

(3c)

vr

vl

las velocidades lineales de las ruedas derecha e izquierda y

la longitud del eje del robot, es decir,

la distancia que separa las ruedas. De (3b) y (3c) se llega a:

vr = r +

l 2 l vl = r 2 = vr vl l
2

(4a)

(4b)

Sumando las expresiones en (4), se obtiene:

(5)

Por otro lado, al igualar (3a) con (3b) y con (3c) se consiguen las siguientes expresiones:

vr = v 1 +

r 2 r vl = v 1 2

(6a) (6b)

que al sumarlas producen la relacin entre la velocidad lineal del robot y las velocidades individuales de las ruedas:

v=

vr + vl 2

(7)

A partir de (5) y (7) se obtienen las relaciones directa e inversa entre las velocidades de las ruedas y las velocidades del robot:

v vr vl
2.3.

= =

1 2 1 l

1 1

1 2 1 l l 2 l 2

vr vl v

(8a)

(8b)

Control de un robot no holnomo: linealizacin por realimentacin

Existen dos problemas bsicos que deben ser resueltos por el controlador de un robot diferencial: la estabilizacin de postura y el seguimiento de una trayectoria. El primero consiste en garantizar que el robot se mantiene en un estado dado a medida que el tiempo pasa. El segundo consiste en llevar el error entre el estado y unos valores denidos, tienda a cero. Es bien sabido que estos problemas no pueden ser resueltos para un sistema como el descrito por (2) con el empleo de una ley de control invariante en el tiempo que sea continua y diferenciable. Esto fue declarado por Brokket en [2]. Algunos autores, por lo tanto, han intentado diferentes estrategias para solucionar este problema. Murray y Sastry [3] proponen la generacin de trayectorias mediante el empleo de seales sinusoidales relacionadas armnicamente. Sus resultados pueden emplearse en una clase particular de sistemas dinmicos, aquellos que pueden llevarse a la

forma encadenada.

Astol [4], propone una aproximacin diferente. Usando una tcnica que l denomina

como (2) es transformado en un sistema discontinuo. Este cambio de coordenadas tiene la propiedad de al sistema discontinuo de manera local y, por lo tanto, estabilizar tambin al sistema original.

la resolucin del sistema en un punto dado. Con ello, se puede generar una ley de control continua que estabilizar

proceso , un sistema aumentar

Una mejor aproximacin es seguida por Oriolo et al. [1]. En este trabajo ellos presentan una tcnica de linealizacin por realimentacin. sta consiste en una ley de control no lineal, variante con el tiempo, que hace que el sistema se vuelva equivalente a dos sistemas de segundo orden desacoplados. Estos sistemas de segundo orden consisten en integradores dobles, bastante simples, que pueden ser estabilizados por leyes de control lineales. El trabajo [1] presenta resultados tericos y prcticos, los ltimos obtenidos en una plataforma con conguracin similar al

Create. Esta es la aproximacin que se seguir en este trabajo.

Para la linealizacin por realimentacin de (2), considere un nuevo vector de estado se selecciona de manera tal que las derivadas de las nuevas variables sean iguales a

z = [z1 , z2 ]T . Este vector las de las estados x y y :


(9)

z 1 z 2
Tomando la segunda derivada del vector

= z

x y

v cos v sin

=v

cos sin

se tiene:

z 1 z 2

v cos v sin v sin + v cos

(10)

Figura 3: Plataforma de desarrollo

iRobot Create.

siendo

. =

Si la segunda derivada de

se hace igual a la entrada del sistema, se obtiene el equivalente

linealizado:

z 1 z 2
sistema no lineal:

u1 u2

(11)

Tras igualar (10) y (11), se obtiene una relacin entre la entrada que se emplea para el sistema lineal y la del

u1 u2

cos v sin sin v cos

(12)

Invirtiendo la transformacin (12) se tiene puede calcular la entrada que debe ser aplicada al robot diferencial para que simule el comportamiento del sistema lineal:

cos 1 v sin

1 v

sin cos

u1 u2 x = z1 , x = z1 , y = z 2
y

(13)

Utilizando (12) y (13), el sistema (2) ser equivalente a (11), es decir denida si

y = z2 .

Evidentemente, (12) y (13) son transformaciones no lineales y variantes con el tiempo. Es ms, (13) no est

v = 0.

Esta singularidad es un problema estructural de los sistemas no holnomos y debe tenerse en

cuenta cuando se disean leyes de control para estos sistemas [1].

3.
3.1.
El

Descripcin del

iRobot Create

Descripcin Bsica

presa introdujo el

iRobot. Cuando esta emRoomba, un robot aspiradora pensado para tareas domsticas, muchos usuarios empezaron a desmontar el robot y a agregar accesorios. viendo esto como una oportunidad de negocio, iRobot desarroll el Create, que es, en esencia, un Roomba sin la aspiradora. Una descripcin detallada se encuentra en [5]. El Create (gura 3) es un robot diferencial bsico. Cuenta con dos ruedas motrices, cada una operada de
es un robot mvil diferencial producido por la empresa estadounidense

Create

manera independiente por un motor. El robot tiene un controlador de nivel bajo en cada rueda, que se encarga de mantener la rapidez indicada por el usuario. Esto facilita la operacin del robot, haciendo posible el uso de modelos cinemticos como los descritos en la seccin 2. Las capacidades del robot pueden extenderse empleando un conector ubicado en la baha de carga. Este permite a un circuito externo comunicarse con el el estado de sus sensores, aparte de controlar sus actuadores. Cada una de las ruedas del robot tiene un sistemas de navegacin.

Create y obtener

encoder

empleado para determinar la distancia y el ngulo que

ha recorrido. Internamente el robot se encarga de realizar la labor de odometra, simplicando as el diseo de

(a) Mini-DIN

(b) DB-25

Figura 4: Distribucin de pines de los conectores del

Create.

Aparte de los acantilados (

encoders, el Create tiene sensores de posicin de cada rueda, para indicar si la rueda se ha cado pared virtual
o la

(lo que puede suceder al encontrar una supercie con baches), sensores de golpe en su parachoques, sensores de seales provenientes de otros robots, de un control remoto o de otros accesorios como la

cli, inclinaciones excesivas, como un escaln) del terreno y un sensor infrarrojo que puede recibir
Create home
tiene sensores que permiten monitorear su estado interno (voltaje y

base.

Adems de estos sensores, el

corriente en la batera, estado de carga de la batera, temperatura de la batera) y el conector de la baha de carga tiene cuatro entradas digitales y una analgica, cuyos estados y valores pueden leerse. En su parte externa, el de los botones de iniciar y avanzar tambin puede ser ledo. Aparte de los motores, los actuadores del

Create cuenta con tres botones: encendido, iniciar (play ) y avanzar advance. El estado Create
incluyen los LED que se encuentran en la parte superior,

tres salidas digitales en el conector de 25 pines de la baha de carga, tres salidas analgicas con alta capacidad de corriente (que pueden ser operadas de manera directa o usando PWM) y un parlante a travs del cual se pueden tocar notas para generar canciones. Es importante notar que el

Create es un robot bastante sencillo. Si bien tiene incorporado un buen nmero de Mdulo de Comando,
que contiene

sensores, no cuenta con gran capacidad de control. Tiene el msculo, pero no el cerebro. Proveer esta capacidad, es tarea del usuario del robot. La compaa fabricante ofrece un accesorio, son posible con tan slo los comandos bsicos. un microcontrolador y permite programar en lenguaje c algunas funciones un poco ms complejas que las que

3.2.

Conexiones

Un controlador externo, que pretenda enviar comandos al

Create, debe emplear la interfaz de comunicacin

serial, descrita en la seccin 4. Para ello puede conectarse de dos formas: mediante un conector mini-DIN, ubicado a un lado del robot, o mediante el conector DB25 ubicado en la baha de carga. El segundo tiene la ventaja de aumentar el nmero de conexiones posibles, las entradas y salidas analgicas y digitales, no estn conectadas al mini-DIN. La conexin serial utiliza niveles lgicos TTL, es decir, de 0 a 5 V. El protocolo RS232 funciona con voltajes diferentes, y un convertidor de niveles se hace necesario si se pretende conectar el robot a un PC. Para ello, el

Create

viene con un cable que incorpora este accesorio.

La gura 4 presenta la distribucin de pines de los conectores. La descripcin y de los pines se muestra en la tabla 1 para el conector mini-DIN y en la tabla 2 para el conector DB25.

3.3.
El

Capacidades para Control Cooperativo

Create

es una plataforma que permite hacer experimentos de control de robots diferenciales de manera

sencilla. el mdulo de comando es un accesorio que permite ampliar las capacidades de la plataforma bsica. Sin embargo, este robot carece de la habilidad de comunicarse con otros elementos de su tipo. Si bien puede hacerse comunicacin empleando un LED infrarrojo, las capacidades que esta solucin proveera son bastante limitadas. Tras un anlisis detallado de los principales requerimientos se encontr necesario crear un accesorio externo

Tabla 1: Descripcin de los pines del conector mini-DIN

Pin Nombre Funcin


1 2 3 4 5 6 6

Vpwr Vpwr RXD TXD BRC GND GND

Voltaje de la batera, no regulado. Voltaje de la batera, no regulado. Entrada serial al robot. Salida serial del robot. Cambio de la tasa de transmisin. Referencia de voltaje. Referencia de voltaje.

que funcione como cerebro y boca para el robot. La propuesta es construir una tarjeta, centrada en un microcontrolador, que se comunique con el ncleo del

Create

para controlarlo y pueda transmitir, va inalmbrica,

su estado y otra informacin pertinente, a sus congneres. Usando este mismo medio, cada robot podr recibir informacin sobre el estado de otros miembros del equipo y tomar decisiones basadas en sta. Esa es la idea bsica del control cooperativo. Puesto que la solucin planteada propone el empleo de un microcontrolador, se hace innecesario usar los mdulos de comando. Instalar stos complicara el trabajo enormemente, pues hara fata programar dos dispositivos diferentes. Por eso se preere hacerlos a un lado y disear una tarjeta de propsito especco, descrita en un documento aparte.

4.

La Interfaz de Comunicacin Serial


La interfaz abierta del

Create permite al usuario leer informacin proveniente delos sensores del robot y enviar

comandos a los actuadores. Cualquier procesador capaz de generar comandos seriales, como un computador o un microcontrolador, puede tener acceso a la interfaz del robot. El manual completo de la interfaz, proporcionado por el fabricante se encuentra en [6]. Esta interfaz serial puede operar a tasas de transmisin que van desde 300 hasta 115200, siendo la tasa por defecto 57600 baudios. Esta tasa puede cambiarse mediante un comando que ser descrito ms adelante. Sin embargo, si el procesador que se va a usar no puede comunicarse a esta velocidad, sta puede cambiarse por hardware, empleando uno de dos mtodos: Tras encender el robot, el botn de iniciar debe mantenerse presionado durante 4 segundos. Como conrmacin, el robot emite una serie de sonidos con frecuencia descendente. Tras encender el robot, se debe esperar dos segundos para luego enviar tres pulsos bajos a travs del pin

BRC

de cualquiera de los dos conectores. Cada pulso debe durar entre 50 y 500 ms.

Tras cualquiera de estas dos operaciones, el robot se comunicar a 19200 baudios hasta que la energa se desconecte o hasta que la tasa de transmisin se cambie explcitamente mediante el comando serial descrito ms adelante.

4.1.

Modos de Operacin

El robot puede operar en cuatro modos diferentes:

o

(apagado),

passive

(pasivo),

safe

(seguro) y

full

(completo). Las diferencia entre modos se encuentran en las restricciones de operacin que cada uno presenta. El modo apagado, por supuesto, es el modo de operacin inicial, al que el robot llega cuando recin se enciende. En modo apagado, el robot no recibe comando alguno, excepto el comando de inicio, despus del cual se entra al modo pasivo. En este modo el usuario puede utilizar la interfaz serial nicamente para leer el estado de los sensores o ejecutar uno de los demos que el robot tiene incorporados. En el modo pasivo no es posible cambiar el estado de los actuadores del robot.

Tabla 2: Descripcin de los pines del conector DB25

Pin Nombre Funcin


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

RXD TXD PWR AI DI1 DI3 DO1 SW5 Vpwr SWVpwr SWVpwr SWVpwr CHRG GND DD/BRC GND DI0 DI2 DO0 DO2 GND LSD0 LSD1 LSD2 GND

Entrada serial al robot. Salida serial del robot. Control de encendido. Entrada analgica. Entrada digital 1. Entrada digital 3. Salida digital 1. referencia regulada: 5V, 100 mA. Voltaje de la batera, no regulado. Voltaje de la batera, regulado, 1.5A. Voltaje de la batera, regulado, 1.5A. Voltaje de la batera, regulado, 1.5A. Indica si el robot est cargando. Referencia de voltaje. Cambio de la tasa de transmisin. Referencia de voltaje. Entrada digital 0. Salida serial del robot. Salida digital 0. Salida serial del robot. Referencia de voltaje. Salida de 0.5A. Salida de 0.5A. Salida de 1.5A. Referencia de voltaje.

1 En transicin de bajo a alto, enciende al robot.

Para mover al robot, es necesario entrar en el modo seguro o en el modo completo. La diferencia entre estos dos modos es que, en el modo seguro, existen tres condiciones de seguridad que devuelven al pasivo si llegaran a presentarse. Estas condiciones son: Deteccin de una inclinacin cuando el vehculo se mueve hacia adelante o hacia atrs con un radio de giro muy pequeo. Deteccin de la cada de una rueda. Deteccin de un cargador conectado y energizado.

Create

al modo

4.2.

Comandos

Cada uno de los comandos que se pueden enviar al robot tiene un cdigo de operacin que debe ser transmitido por el puerto serial. Adems del cdigo de operacin, algunos comandos requieren informacin dato extra. Por ejemplo, si se entrega el comando

drive, el Create esperar recibir 4 bytes ms, con informacin sobre la velocidad

y el radio de giro con que debe ejecutar la maniobra. Es importante que se enven todos los bytes de datos que el comando requiere. Si no, el procesador del

Create

entrar en un modo de espera, en el que se detienen todas las

acciones hasta que se reciban todos los datos. Para cada comando, el procesador que se est comunicado con el robot, deber enviar una secuencia serial de tipo: la informacin requerida por cada comando.

[OpCode][Data Byte 1][Data Byte 2]...

hasta completar

Comando
START BAUD

OpCode1
128 129

Bytes de datos
Ninguno 1: Cdigo de

Tabla 3: Comandos bsicos

Disponible en modos

Cambia a modo
Pasivo No hay cambio.

Apagado, pasivo, seguro, completo la tasa de Pasivo, seguro, completo.

transmisin. Ver tabla 4

1 Cdigo de operacin.

Tabla 4: Cdigos de la tasas de transmisin

Cdigo Tasa en BPS Cdigo Tasa en BPS


0 1 2 3 4 5 300 600 1200 2400 4800 9600 6 7 8 9 10 11 14400 19200 28800 38400 57600 115200

Comando OpCode Bytes de datos


SAFE FULL
131 132 Ninguno Ninguno

Tabla 5: Comandos de modo

Disponible en modos

Cambia a modo
Seguro. Completo.

Pasivo, seguro, completo. Pasivo, seguro, completo.

A continuacin se listan los comandos clasicados por tipo, con su respectivo cdigo de operacin y datos extra.

4.2.1. Comandos Bsicos


Se emplean para activar la interfaz de comunicacin del robot y para cambiar la tasa de transmisin. Los comandos bsicos son:

START BAUD

Este comando inicia la operacin de la interfaz serial, sacndola del modo apagado. Una vez se recibe, el

robot emite un sonido de conrmacin. Este comando cambia la tasa de transmisin de datos al valor especicado en el byte de informacin. una vez cambiada, esta tasa de transmisin se mantiene hasta que el robot sea apagado y vuelto a encender. Una vez se ha cambiado la tasa de transmisin, es necesario esperar al menos 100ms antes de empezar a transmitir informacin con la nueva tasa. La descripcin de su operacin se encuentra en la tabla 3

4.2.2. Comandos de Modo


Estos comandos, descritos en la tabla 5, permiten llevar al robot a los modos seguro y completo. Si se quiere pasar al modo pasivo, el comando

START.

4.2.3. Comandos de Espera


Estos comandos hacen que el robot entre en un modo de espera y mantenga su estado actual hasta que pase un cierto tiempo, se haya recorrido una distancia, se haya rotado un ngulo o un evento haya ocurrido. Durante

Tabla 6: Comandos de espera

Comando
WAIT TIME WAIT DISTANCE WAIT ANGLE WAIT EVENT

OpCode
155 156 157 158

Bytes de datos
1: Un valor entre 0 y 255. 2: Un valor de 16 bits. 2: Un valor de 16 bits. 1: Evento a esperar.

Disponible en modos
Pasivo, seguro, completo. Pasivo, seguro, completo. Pasivo, seguro, completo. Pasivo, seguro, completo.

Cambia a modo
No hay cambio. No hay cambio. No hay cambio. No hay cambio.

Tabla 7: Eventos a esperar

Evento
Cada de rueda Cada de rueda frontal Cada de rueda izquierda Cada de rueda derecha Choque Choque izquierdo Choque derecho Pared virtual Pared

Cdigo1
1 2 3 4 5 6 7 8 9 10 11

Contrario2
255 254 253 252 251 250 249 248 247 246 245

Cli delantero-izquierdo Cli delantero-derecho Cli derecho


Base Botn avanzar Botn iniciar Entrada Digital 0 Entrada Digital 1 Entrada Digital 2 Entrada Digital 3 Modo pasivo

Evento

Cdigo Contrario
12 13 14 15 16 17 18 19 20 21 22 244 243 242 241 240 239 238 237 236 235 234

Cli

Cli

izquierdo

1 Si se enva este cdigo, el robot espera 2 Si se enva este cdigo, el robot espera

hasta que el evento ocurra. mientras el evento ocurra.

esta espera, el robot no reacciona ante ninguna entrada. Estos comandos, descritos en la tabla 6, estn pensados para ser usados nicamente en la creacin de Los comandos

WAIT DISTANCE y WAIT ANGLE, requieren valores de 16 bits con signo para indicar la distancia

scripts.

y el ngulo a esperar. En estos casos el byte ms signicativo siempre debe enviarse primero. La distancia positiva se mide hacia adelante, mientras que el ngulo de giro positivo visto desde arriba. El create interpreta la distancia a esperar como un valor en mm, mientras que el ngulo se medir en grados. El comando

WAIT TIME

espera un valor entre 0 y 255 que indica el tiempo a esperar en ms. La resolucin

posible es de 15ms, tiempo de muestreo interno del Tras el comando

WAIT EVENT

Create.

debe enviarse el cdigo de un evento que se ha de esperar. Los eventos dispo-

nibles y sus cdigos estn descritos en la tabla 7.

4.2.4. Comandos de Script


Estos comandos permiten cargar en el

Create

una serie de comandos para ser ejecutados ms tarde. Son

especialmente tiles si el robot se est programando desde un computador, caso en el que los comandos pueden cargarse con el robot conectado mediante el cable serial y ser ejecutados tras la desconexin. Los comandos de

script
del

se listan en la tabla 8.

Un

script

puede tener una duracin de hasta 100 bytes. El comando

entregarn los comandos a ser guardados. El primer byte tendr un valor

script,

SCRIPT le indica al robot que se le N , correspondiente al nmero de bytes

mientras los siguientes

que se incluirn en el

script.

bytes tendrn los cdigos de operacin y bytes de datos de los comandos

Tabla 8: Comandos de

Comando
SCRIPT PLAY SCRIPT SHOW SCRIPT

OpCode Bytes de datos


152 153 154 1+N 0 0

Disponible en modos
Pasivo, seguro, completo. Pasivo, seguro, completo. Pasivo, seguro, completo.

script

Cambia a modo
No hay cambio. No hay cambio. No hay cambio.

4.2.5. Comandos de Demostracin


El

Create

tiene 9 secuencias de comandos preprogramadas, que permiten demostrar diferentes capacidades

del robot. Los comandos de demostracin indican al robot que ejecute un demo. Tres de ellos pueden solicitarse directamente mientras que los dems se solicitan con el cdigo de operacin 136 seguido de el cdigo de la demostracin. Debido a su poca utilidad en el proyecto propuesto, no se considera necesario describir con detalles las demostraciones disponibles. El lector interesado puede remitirse a [6]. La ejecucin de un demos siempre lleva al

Create

al modo pasivo.

4.2.6. Comandos de Actuacin


Los comandos de actuacin permiten mover el robot, controlar el estado de los LED, utilizar el parlante, controlar las salidas digitales y las salidas analgicas de PWM, conocidas como se describen en la tabla 9. Los comandos

low side drivers. Estos comandos

DRIVE

DRIVE DIRECT

interpretan los bytes de informacin como valores enteros de 16 bits

con signo. Se deben enviar siempre con el byte ms signicativo primero. Cuando se emplea

DRIVE

la velocidad, correspondiente a los dos primeros bytes de la trama, puede tomar

un valor de entre -500 y 500 mm/s y el radio de giro, dos ltimos bytes, puede estar entre -2000 y 2000 mm. La velocidad positiva indica movimiento hacia adelante, mientras que un radio de giro positivo indica una curva hacia la izquierda. Cuando se usa el comando

DRIVE

existen algunos casos especiales para el radio de giro:

Los valores 32768 o 32767 (0x8000 o 0x7FFF) hacen que el robot ande directo, sin girar. El valor 0xFFFF har que el robot gire en sentido horario en su puesto. El valor 0x0001 har que el robot gire en sentido contrahorario en su puesto. En el caso del comando

DRIVE DIRECT

no hay casos especiales, y las velocidades de cada rueda estn res-

tringidas al mismo intervalo que en el comando El

DRIVE.

Los dos primeros bytes dan la informacin de velocidad

de la rueda derecha, los otros dos la de la rueda izquierda.

play y advance tienen un solo color, y su estado simplemente se power tiene dos colores, y su intensidad puede variarse. El comando LED recibe tres bytes de datos. El primero indica el estado de los LED power y advance en sus bits 1 y 3, 1 respectivamente . El segundo byte indica el color del LED power, que puede variar entre verde (0) y rojo (255),
cuenta con tres LED. Los LED indica como encendido o apagado. El LED pasando por diferentes tonalidades de amarillo y anaranjado. El tercer byte indica la intensidad con la que alumbrar este LED: un valor de 0 indica apagado y uno de 255 indica intensidad completa. El estado de las salidas digitales se controla con el comando menos signicativos del byte de datos. Para controlar las salidas de alta capacidad de corriente, los llamados dos comandos diferentes. El primero,

Create

DIGITOUT.

El byte de datos requerido por este

comando indica el estado en el que debe ponerse cada una de las tres salidas digitales. ste se indica en los bits

PWM LSD permite seleccionar el ciclo til de cada salida PWM. El comando

low side drivers,

se pueden emplear

espera tres bytes de datos, cada uno con el valor del ciclo til correspondiente a uno de los

drivers. Si se quiere

entregar un ciclo til del 100 %, se debe indicar un valor de 128 en el byte correspondiente. El otro comando,

El bit menos signicativo es el bit 0.


10

Comando
DRIVE DRIVE DIRECT LED DIGITOUT PWM LSD LSD SEND IR LSD

OpCode Bytes de datos Disponible en modos Cambia a modo


137 145 139 147 144 138 151 4 4 3 1 3 1 1 Seguro o completo. Seguro o completo. Seguro o completo. Seguro o completo. Seguro o completo. Seguro o completo. Seguro o completo. No hay cambio. No hay cambio. No hay cambio. No hay cambio. No hay cambio. No hay cambio. No hay cambio.

Tabla 9: Comandos de actuacin

emplea un nico byte de datos, en el que los tres bits menos signicativos seleccionan el estado de cada

uno de los tres

drivers.

Si el bit 0 est en un valor alto, por ejemplo, el LSD 0, correspondiente al pin 23 del

conector DB-25 (ver gura 4), funcionar con un ciclo til del 100 %, mientras que si este bit est en bajo, el LSD 0 estar apagado. El comando

SEND IR

est programado para simplicar la comunicacin, enviando un byte de datos con el

formato que el sensor infrarrojo del

incorporado. Para usar este comando, es necesario agregar un LED emisor de infrarrojos, conectado al

driver

Create espera. Sin embargo, el robot no tiene un emisor de seales infrarrojas low side Create
como un instrumento musical. La descripcin de las

1. En el manual de la interfaz [6] se encuentra la descripcin del circuito apropiado.

Los comandos de las canciones permiten usar el

frecuencias y duraciones de las notas se omite en este documento porque no se consideran de inters para el objetivo del proyecto. Esta informacin se puede encontrar en [6].

4.2.7. Comandos de Sensores


Los comandos de sensores permiten leer el estado de los sensores del

Create,

de sus entradas analgicas y

digitales y el valor de algunas variables internas. Puesto que el perodo de muestreo interno del robot es de 15ms, los comandos de lectura de sensores no deben enviarse con mayor frecuencia. Estos comandos se describen en la tabla 10. La informacin entregada por el

Create

se organiza en 43 paquetes. Cada paquete contiene el valor de uno

o ms sensores. El contenido de los paquetes de sensores y su etiqueta se describe en la seccin 4.2.8. Para leer los sensores del robot se pueden emplear tres comandos. El comando paquete, por una sola vez, se puede utilizar el comando

SENSORS STREAM,

solicita un paquete

especco de informacin sensores que es entregado una sola vez. Para solicitar la informacin de ms de un

QUERRY LIST.

El comando

por otro lado, inicia

una transmisin continua de paquetes de sensores, enviando la informacin solicitada cada 15ms. Este comando es especialmente til en tareas de control, pues automatiza el muestreo del estado del robot. El comando solicitados previamente. Si el byte de datos esperado por y si ste contiene un valor de 1, se reanudar. El comando

PAUSE

puede emplearse para detener o reiniciar la transmisin de datos sin necesidad de cambiar la lista de paquetes

PAUSE contiene un valor de 0, la transmisin se detendr,

SENSORS

espera un byte de datos, que debe contener la identicacin del paquete de sensores

solicitado. Los comandos paquetes solicitados.

QUERRY LIST

STREAM

esperan un total de

que indica cuntos paquetes de sensores se solicitan y los siguientes Tras ejecutar los comandos

N +1 bytes: el primero tendr un valor N , N bytes contendrn la identicacin de los

QUERRY LIST, el robot entrega la informacin solicitada de manera STREAM tiene un formato diferente. La trama entregada inicia con un encabezado, correspondiente a un byte con valor 19. El segundo byte tendr un valor n, que indica 2 cuntos bytes de datos se van a recibir en la trama . Los siguientes n bytes contienen la informacin entregada
y directa. La informacin entregada por el comando por los sensores y el ltimo byte contiene un dato de vericacin, correspondiente al complemento a 2 de todos

SENSORS

Esto depende de la cantidad de informacin entregada por cada paquete de sensores solicitado

11

Comando
SENSORS QUERRY LIST STREAM PAUSE

OpCode Bytes de datos


142 149 148 150 1 1+N . 1+N 1

Tabla 10: Comandos de sensores

Disponible en modos

Cambia a modo
No hay cambio. No hay cambio. No hay cambio. No hay cambio.

Pasivo, seguro, completo. Pasivo, seguro, completo. Pasivo, seguro, completo. Pasivo, seguro, completo.

Tabla 11: Grupos de sensores

ID Tamao en Bytes Paquetes que Contiene


0 1 2 3 4 5 6 26 10 6 10 14 12 52 7 a 26 7 a 16 17 a 20 21 a 26 27 a 34 35 a 42 7 a 42

los bytes entre el encabezado y el byte de vericacin. Estos es, si se suman el encabezado, todos los bytes de datos y el byte de vericacin, el byte menos signicativo del resultado tendr un valor de cero. Este byte hace posible la validacin de los datos recibidos. Es importante recordar que, con el n de mantener una comunicacin correcta, no se deben solicitar ms datos de los que es posible transmitir en 15ms dada la tasa de transmisin seleccionada. Por ejemplo, con una tasa de 57600 baudios, se pueden enviar un mximo de 86 bytes en 15ms. Por lo tanto, el total de informacin transmitido por los paquetes de sensores solicitados no puede contener ms de 83 bytes.

4.2.8. Paquetes de Sensores


El

Create

organiza la informacin de los sensores en 43 paquetes de datos, etiquetados del 0 al 42. Los

paquetes 7 a 42 contienen la informacin de sensores individuales, mientras que los paquetes 0 a 5 agrupan algunos sensores. El paquete 6 enva la informacin de todos los sensores del create. La tabla 11 indica cmo se agrupan los sensores en los paquetes 0 a 6. A continuacin se describen cada uno de los 36 paquetes de sensores individuales.

ID 7: Bumps and wheel drops ID 8: Wall

Un byte describe el estado de los sensores de choque en la parte frontal del

robot (1 indica que hay choque) y del estado d elas ruedas (1 indica que la rueda est cada). Los datos se organizan segn se ve en la tabla 12. Los bits 5 a 7 no se emplean. Este sensor retorna un byte con valor 1 si una pared es visible y un 0 si no. Este sensor retorna un byte con valor 1 si se detecta un escaln del lado izquierdo del robot. Este sensor retorna un byte con valor 1 si se detecta un escaln del lado frontal izquierdo

ID 9: Cli left
del robot.

ID 10: Cli front left

Tabla 12: Registro del paquete Bit Sensor 7 6 5 4 Tercera Rueda 3 Rueda izq.

Bumps and Wheel Drops


2 Rueda der. 1 Choque izq. 0 Choque der.

12

Tabla 13: Registro del paquete de sobrecorriente Bit Sensor 7 6 5 4 Rueda izq. 3 Rueda der. 2 LSD2 1 LSD0 0 LSD1

Tabla 14: Registro del paquete de botones Bit Botn 7 6 5 4 3

Advance

Play

ID 11: Cli front right


derecho del robot.

Este sensor retorna un byte con valor 1 si se detecta un escaln del lado frontal

ID 12: Cli right

Este sensor retorna un byte con valor 1 si se detecta un escaln del lado derecho del robot. Se entrega un byte con un valor de 1 si se ha detectado una pared virtual. Este paquete entrega un byte con informacin sobre los sensores de

ID 13: Virtual wall


corriente d elos

ID 13: LSD and wheel overcurrents


low side drivers

y de los motores que mueven las ruedas, segn se describe en la tabla 13.

Si la capacidad de corriente de los LSD o de los motores de las ruedas es superada, el bit correspondiente se pondr en alto. Es conveninete recordar que los LSD 0 y 1 tienen capacidad de hasta 0.5 A, mientras el LSD 2 puede proporcionar hasta 1.5 A. Los motores de las ruedas, por su parte, tienen cada uno una capacidad de hasta 1 A.

ID 15 y 16: No usados ID 17: Infrared byte


iRobot
el comando

En los paquetes 0, 1 y 6, siempre se envan 2 bytes con valor 0 despus de enviar el

estado de los sensores de sobrecorriente. Entrega el valor del byte recibido por el sensor infrarrojo del

emitida por accesorios como el control remoto del

SEND IR

Roomba

o la base del

Create. La seal puede ser Create, otro Create empleando

o dispositivos creados por el usuario. Los dispositivos producidos por la compaa

emiten un cdigo cuyo signicado se puede encontrar en [6]. Si el sensor infrarrojo del robot no

est detectando seal alguna, se entrega un byte con valor 255.

ID 18: Buttons

Create. Si el bit correspondiente a un botn est en alto, ste est siendo presionado. La distribucin de
los bits se muestra en la tabla 14 Este paquete entrega dos bytes de datos, que contienen la distancia en milmetros recorrida

Este paquete entrega un byte que indica el estado de los botones de iniciar y avanzar del

ID 19: Distance

por el robot desde la ltima vez que se solicit la informacin de distancia. El valor se enva como un dato de 16 bits con signo, con el byte ms signicativo primero. Hay que tener en cuenta que si ste dato no se lee con frecuencia, el contador puede saturarse.

ID 20: Angle

Este paquete entrega dos bytes de datos, que contienen el ngulo en grados recorrido por el

robot desde la ltima vez que se solicit la informacin de ngulo. El valor se enva como un dato de 16 bits con signo, con el byte ms signicativo primero. Hay que tener en cuenta que si ste dato no se lee con frecuencia, el contador puede saturarse.

ID 21: Chargin state ID 22: Voltage

Entrega un byte con un valor que indica el estado de carga del robot. ste puede ser

no cargando (0), carga de reacondicionamiento (1), carga total (2), mantenimiento de carga (3), en espera (4) o condicin de falla en la carga (5). Entrega un valor de 16 bits sin signo que indica el voltaje de la batera en milivolts.

13

Tabla 15: Registro de entradas digitales Bit Entrada 7 6 5 4 DD/BRC 3 DI3 2 DI2 1 DI1 0 DI0

ID 23: Current

Entrega un valor de 16 bits con signo que indica la corriente que uye hacia la batera del

robot. Valores negativos indican que la batera est entregando corriente.

ID 24: Temperature
Celsius.

Entrega un valor de 8 bits con signo que indica la temperatura de la batera en grados

ID 26: Battery capacity


hora, de la batera.

Entrega un valor de 16 bits sin signo que indica la carga actual, en miliamperes por

ID 26: Battery capacity ID 27: Wall signal


pared.

Entrega un valor de 16 bits sin signo que indica la capacidad de corriente, en mili-

amperes por hora, de la batera. Entrega un valor de 16 bits sin signo que indica que tan fuerte es la seal de deteccin de

ID 28: Cli left signal

Entrega un valor de 16 bits sin signo que indica que tan fuerte es la seal de deteccin

de escaln del lado izquierdo.

ID 29: Cli front left signal

Entrega un valor de 16 bits sin signo que indica que tan fuerte es la seal de

deteccin de escaln del lado frontal izquierdo.

ID 30: Cli front right signal ID 31: Cli right signal

Entrega un valor de 16 bits sin signo que indica que tan fuerte es la seal de

deteccin de escaln del lado frontal derecho. Entrega un valor de 16 bits sin signo que indica que tan fuerte es la seal de deteccin

de escaln del lado derecho.

ID 32: Cargo bay digital inputs ID 33: Cargo bay analog signal

Indica el estado de las entradas digitales de la baha de carga, de acuerdo

con la distribucin descrita en la tabla 15. Un dato de 10 bits sin signo indica el voltaje en la entrada analgica. Los dos bits menos signicativos del byte entregado por este sensor indican

ID 34: Chatgin sources available ID 35: OI mode

si el robot est conectado y recibiendo carga de la base (bit 1) o del cargador interno (bit 0). El valor de este byte indica en qu modo se encuentra operando la interfaz serial: apagado

(0), pasivo (1), seguro (2) o completo (3).

ID 36: Song number ID 37: Song playing

Un byte indica cul de las canciones grabadas est seleccionada. Un byte indica, con un valor de 1, si una cancin est siendo tocada. Indica cuntos paquetes de datos han sido enviados.

ID 38: Number of Stream Packets ID 39: Requested velocity


por un comando

Un dato de 16 bits con signo indica cul fue el ltimo valor de rapidez solicitado

DRIVE.

ID 40: Requested radius


por un comando

Un dato de 16 bits con signo indica cul fue el ltimo valor de radio de giro solicitado

DRIVE.
Un dato de 16 bits con signo indica cul fue el ltimo valor de rapidez para

ID 41: Requested right velocity

la rueda derecha solicitado por un comando

DRIVE DIRECT.
14

ID 42: Requested left velocity


5. Conclusiones

Un dato de 16 bits con signo indica cul fue el ltimo valor de rapidez para

la rueda izquierda solicitado por un comando

DRIVE DIRECT.

Puesta en Marcha de un Equipo de Robots Mviles para investigacin y Docencia en el rea de Control Cooperativo. Se
Este documento resume los resultados de la primera fase del proyecto de investigacin titulado gener documentacin concerniente al anlisis cinemtico de robots mviles diferenciales y al manejo especico de la plataforma

iRobot Create.

Se considera que la informacin presentada ac es suciente para que cualquier profesor o estudiante pueda emplear estos equipos sin problemas.

Referencias
[1] G. Oriolo, A. De Luca, and M. Vendittelli, Wmr control via dynamic feedback linearization: Design, implementation, and experimental validation, pp. 835852, 2002. [2] R. W. Brockett, Asymptotic stability and feedback stabilization, in R. W. Brockett, R. S. Millman, and H. J. Sussmann, Eds.

IEEE Transactions on Control Systems Technology, vol. 10, no. 6,

Dierential Geometric Control Theory, IEEE Transactions

Boston: Birkhauser, 1983, pp. 181191.

[3] R. M. Murray and S. Sastry, Nonholonomic motion planning. steering using sinusoids,

on Automatic Control, vol. 38, no. 5, pp. 700716, 1993.


3745, 1996.

[4] A. Astol, Discontinuous control of nonholonomic systems,

Systems and Control Letters, vol. 27, no. 1, pp.

[5] [6]

iRobot Create Owner's Guide, iRobot Corporation, 2006. [Online]. Available: http://www.irobot.com iRobot Create Open Interface, iRobot Corporation, 2006. [Online]. Available: http://www.irobot.com

15

También podría gustarte