asistente robotizado para la gestión interactiva de medicamentos a

85
Universidad Polit´ ecnica de Madrid Facultad de Inform´ atica Tesis de M ´ aster M ´ aster en Inteligencia Artificial Asistente Robotizado para la gesti ´ on interactiva de medicamentos a personas dependientes basado en visi ´ on artificial y comunicaci ´ on simb ´ olica, desarrollado sobre un robot humanoide Meccanoid G15KS adaptado AUTOR: Rub´ en Mart´ ın Garc´ ıa TUTORES: Dar´ ıo Maravall G´ omez-Allende y Javier de Lope Asia´ ın 2016

Upload: doanquynh

Post on 06-Jan-2017

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Asistente Robotizado para la gestión interactiva de medicamentos a

Universidad Politecnica de Madrid

Facultad de Informatica

Tesis de Master

Master en Inteligencia Artificial

Asistente Robotizado para la

gestion interactiva de

medicamentos a personas

dependientes basado en vision

artificial y comunicacion

simbolica, desarrollado sobre un

robot humanoide Meccanoid

G15KS adaptado

AUTOR: Ruben Martın Garcıa

TUTORES: Darıo Maravall Gomez-Allende y Javier de Lope Asiaın

2016

Page 2: Asistente Robotizado para la gestión interactiva de medicamentos a

Resumen

Existe una gran cantidad de personas dependientes que requieren de ayuda para

diversas tareas. Entre todas ellas la que mas se repite es la administracion de medica-

mentos. En estos casos lo habitual es que un familiar atienda a la persona dependiente

o contrate a un asistente social, sin embargo esto no siempre es posible. Una solucion

a esto podrıa ser el uso de un robot que se encargue de gestionar la medicacion de la

persona dependiente.

En este trabajo se ha disenado un procedimiento que puede ser usado para gestionar

la medicacion de personas dependientes. El procedimiento se divide en dos etapas. La

primera consiste en una fase de adquisicion de lexico comun basado en anclaje visual. Se

usa vision artificial y un puntero laser para senalar el medicamento y texto para indicar

su nombre. Este proceso tambien es utilizado para el entrenamiento del algoritmo de

clasificacion.

La segunda fase, denominada fase de busqueda, consiste en encontrar un medicamento

situado sobre una estanterıa repleta de medicamentos diferentes. El robot hace uso de la

vision artificial para segmentar cada medicamento y un clasificador knn para encontrar

el medicamento. Posteriormente el robot es capaz de senalizar el medicamento con su

puntero laser.

Para la realizacion de las pruebas se ha adaptado un robot humanoide Meccanoid

G15KS. Se ha modificado la estructura para anadir una plataforma pan-tilt, un puntero

laser y una camara. Tambien se ha sustituido el procesador original por un miniorde-

nador Raspberry Pi para realizar la vision por computador y una placa Arduino para

el control de motores.

ii

Page 3: Asistente Robotizado para la gestión interactiva de medicamentos a

Abstract

There are many disabled people who require help to do different tasks. The one which

repeats a lot is drugs manage. Usually, in these situations a relative or a social assistant

takes care of the disabled person. However this can not be posible always. The use of a

robot witch manages disabled person’s drugs could be a solution for this fact.

In this work a possible procedure has been designed that can be used to manage the

medication of dependent people. The procedure is divided in two stages. First stage

consists of a phase of acquisition of common lexicon based on visual anchorage. We use

computer vision and the laser to point to the drug and text to indicate its name. This

process also is used for training the classiffier.

The second stage, denominated search phase, consists of finding a drug located on a

bookcase filled with other different drugs. The robot use computer vision to segment

each medicine and a knn classifier to find the drug. Later, the robot points the drug

with its laser.

To test this worh we has adapted a humanoid robot named Meccanoid G15KS. Its

structure has modified to add a pan-tilt mechanism, a laser, and a camera. Also, we

replace the original processor by a Raspberry Pi single-board computer to process

computer vision, and a Arduino board for the engine control.

iii

Page 4: Asistente Robotizado para la gestión interactiva de medicamentos a

Indice general

Resumen II

Abstract III

1. Introduccion 1

1.1. Planteamiento del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Descripcion de la aplicacion 6

2.1. Escenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2. Humanoide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3. Universo de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.4. Planteamiento del proceso . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4.1. Adquisicion de lexico . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4.2. Fase de busqueda . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3. Descripcion hardware del robot 16

3.1. Diseno del robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.2. Diseno electronico . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2. Detalles tecnicos del hardware . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.1. Meccanoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.2. Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.2.3. Modulo camara de Raspberry Pi . . . . . . . . . . . . . . . . . 29

3.2.4. Puntero laser . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.2.5. Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

iv

Page 5: Asistente Robotizado para la gestión interactiva de medicamentos a

Indice general

4. Proceso de adquisicion de lexico 33

4.1. Esquema general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.2. Fases del proceso de adquisicion de lexico . . . . . . . . . . . . . . . . . 37

4.2.1. Filtrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2.2. Deteccion de bordes . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2.3. Deteccion de laser . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4.2.4. Identificar objeto apuntado . . . . . . . . . . . . . . . . . . . . 41

4.2.5. Segmentar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4.2.6. Guardado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5. Proceso de busqueda 45

5.1. Fases de la busqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.1.1. Busqueda de objetos . . . . . . . . . . . . . . . . . . . . . . . . 47

5.1.2. Segmentacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.1.3. Clasificar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.1.4. Calcular movimiento del robot . . . . . . . . . . . . . . . . . . . 49

5.1.5. Mover el robot y senalar . . . . . . . . . . . . . . . . . . . . . . 52

6. Implementacion 54

6.1. Plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6.2. Lenguaje de programacion . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.3. Librerıas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

6.4. Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

7. Diseno y evaluacion del Reconocedor de medicamentos 58

7.1. Clasificador knn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

7.2. Variables discriminantes . . . . . . . . . . . . . . . . . . . . . . . . . . 60

7.3. Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.4. Universo de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

7.5. Resultados del clasificador . . . . . . . . . . . . . . . . . . . . . . . . . 67

8. Conclusiones 70

9. Lıneas de trabajo futuro 73

v

Page 6: Asistente Robotizado para la gestión interactiva de medicamentos a

Indice de figuras

1.1. Vision artıstica del proceso de aprendizaje. . . . . . . . . . . . . . . . . 2

1.2. Vision artıstica del proceso de busqueda. . . . . . . . . . . . . . . . . . 3

2.1. Escenario de desarrollo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2. Estanterıa de medicamentos. . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3. Robot Meccanoid G15KS modificado. . . . . . . . . . . . . . . . . . . . 9

2.4. Adquisicion de lexico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.5. Proceso de busqueda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1. Meccanoid G15 KS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2. Modificacion de la cabeza. . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.3. Proceso de fabricacion de la pieza para la camara y el laser. . . . . . . 21

3.4. Piezas personalizadas para el soporte de Raspberry Pi y Arduino. . . . 21

3.5. Esquema electronico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.6. Modelos de Meccanoid. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.7. Placa Raspberry Pi 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.8. Modulo camara de Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . 29

3.9. Puntero laser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.10. Placa BQ Zum Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1. Diagrama de estados del proceso de aprendizaje . . . . . . . . . . . . . 34

4.2. Diagrama de actividad del proceso de aprendizaje . . . . . . . . . . . . 36

4.3. Proceso de filtrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.4. Deteccion de bordes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.5. Deteccion de laser e identificacion. . . . . . . . . . . . . . . . . . . . . . 42

4.6. Imagenes segmentadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

vi

Page 7: Asistente Robotizado para la gestión interactiva de medicamentos a

Indice de figuras

5.1. Diagrama de actividad del proceso de busqueda . . . . . . . . . . . . . 46

5.2. Proceso de busqueda de Aspirina. . . . . . . . . . . . . . . . . . . . . . 49

5.3. Esquema FOV vertical y horizontal de la camara. . . . . . . . . . . . . 50

5.4. Modelizado de la cabeza del robot. . . . . . . . . . . . . . . . . . . . . 51

7.1. Universo de trabajo: Almax. . . . . . . . . . . . . . . . . . . . . . . . . 62

7.2. Universo de trabajo: Aspirina. . . . . . . . . . . . . . . . . . . . . . . . 63

7.3. Universo de trabajo: BB Cream. . . . . . . . . . . . . . . . . . . . . . . 63

7.4. Universo de trabajo: Celestoderm. . . . . . . . . . . . . . . . . . . . . . 64

7.5. Universo de trabajo: Dretine.. . . . . . . . . . . . . . . . . . . . . . . . 64

7.6. Universo de trabajo: Enantyum. . . . . . . . . . . . . . . . . . . . . . . 65

7.7. Universo de trabajo: Espidifen. . . . . . . . . . . . . . . . . . . . . . . 65

7.8. Universo de trabajo: Fungusol. . . . . . . . . . . . . . . . . . . . . . . . 66

7.9. Universo de trabajo: Glicilax. . . . . . . . . . . . . . . . . . . . . . . . 66

7.10. Universo de trabajo: Oliderm. . . . . . . . . . . . . . . . . . . . . . . . 67

7.11. Universo de trabajo: Pharmaton. . . . . . . . . . . . . . . . . . . . . . 67

7.12. Grafica del resultado de leave-one-out . . . . . . . . . . . . . . . . . . . 68

vii

Page 8: Asistente Robotizado para la gestión interactiva de medicamentos a

Indice de cuadros

3.1. Especificaciones del MeccaCerebro . . . . . . . . . . . . . . . . . . . . . 26

3.2. Caracterısticas principales de los robots Meccanoid . . . . . . . . . . . 27

3.3. Especificaciones de las Placas Genuino UNO y BQ Zum Core . . . . . . 32

7.1. Resultado Leave-one-out . . . . . . . . . . . . . . . . . . . . . . . . . . 69

7.2. Matriz de confusion (k=1) . . . . . . . . . . . . . . . . . . . . . . . . . 69

viii

Page 9: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 1

Introduccion

La dependencia personal es la incapacidad funcional para el desarrollo de activida-

des de la vida diaria y el requerimiento de ayuda para su realizacion. Las personas

dependientes se caracterizan por la perdida o la no adquisicion de habilidades funcio-

nales, que se definen como el conjunto de destrezas que se requieren para llevar una

vida independiente y que poseen las personas que se desenvuelven por sı mismas en

su entorno proximo. Para establecer la calificacion de personas dependientes deben es-

tar en una situacion o grado lo suficientemente notable o elevado de discapacidad y

disfuncionalidad como para necesitar el concurso, la intervencion en forma de ayuda,

auxilio, soporte y cuidado personal por terceros, bien de su familia o bien la asistencia

de servicios sociales.

Dependiendo el grado de dependencia de una persona, esta puede requerir ayuda en

tareas como la alimentacion, higiene o administracion de medicamentos, posiblemente

siendo esta ultima la mas demandada. El problema mas comun es que la persona depen-

diente pierde la nocion del tiempo y se olvida de cuando tiene que tomar la medicina,

o incluso se puede llegar al caso de que desconoce cual es la medicacion y cantidad

que debe tomar en cada caso. En otras ocasiones puede ocurrir que el farmaceutico

proporcione el medicamento incorrecto y la persona dependiente no se de cuenta; esto

puede implicar graves danos a la salud. Normalmente otra persona, sea familiar o un

asistente, es el encargado de supervisar o gestionar la administracion de medicamentos

de forma continua.

1

Page 10: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 1. Introduccion

En muchas ocasiones el familiar que debe ayudar a la persona dependiente no dispone

de tiempo ni de medios para atender a esa persona, y la unica solucion que se encuentra

a dıa de hoy es la de contratar ayuda externa, como un asistente de servicios sociales.

Una nueva forma de ayuda que se esta investigando recientemente es el uso de robots

para la ayuda de este tipo de personas (Tiwari et al., 2011), (Cunha et al., 2014).

A continuacion se muestran una serie de trabajos relacionados: (Rouanet et al., 2013),

(Kemp et al., 2008), (Rouanet et al., 2009), (Yu y Ballard, 2003), (Parde et al., 2015),

(Nagai et al., 2003).

1.1. Planteamiento del proyecto

En el transcurso de este trabajo vamos a ver una novedosa tecnica que permite

adaptar un robot para su uso con personas dependientes. Mas concretamente, nos vamos

a cenir al uso del robot en la tarea de gestionar la medicacion. La idea principal es que

el robot pueda aprender mediante un lexico con anclaje visual a recordar e indicar al

paciente el medicamento determinado que debe tomar en cada momento.

Figura 1.1: Vision artıstica del proceso de aprendizaje.

El proceso de adquisicion de lexico consiste en disponer los diferentes medicamentos

frente al robot y el usuario, por ejemplo, en una mesa o en una estanterıa. Tanto la

2

Page 11: Asistente Robotizado para la gestión interactiva de medicamentos a

1.1. Planteamiento del proyecto

persona como el robot deben mirar al mismo punto en el espacio, y por ello deben de

alinear sus perspectivas. Una vez que ambos observan lo mismo procedemos al apren-

dizaje, para ello el usuario debe indicar un medicamento, o bien mediante un gesto

deıctico o bien mediante un puntero laser, y al mismo tiempo debe indicar el nombre

del medicamento. De esta forma el robot sera capaz de etiquetar el medicamento con

el nombre que le corresponde. En este trabajo se ha decidido usar un puntero laser

como metodo de senalizacion y texto escrito como metodo para indicar el nombre del

medicamento.

El proceso de busqueda, es decir, el momento en el que el robot debe indicar la

medicacion a la persona dependiente, puede realizarse de dos formas diferentes: por un

lado el robot puede disponer de una agenda en la cual sabe que medicamento debe

indicar y en que dıa y hora. En el otro caso el paciente pregunta al robot que le

indique donde se encuentra un medicamento. En ambos casos el proceso es el mismo,

independientemente de la forma en la que se pida el medicamento. El robot se situara

frente a los medicamentos y movera la cabeza en busca de aquel que se haya solicitado.

Una vez que lo encuentre, el robot centrara el medicamento en la imagen y activara el

laser senalando de forma precisa cual es el medicamento.

(a) Situacion 1. (b) Situacion 2.

Figura 1.2: Vision artıstica del proceso de busqueda.

Para esta tarea que hemos planteado, el robot que necesitaremos debera tener forma

antropomorfica y con una apariencia que le resulte simpatica al paciente. Esta ultima

cuestion se debe a que el mayor problema que nos encontramos a la hora de introducir

3

Page 12: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 1. Introduccion

un robot de companıa en un entorno familiar, especialmente si este es poco atractivo

y/o tiene una forma extrana, muy lejana a la humana, la respuesta mas comun es el

rechazo.

El robot debera poder realizar movimientos de la cabeza tanto verticales como ho-

rizontales. Si el robot ademas es capaz de moverse por el entorno y de mover sus

extremidades nos ofrecera mayor flexibilidad a la hora de realizar tareas mas complejas

o combinar algunas de ellas. Al mismo tiempo resulta mucho mas agradable tratar con

el robot si este es capaz de hablar y mover sus extremidades al mismo tiempo.

Sera necesario que el robot disponga de una camara y un laser en la cabeza. Para

simplificar el problema, el laser debera estar alineado con el campo de vision de la

camara; de esta manera el puntero laser se encontrara siempre en el centro de la imagen.

La conjuncion del movimiento horizontal y vertical de la cabeza con la incorporacion

de una camara y un laser, facilita que en la fase de aprendizaje el robot pueda alinear

su ”vistacon la del usuario para observar el mismo punto en el espacio. Ası, en la

fase de explotacion, el puntero marcara el medicamento en cuestion y el usuario podra

reconocer con exactitud de cual se trata.

Las pruebas se han realizado en un robot Meccanoid modificado. La primera mo-

dificacion consiste en descartar el procesador que trae de fabrica el robot y usar un

miniordenador, mas concretamente una Raspberry Pi. Para que el control de motores y

servos sea independiente y libere uso del procesador se ha anadido una placa Arduino

para su control. Como se trata de un robot fabricado por Meccano, esta formado a base

de piezas sencillas de plastico unidas por tornillos, lo que permite anadir, modificar o

quitar alguna de las partes del robot con total facilidad. En este caso se han creado

algunas piezas personalizadas, las cuales se han usado para sujetar el laser, la camara,

la placa de Arduino y la Raspberry Pi.

4

Page 13: Asistente Robotizado para la gestión interactiva de medicamentos a

1.2. Objetivos

1.2. Objetivos

La idea principal de este proyecto consiste en disenar un sistema que permita a

un robot buscar e identificar medicamentos para ayudar a personas dependientes. A

continuacion se muestran los diferentes objetivos que deben completarse.

El primer objetivo que consiste en disenar un metodo de comunicacion entre hombre

y maquina simbolico.

Se quiere implementar un sistema sobre un robot que le permita realizar la tarea

de adquisicion de lexico mediante anclaje visual. De tal forma que el uso de un lexico

comun permita la comunicacion entre hombre y maquina.

Se debe disenar un sistema capaz de encontrar un medicamento dentro de un entorno

de forma autonoma, que se pueda ejecutar en diferentes situaciones.

Se programara un metodo basado el vision artificial que permita reconocer los dife-

rentes medicamentos.

Finalmente sera necesario disenar y fabricar un robot que permita alcanzar los obje-

tivos anteriores.

5

Page 14: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 2

Descripcion de la aplicacion

El objetivo principal de este proyecto es conseguir que un robot sea capaz de gestionar

la medicacion a una persona dependiente de forma autonoma. Para ello el robot debe

saber buscar e identificar los medicamentos que necesite el paciente en cada momento.

Lo primero que debe hacer el robot es aprender como son los medicamentos y que

nombre tienen. Una vez aprendidos todos los medicamentos que necesita el paciente,

podremos programar una agenda en la cual indicaremos las horas a las que debe tomar

el medicamento. Ademas en cualquier momento podremos preguntar al robot donde se

encuentra un medicamento, simplemente diciendo su nombre. Como vemos, aparecen

dos fases, una de adquisicion de lexico y otra de busqueda de medicamentos.

Vamos a llamar paciente a la persona dependiente a la que han de administrarse

medicamentos y cuidador a la persona que normalmente esta a su cuidado. El cuidador

sera la persona encargada de realizar el proceso de adquisicion de lexico.

Para resolver el problema que nos atana vamos a seguir la metodologıa de la navaja de

Ockham que dice: ”En igualdad de condiciones, la explicacion mas sencilla suele ser la

mas probable”. En ingenierıa una solucion sencilla suele ser mucho mas eficiente que una

solucion compleja. Por este motivo en este proyecto nos hemos centrado en encontrar y

aplicar solo las soluciones mas sencillas entre todas las que se han propuesto. Tambien

es un punto de partida para mejorar y adaptar el problema a situaciones mas complejas

en un trabajo futuro.

6

Page 15: Asistente Robotizado para la gestión interactiva de medicamentos a

2.1. Escenario

2.1. Escenario

Lo primero es definir como va a ser el escenario en el que se van a realizar los ex-

perimentos. Vamos a situar el robot frente a una estanterıa donde se van a colocar los

medicamentos. En la fase de adquisicion de lexico el cuidador debe encontrarse al lado

del robot y mirar hacia la estanterıa. En la fase de busqueda, ya sea el paciente o el cui-

dador, deberan situarse nuevamente al lado del robot para poder ver que medicamento

esta senalando el robot con el puntero laser una vez que este ha activado su alarma.

Figura 2.1: Escenario de desarrollo.

Los medicamentos van a estar colocados en una estanterıa con 3 baldas, que puede

estar anclada en una pared o puesta encima de una mesa. Se debe tener en cuenta que

debe estar a una altura a la cual el robot pueda acceder facilmente. Los medicamentos

se dispondran de forma vertical en las baldas de tal forma que no se superpongan.

La colocacion de los medicamentos en vertical nos ayuda a solucionar dos proble-

mas principalmente; si colocamos los medicamentos sobre una mesa, todas las cajas

se situan en el mismo plano lo que aumenta la probabilidad de que los medicamentos

se superpongan unos delante de otros. Nos encontramos con el problema de identificar

y segmentar que parte de la imagen corresponde a cada medicamento. Por otro lado,

al situarse sobre una mesa, la cantidad de posiciones y perspectivas en las que puede

7

Page 16: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 2. Descripcion de la aplicacion

situarse cada medicamento es mucho mayor que las posiciones que puede tomar en la

estanterıa, lo que complica considerablemente el reconocimiento.

(a) Anclada a la pared. (b) Puesta sobre una mesa.

Figura 2.2: Estanterıa de medicamentos.

La estanterıa se ha fabricado desde cero para ajustarla a las medidas y requisitos del

proceso. El material que se ha usado es carton pluma, que consiste en dos cartulinas

de color blanco, rellenas por una capa de poliuretano. Este material aunque es muy

ligero tiene la consistencia suficiente como para soportar las cajas de los medicamentos.

Para mejorar el contraste entre los medicamentos y la estanterıa, esta se ha recubierto

con goma eva de color negro. El nombre tecnico es etilvinilacetato, es un polımero

termoplastico conformado por unidades repetitivas de etileno y acetato de vinilo. Este

material ofrece una superficie uniforme y mate, lo que evita reflejos indeseados.

2.2. Humanoide

El humanoide que se ha usado en los experimentos de este trabajo es un Meccanoid

G15 KS modificado, al cual se ha anadido lo siguiente: capacidad de mover la cabeza de

forma horizontal y vertical, una camara, un laser, una placa Raspberry Pi y un Arduino.

En el siguiente capıtulo se explica con mas detenimiento cada una de las modificaciones

realizadas en el robot.

8

Page 17: Asistente Robotizado para la gestión interactiva de medicamentos a

2.3. Universo de trabajo

Figura 2.3: Robot Meccanoid G15KS modificado.

La comunicacion hombre-maquina se va a realizar mediante texto. Los mensajes del

robot se van a mostrar en una pantalla y las ordenes se van a escribir con un teclado.

Lo ideal es que este proceso de comunicacion se hiciese mediante voz, ya que se trata

del metodo de comunicacion mas usado entre humanos. Sin embargo nos encontramos

ante varios problemas que nos dificultan su uso. Para empezar, hay que tener en cuenta

que el proceso de reconocimiento de voz es una gran reto, de hecho hay un gran numero

de personas trabajando en ese tema. Resolver el tema de reconocimiento de voz ademas

del problema de vision planteado, sobrepasa los objetivos planteados en este proyecto.

Aunque existen algunas aplicaciones de reconocimiento de voz, las que mejor funcionan

son aplicaciones comerciales, y resulta costoso adquirirlas. Ademas, habrıa que haber

anadido al robot un microfono y unos altavoces, junto a las modificaciones que ya se

han hecho.

2.3. Universo de trabajo

El universo de trabajo es una coleccion finita de elementos que se van a utilizar

durante el experimento para poder probar y validar el planteamiento propuesto.

Como el objetivo es reconocer y encontrar medicamentos, deberemos elegir cuales

vamos a usar. Se parte de la premisa de trabajar con unos 10 o 12 medicamentos

diferentes. Tambien se ha decidido usar la caja en vez de los blisters o las capsulas.

9

Page 18: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 2. Descripcion de la aplicacion

Si ya resolver el problema de clasificacion puede resultar complicado para la caja, el

problema se vuelve mas complejo si hay que distinguir entre los blisters o la propia

capsula del medicamento porque las capsulas o los blisters son practicamente iguales

en todos los casos.

2.4. Planteamiento del proceso

Como hemos mencionado antes, la resolucion del problema planteado debe llevarse

a cabo en dos fases. Una primera de adquisicion de lexico, en la cual el robot debe

aprender el nombre y la apariencia de cada medicamento. La segunda fase, serıa la de

busqueda, en la cual el robot debe buscar el medicamento indicado en el entorno.

2.4.1. Adquisicion de lexico

Figura 2.4: Adquisicion de lexico.

En el proceso de aprendizaje de lexico vamos a ensenar al robot el nombre de cada

medicamento. Este proceso implica que debemos resolver una serie de problemas que

surgen del propio planteamiento. Para empezar tenemos que tener en cuenta que el

robot va a tener dentro de su campo de vision varias cajas de medicamentos al mismo

tiempo, y debemos pensar en una forma de senalar un medicamento y distinguirlo del

resto. El metodo mas intuitivo es la senalizacion mediante un gesto deıctico, es decir

10

Page 19: Asistente Robotizado para la gestión interactiva de medicamentos a

2.4. Planteamiento del proceso

un gesto con la mano. Podrıamos hacerlo senalando con el dedo, pero esto anade otra

problema extra y es identificar hacia donde esta apuntando con el dedo. Otro gesto que

se puede emplear es el de tocar el medicamento, ya sea con un dedo o con la mano

entera. Tambien podemos coger el medicamento con las manos y mostrarlo de frente al

robot. En todos estos casos nos encontramos con el problemas de segmentar los dedos o

la mano del medicamento, y en algunas ocasiones puede entorpecer el reconocimiento.

Otro metodo que se puede usar es un puntero laser para senalar el medicamento.

Simplemente el cuidador se encargarıa de apuntar el medicamento con el laser. Este

proceso simplifica el problema de segmentacion mencionado anteriormente, ya que no

tenemos ningun objeto que se superponga por encima de la caja, como si ocurre al

coger el medicamento con las manos. Sin embargo surge el siguiente problema: como

el puntero laser va a situarse dentro de la caja del medicamento, si capturamos una

imagen mientras el puntero sigue dentro, surge el problema de segmentar el puntero del

medicamento. Sin embargo es facil de evitarlo, simplemente se debe capturar la imagen

una vez que dejemos de apuntar con el laser.

La forma mas sencilla de detectar el laser es mediante un filtrado y quedarnos solo con

los pıxeles con mayor intensidad de la imagen. Esto anade otro problema mas difıcil de

resolver, que aparece cuando la iluminacion de la escena es muy intensa, por ejemplo, si

iluminamos la escena con un foco que apunte directamente a los medicamentos, podemos

encontrarnos con una gran cantidad de pıxeles con un valor de intensidad muy alto,

que van a interferir directamente con la deteccion del laser. Esto puede provocar dos

comportamientos, o que se detecten multiples punteros laser, o que el laser no sea

detectado.

Se analizaron las dos opciones, y al final el metodo que se ha elegido es el de la

deteccion del puntero laser.

Ademas de senalar el medicamento, el robot debe de ser capaz de identificar donde

esta el borde del medicamento para recortarlo, en palabras mas tecnicas, debe segmentar

el medicamento de la imagen. El primer paso para resolver este problema consiste en

identificar los diferentes objetos que se encuentran dentro del campo de vision del robot.

11

Page 20: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 2. Descripcion de la aplicacion

El siguiente paso consiste en usar la senalizacion del medicamento con el puntero laser

para realizar la segmentacion de dicho medicamento.

Si tenemos en cuenta que se va a apuntar en el interior del medicamento, este proceso

anade el problema de identificar donde se encuentran los bordes. La forma de solucio-

narlo es encontrando todos los bordes de todos los objetos que aparecen en la imagen,

para despues relacionarlo entre sı de forma que conozcamos que bordes estan contenidos

en otros. Si conseguimos saber esto, podemos saber cual es el borde que se corresponde

con el exterior de la caja.

En este punto podemos segmentar la imagen usando el contorno exterior de tal forma

que nos quedemos unicamente con los pıxeles de la imagen que se encuentran dentro del

contorno. Como tenemos segmentada la imagen, deberemos indicar cual el su nombre.

Este es el punto donde se realiza la adquisicion del lexico.

Este proceso se realiza simultaneamente con la creacion de un dataset de clasificacion.

En este punto en el que sabemos el nombre del medicamento y tenemos la referencia

visual, que corresponde con la imagen segmentada, podemos usarlo para incluirlo en un

dataset que nos permita entrenar un clasificador.

El problema de la clasificacion surge de escoger un conjunto de variables discriminan-

tes adecuadas. Se podrıan usar caracterısticas fısicas del medicamento, como la forma,

el tamano, el color, su nombre, etc. La forma y el tamano, en nuestro caso no son muy

fiables, puesto que estamos trabajando con cajas de medicamentos, y todos tienen la

misma forma y en muchos casos el tamano es muy parecido. Usar el color, o mas con-

cretamente el histograma de cada uno de los canales rojo, verde y azul de la imagen

puede proporcionar resultados mucho mas discriminantes, siempre y cuando las cajas

de los medicamentos se diferencien entre sı, que es lo que suele ocurrir con las cajas

de medicamentos de las grandes farmaceuticas. Si tratamos con medicamentos que son

practicamente iguales, como es el caso de los medicamentos genericos, este sistema pue-

de ser inviable. En este caso deberıamos usar alguna otra cosa, como un sistema capaz

de leer el nombre del medicamento, pero este proceso anade un gran numero de dificul-

tades. Para empezar, debemos conocer donde se situan al letras que corresponden con

12

Page 21: Asistente Robotizado para la gestión interactiva de medicamentos a

2.4. Planteamiento del proceso

el nombre del medicamento, para posteriormente implementar un OCR que reconozca

cada una de las letras. En este caso se ha decidido usar el histograma de la imagen

segmentada.

Llegados a este punto, solo queda almacenar las variables discriminantes en un dataset

etiquetado con el nombre del medicamento y finalizarıa el proceso de adquisicion de

lexico de uno de los medicamentos. Este proceso serıa necesario repetirlo varias veces

por cada medicamento para conseguir un dataset con un tamano suficiente.

2.4.2. Fase de busqueda

En la fase de busqueda el robot debe encontrar y senalar el medicamento indicado.

La parte complicada de este proceso es que el robot debe ser capaz de distinguir cual

es el medicamento correcto y descartar el resto.

El primer paso consiste en encontrar todos los objetos que aparecen dentro del cam-

po de vision. Para ello podemos utilizar el mismo procedimiento de reconocimiento de

bordes que se ha usado en el fase de adquisicion de lexico. Como en esta fase no dispo-

nemos de un puntero laser que nos guıe en el proceso, deberemos tratar de encontrar

todos los medicamentos usando unicamente la vision por computador.

Como partimos de una lista con todos los contornos de cada uno de los objetos de la

imagen, una solucion a este problema consiste en buscar los bordes exteriores de todas

las cajas. Se puede partir de un contorno aleatorio y hallar el borde exterior. Al igual

que usamos la jerarquıa para buscar el borde exterior, podemos usarla para encontrar

los contornos hermanos, es decir detectar el resto de bordes exteriores.

Pueden surgir algunos problemas a la hora de usar este metodo, como que el contorno

exterior no se corresponda con el contorno real del medicamento. Para resolverlo se

plantea un metodo que usa varios fotogramas consecutivos para encontrar la mejor

solucion, que se corresponda con el borde exterior real del medicamento.

Se debera segmentar la escena para obtener un conjunto de imagenes mas pequenas

que se correspondan con cada uno de los medicamentos detectados. El procedimiento

13

Page 22: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 2. Descripcion de la aplicacion

vuelve a ser el mismo que para el proceso de adquisicion de lexico, se recorta la imagen

usando el contorno exterior del medicamento.

La siguiente tarea consiste en reconocer a que medicamento corresponde cada imagen

segmentada. Para ello se puede hacer uso de un clasificador, como por ejemplo un

clasificador k-nn. El proceso seria el siguiente: por cada imagen segmentada se obtienen

sus variables discriminantes y se aplica el algoritmo de clasificacion. Este metodo da

como resultado el nombre del medicamento que corresponde a la imagen segmentada.

Cuando el nombre devuelto por el clasificador coincida con el nombre del medicamento

buscado, significa que lo hemos encontrado y por lo tanto, savemos cual es su posicion

en la escena.

(a) Situacion 1. (b) Situacion 2.

Figura 2.5: Proceso de busqueda.

Llegados a este punto, donde sabemos la posicion del medicamento dentro de la

imagen, es el momento de proceder con su senalizacion. Surgen varias opciones para

senalar, podemos tratar de usar la mano del robot o anadir un puntero laser en su

mano para apuntar hacia el medicamento, de forma analoga a como lo usamos en la

fase de adquisicion de lexico. Esto anade el problema de como mover cada una de

las articulaciones del brazo para que el brazo se posicione correctamente. Se puede

solucionar modelizando el robot o usando algun algoritmo de control que ajuste la

posicion de la mano o el laser teniendo en cuenta que el error a minimizar es la distancia

de la situacion actual respecto de la posicion objetivo, que corresponde con el centro

del medicamento.

14

Page 23: Asistente Robotizado para la gestión interactiva de medicamentos a

2.4. Planteamiento del proceso

El ultimo paso consiste en avisar al paciente de que estamos senalando el medi-

camento. Nuevamente la opcion mas logica es el habla, pero como hemos explicado

anteriormente, este tema lo hemos dejado aparcado. La opcion que queda es utilizar

texto. El inconveniente que esto genera es que si el paciente no esta mirando a la pan-

talla no se va a enterar de que el robot ha senalado un medicamento. La solucion a esto

puede ser el sonido, simplemente emitiendo una alarma.

15

Page 24: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3

Descripcion hardware del robot

Se puede definir al robot inteligente autonomocomo un sistema compuesto por un

controlador electronico acoplado a un cuerpo mecanico, y con ciertas caracterısticas de

autonomıa, movilidad y razonamiento. Para que esto se cumpla, esta maquina necesita

de adecuados sistemas sensoriales para percibir el entorno, de actuadores que le permi-

tan moverse e interactuar con el entorno y de un sistemas de control que se encarga de

realizar tareas a partir de los estımulos detectados.

Figura 3.1: Meccanoid G15 KS.

Un robot social es aquel que interactua y

se comunica con las personas de forma sen-

cilla y agradable siguiendo comportamientos,

patrones y normas sociales. Para eso, ademas

de tener apariencia humana, se necesita que

disponga de habilidades que se ubican dentro

del dominio de la llamada inteligencia social.

La tarea de gestion de medicamentos a una

persona dependiente abordada en este proyec-

to se encuentra justamente dentro del dominio

de la inteligencia social, y por ello podemos

deducir que es necesario disponer de un robot

social.

16

Page 25: Asistente Robotizado para la gestión interactiva de medicamentos a

En el mercado se pueden encontrar multiples robots sociales para la realizacion de

esta tarea, como son el caso de los robots Nao y su hermano mayor Pepper fabricados

por Aldebaran, o el recien salido EMIEW2 de Hitachi. Desgraciadamente la mayorıa de

estos robots comerciales tienen un precio tan elevado que solo unos pocos privilegiados

disponen de los recursos necesarios para adquirirlo.

Otra opcion bastante comun a la hora de necesitar un robot es crearlo uno mismo,

desde 0, con la filosofıa ”hazlo tu mismo”(DIY, Do It Yourself en ingles). Este proceso

requiere de una gran labor de ingenierıa y sera necesario pasar por las siguientes tareas:

Seleccion de los materiales a usar, ası como motores, sensores y otro tipo de

actuadores.

Identificar los requisitos mınimos de procesador necesarios.

Disenar la estructura.

Disenar la electronica.

Fabricar las piezas.

Ensamblar las piezas junto a los motores, sensores y actuadores.

Fabricar los circuitos impresos y soldar todos los componentes.

Conectar todos los elementos y programar el firmware.

Una opcion intermedia es la de usar un artefacto existente, como un vehıculo, un

juguete o un robot comercial mas barato y modificarlo para anadir todas las capacidades

que se necesiten en la tarea que se va a realizar. Esta opcion puede ahorrar tiempo a la

hora de construir el robot, puesto que no es necesario disenar la estructura completa del

robot ni fabricar piezas desde cero, pero al mismo tiempo se puede convertir en un arma

de doble filo, puesto que se aumenta la complejidad de tener que adaptar las diversas

piezas de las que esta compuesto el artefacto para convertirlo en un robot funcional. En

algunas ocasiones, sobretodo en artefactos muy pequenos, puede resultar mucho mas

complicado que crear un robot desde cero. Si logramos disponer de un buen artefacto

desde el que partir, tenemos que tener en cuenta que el resto de tareas de diseno siguen

17

Page 26: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

estando presentes, como el diseno electronico, la instalacion de sensores y actuadores o

la programacion del firmware.

Esta ultima opcion es la que se ha llevado a cabo para la realizacion de este proyecto.

Mas concretamente se ha optado por modificar un robot de juguete llamado Meccanoid

G15 KS fabricado por la empresa Meccano. En las siguientes secciones se va a explicar

el diseno realizado y las especificaciones de los componente hardware utilizados.

3.1. Diseno del robot

El primer paso consiste en montar el diseno original del Meccanoid G15 KS para

analizar los pros y los contras de adaptar este robot. A primera vista, su capacidad

para hablar, reconocer voz y el movimiento de sus extremidades pueden indicar que se

trata de un buen candidato, pero vamos a verlo con mas detalle.

La primera ventaja de usar este robot es que tiene una estructura con una altura

de 122cm, lo que le permite interactuar tanto con un humano como con el entorno de

una forma muy comoda. Por ejemplo, tiene la altura suficiente para ver los objetos que

hay encima de una mesa sin necesidad de subirse a un escalon. Tambien dispone de un

sistema de ruedas que le permiten moverse por el entorno, lo que le ofrece capacidades

de navegacion.

El diseno de las articulaciones de los brazos no es del todo util para interactuar con

el entorno. Esto es debido a que el hombro y el codo realizan el movimiento sobre el

mismo eje impidiendo que el brazo alcance cualquier posicion a su alrededor. Por si

fuera poco esta limitacion, la mano tampoco es prensil, por lo que no puede ser usado

para agarrar objetos. En nuestro caso este problema no afecta, ya que solo se usa el

movimiento de la cabeza, pero habrıa que tenerlo en cuenta si se decidiera coger objetos

o senalar un objeto con la mano.

Solo se han encontrado dos problemas que realmente entorpecen el uso de este robot

y ha sido necesaria su modificacion. El primer problema se vuelve a repetir con el mal

diseno de las articulaciones, en este caso del cuello ya que solo el capaz de realizar

18

Page 27: Asistente Robotizado para la gestión interactiva de medicamentos a

3.1. Diseno del robot

movimientos horizontales y sagitales. El otro problema reside en el procesador, debido

a que no se puede programar y por lo tanto resulta de un componente completamente

inutil.

Analizando estos pros y contras podemos concluir que este robot, tal cual lo encon-

tramos en el mercado, no se puede usar para realizar los experimentos de este proyecto,

sin embargo puede ser modificado para solventar los dos problemas que hemos mencio-

nado. El problema del cuello se puede arreglar modificando la estructura original del

robot, y el segundo problema se puede solucionar descartando el procesador original e

incluir un nuevo procesador que controle el robot. Estas modificaciones son las que se

han realizado en el robot y que van a ser explicadas mas detalladamente a continuacion.

Para una mayor comprension se ha separado la explicacion de las modificaciones

en dos secciones, estructura y diseno electronico. En algunos casos las dos secciones

estan relacionadas, ya que para anadir un componente electronico es necesario fabricar

o modificar una pieza donde sujetarlo. En la seccion de Estructura se explicara tanto

las modificaciones del robot como las piezas que han tenido que construirse. En la

seccion de diseno electronico se detallaran todos los componentes electronicos que ha

sido necesario incluir para controlar el robot, ası como los controladores y las conexiones

entre ellos.

3.1.1. Estructura

El primer paso ha sido modificar el diseno del robot para cambiar el movimiento de

la cabeza horizontal y sagital por un movimiento vertical y horizontal (PAN-TILT).

Como el robot esta construido a base de las clasicas piezas de Meccano, el primer paso

consistio en desmontar todas las piezas del cuello e investigar como estaban dispuestos

los agujeros de las diferentes piezas. El siguiente paso es tratar de sujetar los dos motores

de tal forma que los ejes de rotacion correspondan con los ejes longitudinal y transversal

del robot. Una vez hecho esto, deberemos colocar las piezas necesarias para sujetar, por

un lado, los motores al cuerpo del robot y por el otro lado, sujetar la cabeza donde se

va a situar la camara y el laser.

19

Page 28: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

(a) movimiento horizontal-sagital. (b) movimiento horizontal-vertical.

Figura 3.2: Modificacion de la cabeza.

Para incorporar los diversos componentes electronicos es necesario fabricar piezas que

se puedan acoplar al Meccanoid facilmente. Las piezas personalizadas se han fabricado

a partir de estireno. El estireno es un plastico proveniente del petroleo que se caracteriza

por ser poco pesado, flexible y muy resistente. Trabajar con este material resulta muy

sencillo, se puede cortar facilmente con una cuchilla, permite lijado y podemos usar

pegamento para unirlo.

La pieza mas compleja que se ha realizado sirve para sujetar la camara y el laser

sobre la cabeza. Esta pieza sustituye la pieza original que se situa en el centro de la

cara, es decir, se trata de la ”nariz”del robot. Su utilidad inicial era el de sujetar y

mantener a la distancia correcta los ojos. El diseno de la nueva pieza se ha basado en la

pieza original, y se ha mantenido la utilidad principal de sujetar los ojos, pero ademas

se ha incluido el soporte necesario para sujetar la camara y el laser. En el lado frontal

de la pieza, solo son visibles 2 pequenos agujeros, que corresponden con el objetivo de

la camara y el puntero laser. Por la parte trasera nos encontramos con un hueco donde

introducir la camara junto a cuatro orificios que permiten sujetarla con tornillos. Por

otro lado existe un hueco donde introducir el laser y una pequena repisa donde fijar el

laser con tornillos.

20

Page 29: Asistente Robotizado para la gestión interactiva de medicamentos a

3.1. Diseno del robot

Figura 3.3: Proceso de fabricacion de la pieza para la camara y el laser.

Se han creado dos piezas con el objetivo de sujetar la Raspberry Pi y la placa Arduino

en el interior del robot. El diseno es muy sencillo, recuerda a las clasicas piezas de

plastico de Meccano, pero al mismo tiempo es suficiente para soportar el peso de las

placas y evitar que se muevan. En una de las piezas se sujeta la placa Arduino y

el driver L298N (driver de motores) mediante separadores metalicos disenados para

sujetar placas electronicas. En la otra placa se ha usado velcro para mantener sujeta

la Raspberry Pi, que a su vez esta dentro de una carcasa de plastico ABS. El motivo

de usar velcro es porque de esta manera podemos sacar del robot el microordenador si

fuera necesario y tiene la suficiente fuerza como para mantener la placa estable sobre

la pieza de estireno.

Figura 3.4: Piezas personalizadas para el soporte de Raspberry Pi y Arduino.

21

Page 30: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

3.1.2. Diseno electronico

El primer paso del diseno electronico es pensar que requisitos a nivel de procesador

son necesarios. Una vez tenemos esto, es necesario mirar que componentes extra se van

a necesitar para controlar cada uno de los dispositivos que van a conectarse a nuestras

placas controladoras.

En nuestro caso vamos a usar dos placas controladoras, una placa Arduino fabricada

por la empresa BQ llamada Zum Core y una Raspberry Pi 3. Uno puede pensar que

teniendo una Raspberry Pi 3, que dispone de puertos de salida que funcionan exac-

tamente igual que los puertos de Arduino, no serıa necesaria la placa Arduino, sin

embargo usar dos placas tiene sus ventajas. Los motivos de porque se ha decidido usar

dos controladores son los siguientes:

La principal ventaja de tener dos o mas controladores es que podemos realizar ope-

raciones de forma paralela. En este caso la Raspberry Pi 3 se va a encargar del pro-

cesamiento de imagenes para realizar vision por computador y la placa Zum Core se

va a centrar en manejar los motores y el laser. Tanto la vision por computador como

controlar los motores en tiempo real requieren de un gran uso de CPU, si solo dispu-

siesemos de un controlador, ambas tareas tardarıan mucho mas tiempo en realizarse y

serıa inviable la captura de vıdeo en tiempo real.

El otro motivo de porque anadir una placa de tipo Arduino es que la companıa

Meccano ofrece en su pagina web las librerıas necesarias para controlar los motores

del Meccanoid desde Arduino. Si usaramos la Raspberry Pi 3 habrıa que rehacer esta

librerıa para que pudiera funcionar, y ello implica una gran inversion de tiempo.

La idea es que el microordenador Raspberry Pi actue como procesador principal.

Sera el encargado de capturar las imagenes de la camara y aplicar las correspondientes

tecnicas de vision por computador. La camara se conecta directamente al puerto SCI

de la placa mediante un cable ribbon. La placa Zum Core se conecta mediante un

cable USB a la Raspberry Pi, lo que nos permite, ademas de poder comunicarnos por

el puerto serie, poder programar la placa Zum Core directamente desde la Raspberry

22

Page 31: Asistente Robotizado para la gestión interactiva de medicamentos a

3.1. Diseno del robot

Pi. Tambien podemos conectar ambas placas a traves del puerto UART sin tener que

modificar nuestro codigo.

La alimentacion de la Rapberry Pi 3 se puede realizar mediante un transformador o

una baterıa. En nuestro caso se usan las dos opciones, un transformador de 5V-2,5A y

una baterıa li-ion de 5V-2.1A con una capacidad de 7800mAh.

Figura 3.5: Esquema electronico.

Como hemos mencionado Zum Core sera el encargado de manejar todos los motores

del robot, ası como la activacion y desconexion del puntero laser. Esta alimentada por

el puerto USB proveniente de la Raspberry Pi 3, aunque tambien se conecta a una

23

Page 32: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

baterıa Ni-MH de 6V y capacidad de 1800mAh. Esta baterıa es la que venia incluida

en el Meccanoid y se usa para dar potencia a los motores.

Meccano ha disenado un protocolo que permite conectar hasta 4 dispositivos ınteligentes.en

cascada sobre los mismos 3 cables. Tanto los servos que mueven la cabeza y las extremi-

dades del robot como los leds que iluminan los ojos son dispositivos inteligentes. En el

modelo Meccanoid G15 KS, tenemos 3 lineas de dispositivos inteligentes: una linea que

conecta 3 servos encargados de mover el brazo derecho, otra linea que conecta 2 servos

para mover el cuello y los leds RGB de la cabeza y una tercera con 3 servos encargados

de controlar el brazo izquierdo. Cada lınea esta conectada directamente a la placa Zum

Core

Los motores que estan conectados a las ruedas y que otorgan la capacidad de movi-

miento por el entorno son motores de corriente continua normales. Para poder controlar

dichos motores es necesario emplear algun tipo de driver de potencia, que permita con-

trolar la velocidad y la direccion del giro. En nuestro caso se ha optado por usar un

placa basada en el driver L298N. Se conecta mediante 4 cables, 2 por cada motor, a la

placa Zum Core. A su vez se conecta directamente a la baterıa de 6V.

Por ultimo nos falta el puntero laser, que se conecta directamente a otro de los pines

de la placa Zum Core. Funciona de forma similar a un diodo led, por lo tanto solo son

necesarios 2 cables para su control.

3.2. Detalles tecnicos del hardware

En esta seccion se van a comentar las caracterısticas tecnicas de cada uno de los

dispositivos electronicos que se han usado en la modificacion del robot.

3.2.1. Meccanoid

La empresa de juguetes Meccano presento el pasado Otono de 2015 el robot Mecca-

noid en dos versiones diferentes, G15 y G15 KSMeccanoid es un robot open-source, crea-

do a base de las clasicas piezas de Meccano, que los usuarios pueden programar a su gus-

to; para ello cuenta con un microcontrolador denominado ”MeccaCerebro”(MeccaBrain

24

Page 33: Asistente Robotizado para la gestión interactiva de medicamentos a

3.2. Detalles tecnicos del hardware

en ingles) que dispone de capacidades como conexion por bluetooth, reconocimiento de

voz, habla y control de motores.

Dado que el publico de este robot esta orientado a ninos, se proporcionan varios

”metodos de programacion”sencillos. En realidad estos metodos solo consisten en grabar

secuencias de movimientos y voz que puede reproducir posteriormente mediante un

comando de voz asociado.

Figura 3.6: Modelos de Meccanoid.

El primer metodo, Movimiento Inteligente

Aprendido (MIA), consiste en un modo de

captura de movimientos en el cual el usuario

mueve directamente los brazos y cabeza del ro-

bot. Al mismo tiempo se puede ir diciendo en

voz alta diferentes frases. Una vez terminada

la grabacion, se le asigna un comando de voz

que puede ser usado posteriormente para que

el robot ejecute el movimiento y reproduzca el

audio.

Las dos siguientes formas de programacion

se realizan mediante la aplicacion movil que

deberemos instalar en un smartphone o tablet.

En dicha aplicacion ademas podremos controlar de forma remota el robot.

El segundo metodo sigue la misma mecanica que el anterior, la de capturar un mo-

vimiento y audio, pero en este caso lo que movemos son los brazos y cabeza de un

muneco 3D que aparece representado en la aplicacion movil. El audio se graba a traves

del Meccacerebro.

Tal vez la forma mas interesante es la ultima posibilidad de programacion, Learned

Intelligent Movement (LIM), un sistema que hace uso de vision por computador para

reconocer la silueta e imitar a una persona que se situa enfrente del robot. La idea es

colocar nuestro dispositivo movil en el pecho del robot con el objetivo de que la camara

25

Page 34: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

MeccaCerebro

Microcontrolador DesconocidoMemoria Flash 64 MbBluetooth SıReconocimiento de voz SıFrases pre-programadas +1000Programacion de Codigo Abierto No

Cuadro 3.1: Especificaciones del MeccaCerebro

quede apuntando directamente al usuario. Aunque teoricamente suena muy bien, este

sistema no es nada robusto, todos los intentos de utilizar este sistema resultaron fallidos,

incluso adaptando el entorno para facilitar la deteccion.

Como hemos mencionado, se trata de un proyecto open-source , pero desgraciadamen-

te, la empresa unicamente ha distribuido publicamente los protocolos de comunicacion

de lo que ellos denominan ”dispositivos inteligentes”. La empresa Meccano mantiene

bajo secreto industrial la informacion tecnica del hardware del MeccaCerebro por lo

que el tipo de procesador usado es desconocido. Mediante ingenierıa inversa la comu-

nidad intuye que se trata de un microcontrolador ATmega como el usado en las placas

Arduino, pero solo se trata de una suposicion. Debido a esto, y a que ademas no han pro-

porcionado ninguna herramienta, resulta imposible la programacion del MeccaCerebro

en algun lenguaje de programacion existente.

Podemos encontrar dos modelos diferentes en el mercado, el Meccanoid G15 y el

Meccanoid G15 KS. La principal diferencia entre ellos es el tamano, el numero de piezas

y el numero de motores. Para los experimentos se ha usado el modelo Meccanoid G15 KS

que tiene una altura de 122 cm, 1188 piezas y 10 motores. El robot se construye a partir

de las clasicas piezas de Meccano, aunque han sustituido el metal por policarbonato.

La union entre las diferentes piezas se realiza mediante tornillos hexagonales y tuercas.

Este metodo de montaje nos da la flexibilidad de modificar el esquema basico y anadir,

eliminar o modificar las partes que se necesiten.

26

Page 35: Asistente Robotizado para la gestión interactiva de medicamentos a

3.2. Detalles tecnicos del hardware

Caracterısticas Meccanoid G15 Meccanoid G15KS

Altura del robot 61 cm 122 cmMaterial del Robot Policarbonato PolicarbonatoNumero de piezas 600 1188Numero de servos 4 8Numero de motores 2 2Baterıa 4 x pilas alcalinas LR14, C Baterıa recarcagable Ni-MH

Cuadro 3.2: Caracterısticas principales de los robots Meccanoid

El robot dispone de 10 motores, de las cuales 8 son ”dispositivos inteligentes 22 son

motores de corriente continua. Los servos incluyen un led RGB cuyo color puede ser

modificado. En la cabeza se dispone de otro dispositivo inteligente con 2 leds RGB que

permiten modificar el color de los ojos.

Un dispositivo inteligente consiste en un circuito que permite enlazar en cascada

hasta un maximo de 4 dispositivos en los mismos 3 cables. La librerıa que permite

controlar este chip es open-source y la podemos encontrar en su web. Esta escrita en

C++ y pensada para usar con el entorno Arduino.

Los motores se disponen de la siguiente manera: 3 servos en cada brazo y 2 servos para

el movimiento de la cabeza y 2 motores de corriente continua para el desplazamiento

por el suelo. Lo que nos da un total de 10 grados de libertad.

3.2.2. Raspberry Pi

Raspberry Pi es un microordenador u ordenador de placa simple (SBC) de bajo

coste desarrollado en Reino Unido por la Fundacion Raspberry Pi , con el objetivo de

estimular la ensenanza de ciencias de la computacion en las escuelas.

Varias generaciones de Raspberry Pi han sido lanzadas al mercado. La primera ge-

neracion (Pi 1) fue lanzada en febrero de 2012 en un modelo A basico y un modelo

B de mayores prestaciones. Los modelos A+ y B+ fueron lanzados un ano mas tarde.

Raspberry Pi 2 modelo B fue lanzado en febrero de 2015 y Raspberry Pi 3 en febrero

de 2016. Estas placas tienen un precio que varia entre los 20$ y los 35$. En abril de

27

Page 36: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

Figura 3.7: Placa Raspberry Pi 3

2014 se lanzo una version reducida, y en noviembre de 2015 se lanzo Pi Zero con un

diseno mas pequeno y unas capacidades de entrada y salida (GPIO) mas limitadas a

un precio de 5$.

Todos los modelos incluyen un system-on-a-chip (SOC) Broadcom, los cuales incluyen

una CPU ARM compatible y un procesador grafico (GPU) on-a-chip VideoCore IV.

El rango de frecuencia del procesador va desde los 700Mhz hasta los 1.2Ghz para la

Raspberry Pi 3 y el rango de memoria RAM on-board va desde los 256MB hasta 1 GB.

La placa no incluye disco duro, pero a cambio usa una tarjeta de memoria donde se

guarda el sistema operativo; se pueden usar tarjetas SDHC o MicroSDHC. Las placas

disponen entre uno y cuatro conectores USB, salida HDMI, salida de vıdeo compuesta y

una salida de sonido con conector jack de 3.5mm. Dispone de salidas GPIO que permiten

la comunicacion a bajo nivel con protocolos como I2C o UART. Algunas placas tambien

incluyen un conector Ethernet RJ45. La Raspberry Pi 3 ademas incluye conectividad

WiFi 802.11n on-board y Bluetooth. No incluyen fuente de alimentacion ni carcasa.

La fundacion proporciona en su web dos sistemas operativos para usar en sus pla-

cas, basados en Debian y Arch Linux. Promueven Python como lenguaje principal de

programacion pero soporta BBC BASIC, C , C++, PHP, Java, Perl, Ruby, Squeak

Smaltalk y alguno mas.

28

Page 37: Asistente Robotizado para la gestión interactiva de medicamentos a

3.2. Detalles tecnicos del hardware

En este proyecto se ha usado la ultima placa que ha salido al mercado, la Raspberry Pi

3, ya que dispone de un procesador mucho mas potente que permite un procesamiento

mas rapido a la hora de realizar vision por computador.

3.2.3. Modulo camara de Raspberry Pi

Figura 3.8: Modulo camarade Raspberry Pi

El modulo camara de la Raspberry Pi puede ser usado

para capturar vıdeo en alta definicion(1080p) o tomar fo-

tografıas. Para utilizarla, simplemente necesita ser conec-

tada mediante un cable ribbon al conector SCI (Camera

Srial Interfaz) de la Raspberry Pi.

La placa es muy pequena, mide unos 25x20x9 mm y

pesa apenas 3 gramos. En cuanto a imagenes, el sensor es

capaz de capturar hasta 2592x1944. Sin embargo en modo

vıdeo, las resoluciones soportadas son: 1080p30, 720p60 y

640x480p60/90. Dispone de una distancia focal de 3.6mm, una apertura focal f/2.9,

relacion de aspecto 4:3, un campo de vision horizontal de 53◦ y un campo de vision

vertical de 40◦.

Esta camara puede ser usada con OpenCV puesto que la fundacion proporciona las

librerıas necesarias para controlar esta camara en lenguaje Python. Tambien existe una

librerıa para C++ llamada Raspicam; esta desarrollada por la comunidad y nos permite

hacer exactamente lo mismo que la librerıa de Python.

3.2.4. Puntero laser

Figura 3.9: Puntero laser.

El puntero laser es el modelo Keyes KY-008. Se trata

de un emisor con una longitud de onda de 650nm (color

rojo), que emite un haz pequeno pero intenso. Funciona a

5V-30mA, por lo que se puede usar con una placa Arduino

directamente. Dispone de 3 pines de salida aunque solo

son necesarios 2 de ellos para su control.

29

Page 38: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

3.2.5. Arduino

Arduino es una plataforma de hardware y software libre, y fue disenada para crear

prototipos de forma sencilla y rapida . Cualquier persona con unos conocimientos basicos

de programacion y electronica, puede empezar a usar cualquiera de la placas que se han

desarrollado en la plataforma, ya que ese fue uno de los objetivos que plantearon.

Arduino puede tomar la informacion desde cualquiera de sus pines de entrada, desde

cualquier dispositivo o sensor, tratarla, y actuar en todo aquello que le rodea, como

pueden ser luces, motores o cualquier otro actuador.

Se diseno un lenguaje especıfico para esta plataforma basado en Processing, que

engloba todas las funciones basicas de los microcontroladores AVR, lo que permite una

programacion mucho mas sencilla y a un nivel mas elevado. Sin embargo, sigue siendo

un MCU, por lo tanto, se puede programar en ensamblador.

Otra de las ventajas de esta placa es que pueden ser montadas a mano, ya que en la

pagina web de la plataforma estan disponibles todos los esquemas en CAD de las placas

Arduino. Esto nos permite adaptar nuestra placa a cualquier necesidad. Asimismo, se

pueden encontrar varios modelos de placas en el mercado.

Por otro lado, tambien se encargaron de disenar un entorno de programacion, faci-

litando la programacion de este dispositivo. En la pagina web de la plataforma, nos

podemos encontrar con toda la documentacion necesaria para su programacion, desde

las funciones mas basicas, a las librerıas que se han ido incluyendo posteriormente.

Ademas, decidieron incluir una seccion llamada playground, en la que se van mostran-

do algunos de los proyectos que se han ido desarrollando por la comunidad, por lo

que, podemos encontrar la informacion necesaria para empezar a crear nuestro propio

proyecto.

Arduino UNO / Genuino UNO

Arduino UNO (llamado Genuino UNO fuera de Estados Unidos) es la placa mas

robusta y mas usada por la comunidad y de la cual podemos encontrar mayor docu-

mentacion y proyectos.

30

Page 39: Asistente Robotizado para la gestión interactiva de medicamentos a

3.2. Detalles tecnicos del hardware

UNO es una placa de microcontrolador basada en el ATmega328P. Tiene 14 entradas

y salidas digitales de las cuales 6 pueden ser usadas como salida PWM, 6 entradas

analogicas, un cristal de 16Mhz, un conector USB, un conector de alimentacion tipo

Jack, un conector para la programacion ICSP y un boton de reinicio.

BQ Zum Core

Recientemente, la empresa espanola BQ ha invertido en investigacion y desarrollo

de sistemas roboticos orientados a la ensenanza. Podemos encontrar desde disenos de

robots para imprimir con impresoras 3D, entornos de programacion web basados en

scratch, placas controladoras, hasta pequenos circuitos electronicos que incluyen sen-

sores o actuadores. En definitiva un amplio abanico de piezas que podemos juntar a

nuestro antojo para llevar a cabo cualquier proyecto de forma facil y sencilla, sin tener

demasiados conocimientos de electronica.

Figura 3.10: Placa BQ Zum Core

Entre todos los productos, cave destacar Zum Core , una placa microcontroladora

basada en Arduino UNO. La principal ventaja es la conectividad Bluetooth, la cual

que no solo permite comunicarse con otros dispositivos si no que tambien permite su

programacion. Amplıan la corriente de salida, pudiendo proporcionar hasta 3A de forma

continua, a diferencia de 1A que permite como maximo la placa Arduino UNO. Anaden

un boton de encendido y apagado e incluyen sets de 3 pines para cada entrada/salida, lo

que permite conectar practicamente cualquier dispositivo sin necesidad de usar placas

de prototipado o circuitos externos.

31

Page 40: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 3. Descripcion hardware del robot

Genuino UNO BQ Zum Core

Procesador ATmega328P Atmel Mega328P

Voltaje de salida3,3 V (150 mA)5 V (1 A)

3,3 V (50 mA)5 V (3,2 A)

Voltaje de entrada 6-20V 6 V - 17 VI/O digitales 14 14Salidas PWM 6 6Entradas analogicas 6 6Memoria flash 32 KB 32 KBSRAM 2 KB 2 KBEEPROM 1 KB 1 KBVelocidad CPU 16 MIPS 16MIPS

Interfaces

USBFTDISPII2CICSP

USBFTDISPII2CICSPBluetooth 2.1 Clase 2

Boton encendido No SiUSB Tipo B Micro-B

Programable USBUSBBluetooth

Cuadro 3.3: Especificaciones de las Placas Genuino UNO y BQ Zum Core

La placa Zum Core es la que se ha usado en la modificacion del Meccanoid. Como

hemos comentado incluye un set de 3 pines, y este es el principal motivo de eleccion

de esta placa, ya que tanto los servos, como el laser y posibles sensores pueden ser

conectados directamente.

32

Page 41: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4

Proceso de adquisicion de lexico

El proceso de adquisicion de lexico mediante anclaje visual consiste en mostrar un

objeto al robot e indicar el nombre de dicho objeto, de tal forma que robot y humano

se aseguren de tener un mismo nombre para un objeto concreto. En nuestro caso, como

el universo de trabajo que se va emplear consta de un conjunto de medicamentos,

usaremos una foto del medicamento como anclaje visual y el nombre del mismo como

lexico comun.

Al mismo tiempo es necesario entrenar un clasificador que permita distinguir cada

uno de los medicamentos del universo de trabajo para despues asignarles la etiqueta

correspondiente. Normalmente el proceso de entrenamiento del clasificador y la adqui-

sicion de lexico se realizan de forma separada, sin embargo en esta aplicacion el proceso

de aprendizaje se realiza al mismo tiempo que el proceso de adquisicion de lexico.

Para realizar ambas tareas al mismo tiempo va a seguir el siguiente procedimiento:

El usuario senala un medicamento con un puntero laser.

Se recorta la imagen del medicamento senalado (anclaje visual).

El usuario indica al robot el nombre del medicamento (lexico).

Incluir toda la informacion obtenida en un dataset (clasificador).

33

Page 42: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

Para realizar este procedimiento con una mayor robustez se captura vıdeo en tiempo

real. Por lo tanto, hay que tener en cuenta que en cada iteracion (que se corresponde

con cada fotograma del vıdeo) de este proceso se van a realizar una serie de operaciones

que dependeran del estado en el que se encuentre el sistema.

4.1. Esquema general

Los estados por los que pasa el sistema de aprendizaje estan representados en la

figura 4.1.

Figura 4.1: Diagrama de estados del proceso de aprendizaje

El objetivo del estado inicial es esperar a detectar el puntero laser, por lo tanto nos

mantendremos en este estado mientras no detectemos el puntero laser en la escena.

En cuanto detectamos el laser cambiaremos a un nuevo estado en el cual nos cen-

traremos en calcular el rectangulo delimitador con mayor area. Es decir, trataremos de

encontrar el rectangulo que delimita la caja del medicamento que estamos senalando

con el puntero laser.

34

Page 43: Asistente Robotizado para la gestión interactiva de medicamentos a

4.1. Esquema general

El primer paso es obtener una jerarquıa de los contornos de cada uno de los objetos

que aparecen en la escena. Es decir, obtenemos una jerarquıa padre-hijo-hermano de

los bordes que se encuentran en la escena. Por ejemplo, si tenemos un medicamento con

su nombre escrito en la caja, obtendremos un contorno padre, que se corresponde con

el borde de la caja, y varios contornos hijo, que se corresponden con cada una de las

letras del nombre del medicamento.

Una vez que tenemos esta jerarquıa, se tienen que calcular los contornos que se

encuentran a una distancia mas cercana del puntero laser, que normalmente se corres-

ponderan con contornos hijo. En el ejemplo anterior, podrıamos estar detectando una

de las letras del nombre del medicamento.

En este punto se usara la jerarquıa para obtener el contorno padre, que deberıa

corresponder con el borde exterior de la caja. Una vez que tenemos el contorno padre,

calculamos el rectangulo delimitador de dicho contorno, que usaremos para segmentar

la imagen.

En cada iteracion la jerarquıa de contornos puede ser diferente, y puede ocurrir

que en dos iteraciones consecutivas el contorno padre del contorno senalado por el

laser sea diferente y por lo tanto obtendremos un rectangulo delimitador diferente.

Para solventar este problema aprovechamos que estamos capturando vıdeo haciendo

lo siguiente: Si calculamos el area del rectangulo delimitador de la iteracion actual y

resulta que es mayor que el area de un rectangulo obtenido en una iteracion anterior, se

va a sustituir el rectangulo delimitador anterior por el rectangulo delimitador de esta

iteracion. Cuando cambiamos de estado, tendremos el rectangulo delimitador con mayor

area, que se corresponde siempre con el contorno exterior de la caja del medicamento.

Este metodo funciona siempre y cuando detectemos el puntero laser durante un numero

suficiente de fotogramas.

El siguiente cambio de estado se producira cuando se deje de detectar el puntero laser

en la escena. En este momento el robot pedira al usuario que le indique el nombre del

medicamento. Este nombre a su vez va a ser usado como etiqueta de la clase dentro del

dataset de clasificacion. Seguidamente, se usara el rectangulo delimitador con mayor

35

Page 44: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

Figura 4.2: Diagrama de actividad del proceso de aprendizaje

area obtenido en el estado anterior para segmentar la imagen y obtener un fragmento

donde solo se encuentra la caja del medicamento.

36

Page 45: Asistente Robotizado para la gestión interactiva de medicamentos a

4.2. Fases del proceso de adquisicion de lexico

Una vez que tenemos la imagen segmentada, es el momento de incluirla en el dataset

de clasificacion. Para ello vamos a usar como variables discriminantes los histogramas

normalizados de cada uno de los canales RGB de la imagen. Obtendremos al final una

matriz de 3 filas por 256 columnas, que sera la que usemos para clasificar. El ultimo

paso de este estado consiste en anadir al dataset el par etiqueta-histogramas.

En este punto volveremos al estado inicial y se podra repetir el proceso tantas veces

como sea necesario para conseguir un tamano del dataset suficiente.

En cualquier momento el usuario puede detener la ejecucion, momento en el cual el

sistema volcara toda la informacion del dataset en un fichero CSV.

Este sistema permite un entrenamiento del clasificador abierto, es decir, podemos

incluir nuevas clases al dataset en cualquier momento, lo que ofrece grandes ventajas.

Hasta ahora hemos visto por encima cual es el proceso de adquisicion de lexico, en la

siguiente seccion se va a explicar detalladamente cada una de las tareas que se realizan

para llevarlo a cabo.

4.2. Fases del proceso de adquisicion de lexico

Este proyecto se ha creado en diferentes fases para facilitar la implementacion y

posibles cambios posteriores, realizando, el analisis, diseno, codificacion y las pruebas

pertinentes para cada una. La idea de hacerlo ası tiene como objetivo conseguir una

mayor modularizacion y desacoplamiento en las diferentes funcionalidades del sistema,

pudiendolas implementar de forma independiente de forma que se puedan usar solo

en los momentos en los que se necesite y ademas que los cambios afecten lo mınimo

posible a otros modulos. En la figura 4.2 se puede ver un diagrama de actividad donde

se incluyen todas las operaciones que se realizan durante el proceso de adquisicion.

En los siguientes apartados, se explican en detalle las fases seguidas.

37

Page 46: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

4.2.1. Filtrado

Todos los algoritmos de filtrado se ejecutan en cada iteracion independientemente

del estado en el que se encuentre el sistema. El objetivo es mejorar la calidad de la

imagen para que el procesado posterior, como la deteccion de bordes, se pueda realizar

con mayor fiabilidad.

El primer filtro que se aplica sirve para mejorar el contraste de la imagen. El filtro

consiste en multiplicar el cada uno de los pıxeles de una imagen por los pıxeles de otra

imagen y dividirlo entre 255. P1cij y P2cij son los pıxeles en la posicion ij y canal c de

la primera y segunda imagen respectivamente. Prcij es el pıxel resultante en pa posicion

ij canal c.

Prcij =P1cij · P2cij

255(4.1)

En nuestro caso se multiplica cada fotograma por si mismo, dando un resultado en el

cual los colores de la imagen se intensifican, proporcionando un mayor contraste entre

los tonos claros y oscuros.

(a) Imagen original. (b) Imagen filtrada.

Figura 4.3: Proceso de filtrado.

El siguiente paso es aplicar un filtro bilateral que se trata un filtro no lineal, que

permite reducir el ruido sin eliminar los bordes. El valor de intensidad en cada pıxel de

38

Page 47: Asistente Robotizado para la gestión interactiva de medicamentos a

4.2. Fases del proceso de adquisicion de lexico

la imagen resultante depende de su distancia en la imagen y su diferencia de nivel de

gris al pıxel central

En este punto necesitamos realizar dos operaciones mas que nos van a servir mas

adelante aunque nos e corresponden con un proceso de filtrado. Por un lado se requiere

separar de forma independiente los canales rojo, verde y azul de la imagen original. Por

otro lado se van a transformar la imagen RGB a escala de grises.

4.2.2. Deteccion de bordes

Se sacan los bordes de los objetos por el algoritmo de (Canny, 1986), que detecta

todos los bordes posibles de una imagen utilizando el calculo de variaciones con la

primera derivada. Esta funcion parte de una imagen escala de grises y devuelve una

imagen binarizada con la posicion de los contornos.

Para la obtencion de los contornos se usa la funciona de OpenCV findContours().

Esta funcion parte de una imagen binaria donde encuentra los contornos usando el

algoritmo (Suzuki y be, 1985). Retorna un array con todos los contornos y una jerarquıa

que relaciona los contornos entre sı.

(a) Imagen original. (b) Contornos.

Figura 4.4: Deteccion de bordes.

39

Page 48: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

4.2.3. Deteccion de laser

A la hora de detectar un puntero laser de color rojo en una escena, se puede pensar

que la mejor forma es obtener aquellos pıxeles con una intensidad de rojo mas elevada.

Sin embargo, despues de reiteradas pruebas, se ha descubierto que el proceso que mejor

resultado ofrece es el de obtener los pıxeles de mayor intensidad del canal azul de la

imagen. Esto es debido a que la camara captura el centro del puntero laser como un

punto blanco de intensidad muy alta y los alrededores de color rojo. Si se usa el canal

rojo, se obtiene, ademas del centro del laser, una gran cantidad de ruido a su alrededor.

Si por el contrario se usa el canal azul, solo se obtiene el circulo central, sin ruido.

Para seleccionar unicamente los pıxeles de la imagen con mayor intensidad hay que

tener en cuenta que el valor de intensidad del laser puede variar en cada iteracion,

para asegurarnos de filtrar correctamente aplicamos un umbral al 98%. El proceso es

el siguiente:

Obtener el valor de intensidad maximo del canal azul de la imagen.

Se descuenta un 2%.

Ignoramos el valor si desciende de un nivel de intensidad de 200 sobre 255 (evita

ruido).

Aplicamos una funcion umbral a la imagen con el valor calculado.

Mediante es proceso obtendremos una imagen binaria, en la cual los pıxeles en blanco

corresponden con los pıxeles con un nivel de intensidad superior al 98%.

Para reducir el ruido generado por el filtrado primeramente se dilata la imagen, se

aplica un difuminado gaussiano y se vuelve a erosionar la imagen. Con este proceso, da

como resultado que el laser forma un circulo bien definido, mientras que el ruido queda

con formas muy dispares. La importancia de aplicar morfologıa matematica se refleja

en el siguiente paso.

40

Page 49: Asistente Robotizado para la gestión interactiva de medicamentos a

4.2. Fases del proceso de adquisicion de lexico

El ultimo paso es usar la transformada de Hough para encontrar los cırculos que

hay en la imagen. La funcion de OpenCV que implementa este algoritmo se llama

HoughCircles(), y proporciona un vector con el centro y el radio de cada uno de los

circulos detectados. La explicacion del proceso puede encontrarse en (Yuen et al., 1990).

4.2.4. Identificar objeto apuntado

Para identificar el objeto apuntando por el laser, primero se seleccionan los 3 con-

tornos mas cercanos al puntero laser. Se parte de las coordenadas del punto central

del circulo obtenido con la transformada de Hough para calcular la distancia de dicho

punto a cada uno de los contornos proporcionados por la funcion findCotours().

La distancia del punto al contorno se calcula con la funcion de openCV pointPoly-

gonTest(). Esta funcion determina cuando un punto esta dentro de un contorno,fuera

de un contorno o esta justo encima del contorno. Se le puede pasar un parametro para

que ademas indique la distancia al borde del contorno.

El motivo de seleccionar 3 contornos es debido a que el laser tambien se detecta como

un contorno, y por razones obvias, ese es el contorno mas cercano al centro del puntero

laser. Realizando pruebas, el numero de contornos que mejor resultado ha dado es 3.

Una vez que tenemos los 3 contornos, usamos la jerarquıa proporcionada por la fun-

cion findContours() y la recorremos de forma recursiva hasta obtener el predecesor mas

antiguo. De esta forma obtenemos el contorno exterior del medicamento. Normalmente

las cajas de medicamentos tienen letras y dibujos en su interior, y estos contornos son

los que se detectan al apuntar con el puntero laser, y por ello buscamos el contorno

exterior.

Seguidamente, obtenemos el rectangulo delimitador del contorno, para ello usamos

la funcion de OpenCV boundingRect().

Para asegurarnos de que el rectangulo delimitador corresponde realmente con el borde

exterior de la caja del medicamento, vamos a ir almacenando el rectangulo con el area

mayor. Para ello al inicio del estado se inicializa una variable rectangulo con area igual

41

Page 50: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

0. En cada iteracion se comprueba si el area del rectangulo delimitador es mayor que

el area del rectangulo guardado, asignandolo en caso afirmativo.

De esta manera nos aseguramos que al final del estado el rectangulo delimitador

corresponde con el borde exterior de la caja del medicamento.

(a) Imagen original con laser. (b) Celestoderm senalado en verde.

(c) Imagen original con laser. (d) Aspirina senalado en verde.

Figura 4.5: Deteccion de laser e identificacion.

4.2.5. Segmentar

El proceso de segmentacion consiste en obtener una imagen mas pequena a la original

que contenga unicamente la informacion requerida. En nuestro caso se requiere de una

imagen donde aparezca unicamente un medicamento y que no contenga mas objetos ni

fondo.

42

Page 51: Asistente Robotizado para la gestión interactiva de medicamentos a

4.2. Fases del proceso de adquisicion de lexico

La segmentacion se realiza con un retraso de 2 fotogramas desde que se deja de

detectar el laser. Esto es ası para asegurarse que la imagen segmentada no incluye el

puntero laser, evitando que entorpezca el proceso de clasificacion.

Para segmentar vamos a usar el rectangulo delimitador obtenido de la fase anterior,

que corresponde con el borde exterior del medicamento. Este recorte ofrece muy buenos

resultados ya que se esta trabajando con cajas rectangulares.

Una vez que tenemos la imagen segmentada, se calcula el histograma de los canales

rojo, verde y azul de la imagen. Se normalizan los histogramas entre 0 y 1 usando la

funcion de OpenCV normalice() en el modo MINMAX, que ajusta el valor maximo

dentro del histograma a 1 y el valor mınimo a 0. Los tres histogramas se juntan en una

matriz de 3 filas y 256 columnas.

(a) Celestoderm. (b) Aspirina.

Figura 4.6: Imagenes segmentadas.

Al comienzo de este proceso se le muestra la imagen segmentada al usuario y se le

pregunta por el nombre del medicamento que aparece en la imagen. Si por algun error,

la imagen segmentada fuese invalida, se puede escribir un texto de control que invalida

la segmentacion y continua con el proceso.

El ultimo paso es almacenar los histogramas normalizados junto con el nombre del

medicamento en un dataset.

43

Page 52: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 4. Proceso de adquisicion de lexico

4.2.6. Guardado

El dataset generado se guarda en disco en formato CSV. Se escribe una linea en el

fichero por cada elemento dentro del dataset. Con el siguiente formato:

etiqueta de clase, valores del histograma azul, valores del histograma verde, valores

del histograma rojo

44

Page 53: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 5

Proceso de busqueda

El objetivo del proceso de busqueda es encontrar un medicamento solicitado y senalar-

lo con el puntero laser. Para ello primero el robot debera ser capaz de encontrar la

posicion del medicamento en la estanterıa y posteriormente debe ser capaz de apuntar

su puntero laser sobre la caja del medicamento.

El proceso de busqueda puede realizarse en dos situaciones diferentes. La primera

situacion se produce por una solicitud interna del sistema, proveniente de la agen-

da. El objetivo es recordar al paciente que debe tomar un medicamento. Se mostrara

un mensaje informativo similar a: ”Son las 8:00, debes tomar este medicamento”. La

segunda situacion es una peticion externa al sistema. En este caso se trata de una con-

sulta realizada por el paciente para preguntar por la localizacion de un medicamento.

De forma mas abstracta el paciente preguntarıa al robot: ”¿Donde se encuentra este

medicamento? 2le responderıa : .El medicamento se encuentra aquı.al mismo tiempo que

lo senala con el puntero laser.

Para las dos situaciones se va a realizar el siguiente proceso:

Encontrar todos los objetos en la escena.

Segmentar cada uno de los objetos.

Aplicar el clasificador a cada imagen segmentada.

45

Page 54: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 5. Proceso de busqueda

Guardar el rectangulo delimitador de la imagen segmentada que coincida con el

nombre del medicamento buscado con menor distancia.

Calcular el centro del rectangulo delimitador.

Calcular la posicion que debe tener el robot para apuntar al centro del medica-

mento.

Mover la cabeza del robot y apuntar con el laser.

5.1. Fases de la busqueda

Las fases del proceso de busqueda estan representadas en el diagrama 5.1.

Figura 5.1: Diagrama de actividad del proceso de busqueda

46

Page 55: Asistente Robotizado para la gestión interactiva de medicamentos a

5.1. Fases de la busqueda

5.1.1. Busqueda de objetos

El primer paso es encontrar todos los objetos en la escena. Usamos el mismo sistema

que en la fase de adquisicion de lexico. Se obtienen los bordes mediante el algoritmo

de Canny y posteriormente se hayan los contornos con la funcion findContours() de

OpenCV().

Se parte de estos datos para encontrar todos los bordes exteriores. Primero se escoge

un contorno de forma aleatoria y se calcula cual es el antecesor mas antiguo usando la

jerarquıa proporcionada por la funcion findContours(). Si el contorno elegido no tiene

padres, se repite este paso.

En este punto, se dispone del primer contorno exterior que corresponde con uno de

los objetos detectados en la escena. Usamos nuevamente la jerarquıa y obtenemos todos

los contornos hermanos, que deberıan corresponden con el resto de medicamentos.

La jerarquıa no es muy fiable, en numerosas ocasiones se detectan varios contornos

que no corresponden con el contorno exterior del objeto. Para solventar este problema

y obtener un resultado mas fiable, se aplica un algoritmo que deja unicamente los

contornos de mayor area. Este paso tambien se aprovecha de la captura del vıdeo para

obtener mejores resultados por lo que se va a realizar en iteraciones consecutivas.

Este algoritmo hace uso de los rectangulos contenedores de todos los contornos detec-

tados. Se parte de un listado de rectangulos contenedores calculados en el paso anterior

y la lista de rectangulos contenedores obtenida en la iteracion actual. El algoritmo

va a escoger aquellos rectangulos que contengan a otros en su interior eliminando los

rectangulos de su interior. Si dos rectangulos son diferentes, es decir, uno no esta den-

tro del otro, se mantienen los dos rectangulos. Si hay dos rectangulos muy parecidos,

permanece solo el de mayor area. Si se detectan nuevos rectangulos, estos se anaden

a la lista y el proceso se vuelve a repetir para asegurarnos de obtener unicamente el

contorno exterior del nuevo rectangulo detectado.

Este algoritmo retorna unicamente los rectangulos delimitadores de todos los objetos

de la escena.

47

Page 56: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 5. Proceso de busqueda

5.1.2. Segmentacion

Los siguientes pasos, la segmentacion y la clasificacion, se realizan dentro del mismo

bucle para optimizar el proceso.

Llegados a este punto, la segmentacion resulta sencilla. Para segmentar se usan los

rectangulos delimitadores obtenidos de la fase anterior, que corresponden con el borde

exterior de cada medicamento. Esta segmentacion da buen resultado porque estamos

trabajando con cajas. Habrıa que anadir un paso adicionas para segmentar por el con-

torno si usaramos otro tipo de objetos.

5.1.3. Clasificar

Por cada imagen segmentada que obtenemos del paso anterior, vamos a calcular sus

histogramas de los canales rojo, verde y azul.

Este es el punto clave del proceso, donde se va a usar el histograma obtenido en esta

iteracion en el clasificador k-nn. El resultado de este algoritmo es el nombre de la clase

que mas se parece al histograma dado, que corresponde con el nombre del medicamento.

El parametro k se asigna mediante un parametro de la aplicacion. Se usa la distancia

euclıdea como metodo de medicion entre muestras. El algoritmo tambien retorna la

distancia mas pequena entre el histograma dado y la clase seleccionada.

En este paso se va dar uso de una variable donde se va a ir guardando el rectangulo

delimitador con menor distancia y una variable para guardar la distancia euclıdea menor

de esa imagen respecto de las muestras.

Si el nombre de la clase que devuelve el clasificador, coincide con el nombre del

medicamento buscado y ademas la distancia euclıdea obtenida es menor que la del

rectangulo obtenido anteriormente, sustituimos los rectangulos y guardamos el nuevo

rectangulo.

Tras varias iteraciones seguidas de este proceso, se va a obtener el rectangulo deli-

mitador que es mas probable que coincida con el medicamento buscado. Este procesa

mejora el resultado del clasificador por si solo.

48

Page 57: Asistente Robotizado para la gestión interactiva de medicamentos a

5.1. Fases de la busqueda

(a) Imagen original. (b) Resultado del clasificador.

Figura 5.2: Proceso de busqueda de Aspirina.

5.1.4. Calcular movimiento del robot

Despues de 20 iteraciones se sigue con el procedimiento de apuntado. Se ha elegido

20 iteraciones porque es un numero suficientemente grande como para encontrar una

buena solucion pero no tanto como para que la ejecucion sea muy prolongada.

El primer paso para calcular el movimiento que debe hacer el robot es obtener el punto

central del rectangulo delimitador (ox, oy). OpenCV nos ofrece los metodos necesarios

para conocer las coordenadas de la esquina superior izquierda (cx, cy), el ancho y el alto

del rectangulo. Con estos datos podemos calcular el punto central.

ox = cx +widht

2

oy = cy +height

2

(5.1)

El puntero laser esta alineado con el campo de vision de la camara, por lo tanto

siempre esta situado en el centro de la imagen. Calculamos el desplazamiento en pıxeles

del centro del rectangulo al centro de la imagen. El tamano de la imagen es de 640px

x 480px.

49

Page 58: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 5. Proceso de busqueda

dpxH = ox −640

2

dpxH = oy −480

2

(5.2)

Figura 5.3: Esquema FOV vertical y horizontal de la camara.

Para traducir el resultado en pıxeles a milımetros se usan las propiedades de la

camara. Dispone de una distancia focal de 3.6mm, una apertura focal f/2.9, relacion de

aspecto 4:3, un campo de vision (FOV) horizontal de 53◦ y un campo de vision vertical

de 40◦. Las medida realmente necesarias son el FOV en radianes que se corresponden

con FOVh = 0,9250 y FOVv = 0,6981 respectivamente. El otro parametro necesario

es la distancia de la camara a la imagen Dcam. El robot siempre se situa a la misma

distancia de la estanterıa, por lo tanto podemos indicar este valor directamente .

Para obtener un factor de escala entre las dos unidades, hay que calcular el tamano

en milımetros de la escena completa y hallar su relacion con el tamano en pıxeles. El

tamano de la escena en milımetros se calcula de la siguiente forma:

50

Page 59: Asistente Robotizado para la gestión interactiva de medicamentos a

5.1. Fases de la busqueda

widthmm = tan(FOVh

2) · (Dcam) · 2

heightmm = tan(FOVv

2) · (Dcam) · 2

(5.3)

Se calcula el factor de escala y se aplica al desplazamiento para convertir las unidades

de pıxeles a milımetros. De esta manera se obtiene la distancia en milımetros desde el

centro del medicamento al centro de la escena.

dmmH = dpxH ·widthmm

640

dmmV = dpxV ·heightmm

480

(5.4)

(a) Calculo del desplazamiento. (b) Calculo del angulo de giro.

Figura 5.4: Modelizado de la cabeza del robot.

El eje de giro de la cabeza esta alineado con el centro del sensor de la camara pero

se situa a una distancia mayor de la estanterıa, esta representado en la figura 5.4. El

angulo de giro debe ser calculado usando la distancia del eje a la estanterıa Deje de la

siguiente forma:

51

Page 60: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 5. Proceso de busqueda

αH = tan−1(dmmH

Deje

)

αV = tan−1(dmmV

Deje

)

(5.5)

El ultimo paso es traducir el angulo de giro en radianes obtenido en el paso anterior

a un valor comprendido entre [0, 255] que puede interpretar el servo. El valor 0 corres-

ponde con un angulo de 0 radianes y 255 con un angulo de π radianes (180o). Como el

desplazamiento se calcula de forma relativa, el calculo del angulo absoluto dependera

del angulo actual de los servos γPAN y γTILT , que se corresponden con la posicion desde

la que se ha tomado la medicion. El signo de la operacion depende de la direccion de

giro del servo.

αPAN = γPAN − αH ·256

π

αTILT = γTILT + αV ·256

π

(5.6)

El resultado es la posicion absoluta que debe tomar el robot para apuntar al centro

del medicamento.

5.1.5. Mover el robot y senalar

El ultimo paso consiste en enviar tres comandos por el puerto serie a la placa Arduino.

El primer comando es un mensaje donde se indica la posicion absoluta que acabamos

de calcular. El segundo mensaje es una senal para activar el puntero laser. El ultimo

mensaje indica a la placa Arduino que debe activar la alarma. Pasado un tiempo se

envıan otros tres comandos para deshacer la operacion realizada y volver a la posicion

de origen.

Todo el proceso de movimiento de los servos se realiza mediante la placa Arduino.

Para posicionar la cabeza en el lugar indicado, se usa la librerıa proporcionada por

Meccano. Se envıan los valores recibidos por el cable que conecta los servos que realizan

los movimientos horizontales y verticales.

52

Page 61: Asistente Robotizado para la gestión interactiva de medicamentos a

5.1. Fases de la busqueda

La activacion del laser se realiza poniendo la salida de Arduino donde esta conectado

el laser en alto, es decir con 5V.

Para la alarma se hace uso de la librerıa ”tone”que provee la plataforma Arduino.

Cuando el comando es recibido se emite un numero indicado de veces un pitido a traves

de un zumbador conectado a una de las salidas de la placa.

53

Page 62: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 6

Implementacion

La parte software de este trabajo se ha realizado en lenguaje de programacion C++

debido a su potencia y eficiencia. Se ha programado sobre las plataformas Raspbian

y Arduino. Ademas, para agilizar la programacion se han usado varias librerıas como

OpenCV, raspicam, WiringPi en Raspberry Pi y la librerıa de Meccanoid para la placa

Arduino.

6.1. Plataformas

Estan disponibles varios sistemas operativos que funcionan sobre la placa Raspberry

Pi. Noobs y Raspbian son las dos distribuciones oficiales, aunque podemos encontrarnos

otras creadas o modificadas por la comunidad como Ubuntu Mate, Windows 10 IOT,

Pinet o OSMC. Se ha elegido usar Raspbian, puesto que es el sistema operativo que

mas tiempo lleva en produccion lo que implica encontrar un mayor numero de paquetes

software compatibles y una mayor documentacion.

Raspbian es un sistema operativo gratuito basado en Debian que esta optimizado

para el hardware de la Raspberry Pi. El sistema operativo dispone de un conjunto de

programas basicos y utilidades que permiten hacer uso de la Raspberry pi. Sin embargo,

Raspbian ofrece mas que solo un sistema operativo; dispone de mas de 35.000 paquetes

software pre-compilados en un formato correcto listos para ser instalados facilmente.

54

Page 63: Asistente Robotizado para la gestión interactiva de medicamentos a

6.2. Lenguaje de programacion

BQ ofrece un entorno de programacion propio basado en web para su placa Zum Core.

Esta pensado para una programacion sencilla basada en Scratch. Sin embargo puede

usarse cualquier otro entorno, como el IDE oficial o Eclipse para una programacion mas

clasica.

La programacion de Arduino se realiza normalmente mediante una version adaptada

de C++. Se trata de una librerıa que encapsula algunas funciones que trabajan directa-

mente con los registros del microcontrolador, aunque existe la posibilidad de usar estas

operaciones directamente.

6.2. Lenguaje de programacion

C++ es un lenguaje de programacion disenado a mediados de los anos 1980 por Bjar-

ne Stroustrup. La intencion de su creacion fue el extender al lenguaje de programacion

C mecanismos que permiten la manipulacion de objetos. En ese sentido, desde el punto

de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hıbrido.

6.3. Librerıas

OpenCV es una librerıa muy potente orientada a metodos de vision artificial como

reconocimiento de objetos, vision estereoscopica, vision por computador, calibracion de

camaras, etc. Cuenta con interfaces de C++, Python y Java. Es multiplataforma por lo

que es compatible con varios sistemas operativos como Windows, Linux, Mac OS, iOS

y Android. Es proporcionada por una licencia BSD que permite su uso gratuito tanto

para uso academico, como comercial.

Raspicam es un librerıa desarrollada por la comunidad en C++, que permite manejar

el modulo camara de Raspberry Pi . Hacen uso de las herramienta rapistill que viene

instalada con Raspbian. Esta librerıa ademas ofrece la posibilidad de usarla directamen-

te con OpenCv, lo que permite sustituir facilmente las funciones de captura estandar

de OpenCV por las de esta librerıa.

55

Page 64: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 6. Implementacion

WiringPi es una librerıa que incluye la capacidad de manejar el puerto serie de la

Raspberry Pi. Puede usarse para manejar el puerto UART montado sobre la placa o

cualquiera de los puertos USB sin distincion alguna entre ellos. Simplemente hay que

indicar el nombre del dispositivo para abrir un stream de datos.

La librerıa Meccanoid esta escrita en C++ y esta pensada para su uso en el entorno

Arduino. Se trata de un proyecto Open Source desarrollado por la empresa Spin Master,

asociada a Meccano. Permite el control de los dispositivos inteligentes de cualquiera de

las versiones del robot Meccanoid.

6.4. Experimentos

Los experimentos llevados a cabo en este proyecto han hecho uso de las plataformas,

lenguajes y libreras mencionados con anterioridad. Se han implementado los siguientes

ficheros que hacen uso de ellas:

Raspberry Pi

• adquisicion.cpp

• busqueda.cpp

• utils.h

Arduino

• meccanoid.ino

• pitches.h

Adquisicion En este fichero se implementa todo el proceso de adquisicion de busque-

da. Tambien se han anadido dos modos para poder testear el clasificador. El primero

consiste en aplicar el test leave-one-out para diferentes valores de k del algoritmo knn.

El segundo metodo permite usar el puntero laser del usuario para clasificar un medica-

mento y obtener el nombre de su clase.

56

Page 65: Asistente Robotizado para la gestión interactiva de medicamentos a

6.4. Experimentos

Busqueda La programacion de cada una de las fases proceso de busqueda esta escrita

en este fichero. Tambien se hace uso de la librerıa WiringPi para la comunicacion con

Arduino para controlar los servos, laser y alarma.

Utils Esta librerıa incluye una serie de funciones que son usadas tanto en el proceso

de adquisicion de lexico como en el proceso de busqueda. Estan implementados los

procesos de lectura y escritura del dataset, la generacion de histogramas a partir de

una imagen, el algoritmo knn y varias funciones sencillas.

Meccanoid En este fichero se encuentra el controlador de los motores del robot.

Actua como un servidor que recibe comandos desde el puerto serie y ejecuta las orde-

nes correspondientes. Hay comandos para controlar la posicion de las extremidades y

cabeza, que hacen uso de la librerıa de Meccanoid para controlar los dispositivos in-

teligentes. Tambien permite activar y desactivar el puntero laser. Hace uso del fichero

Pitches para generar una alarma.

Pitches En este fichero se encuentra una lista de notas que permiten emitir un sonido

o melodıa con un zumbador o altavoz.

57

Page 66: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7

Diseno y evaluacion del reconocedor

de medicamentos

La fase crucial de este proyecto es el uso de un clasificador, que es el algoritmo

que permite reconocer los medicamentos. Si el uso de este algoritmo falla, el proceso

completo fallarıa.

Existen varios tipos de clasificadores, y cada uno tiene sus ventajas e incovenientes.

Uno de los mas sencillos y que se suele utilizar como partida es el ”K nearest neigh-

bors”(knn). La principal ventaja de este algoritmo es que permite trabajar rapidamente

puesto que no es necesario entrenar cada vez que se anade un nuevo elemento al dataset.

Esta ventaja nos permite probar con diferentes variables discriminantes para encontrar

la mejor alternativa.

7.1. Clasificador knn

El algoritmo knn (Silverman y Jones, 1989) es un metodo de clasificacion supervisada

que sirve para estimar la funcion de densidad F (x/Cj) de las variables predictoras o

discriminantes x por cada clase Cj .

Este es un metodo de clasificacion no parametrico, que estima el valor de la funcion

de densidad de probabilidad o directamente la probabilidad a posteriori de que un

elemento x pertenezca a la clase Cj a partir de la informacion proporcionada por el

58

Page 67: Asistente Robotizado para la gestión interactiva de medicamentos a

7.1. Clasificador knn

conjunto de prototipos. En el proceso de aprendizaje no se hace ninguna suposicion

acerca de la distribucion de las variables discriminantes.

En el reconocimiento de patrones, el algoritmo knn es usado como metodo de clasifi-

cacion de objetos (elementos) basado en un entrenamiento mediante ejemplos cercanos

en el espacio de los elementos. knn es un tipo de ”Lazy Learning”, donde la funcion se

aproxima solo localmente y todo el computo es diferido a la clasificacion.

Los ejemplos de entrenamiento son vectores en un espacio caracterıstico multidimen-

sional, cada ejemplo esta descrito en terminos de p atributos considerando q clases para

la clasificacion. Los valores de los atributos del i-esimo ejemplo (donde 1 ≤ i ≤ n ) se

representan por el vector p-dimensional

xi = (x1i, x2i, ..., xpi) ∈ X (7.1)

El espacio es particionado en regiones por localizaciones y etiquetas de los ejemplos

de entrenamiento. Un punto en el espacio es asignado a la clase C si esta es la clase

mas frecuente entre los k ejemplos de entrenamiento mas cercano. Generalmente se usa

la distancia euclidiana y es el metodo usado en este trabajo.

d(xi, xj) =

p∑

r=1

(xri − xrj)2 (7.2)

La fase de entrenamiento del algoritmo consiste en almacenar los vectores carac-

terısticos y las etiquetas de las clases de los ejemplos de entrenamiento. En la fase de

clasificacion, la evaluacion del ejemplo (del que no se conoce su clase) es representada

por un vector en el espacio caracterıstico. Se calcula la distancia entre los vectores al-

macenados y el nuevo vector, y se seleccionan los k ejemplos mas cercanos. El nuevo

ejemplo es clasificado con la clase que mas se repite en los vectores seleccionados.

Este metodo supone que los vecinos mas cercanos nos dan la mejor clasificacion y

esto se hace utilizando todos los atributos; el problema de dicha suposicion es que es

posible que se tengan muchos atributos irrelevantes que dominen sobre la clasificacion:

dos atributos relevantes perderıan peso entre otros veinte irrelevantes.

59

Page 68: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7. Diseno y evaluacion del reconocedor de medicamentos

Para corregir el posible sesgo se puede asignar un peso a las distancias de cada atri-

buto, dandole ası mayor importancia a los atributos mas relevantes. Otra posibilidad

consiste en tratar de determinar o ajustar los pesos con ejemplos conocidos de entre-

namiento. Sin embargo la mejor opcion pero que lleva mas tiempo,consiste en antes

de asignar pesos es recomendable identificar y eliminar los atributos que se consideran

irrelevantes antes de anadirlos al vector de caracterısticas.

En sıntesis, el metodo knn se resumen en dos algoritmos:

Algoritmo de entrenamiento Para cada ejemplo < x, f(x) > ,donde x ∈ X, agre-

gar el ejemplo a la estructura representando los ejemplos de aprendizaje.

Algoritmo de clasificacion Dado un ejemplar xq que debe ser clasificado, sean

x1, ..., xk los k vecinos mas cercanos a xq en los ejemplos de aprendizaje, regresar

f(x)← argmaxv∈V

k∑

i=1

δ(v, f(xi)) (7.3)

Donde δ(a, b) = 1 si a = b; y 0 en cualquier otro caso. El valor f(xq) devuelto por

el algoritmo como un estimador de f(xq) es solo el valor mas comun de f entre los

k vecinos mas cercanos a xq. Si elegimos k = 1; entonces el vecino mas cercano a xi

determina su valor.

7.2. Variables discriminantes

Como se ha mencionado, la eleccion de las variables discriminantes es la parte mas

importante a la hora de usar este clasificador y esto se cumple en el problema que nos

atana. Una primera idea que se tuvo es usar el tamano, mas concretamente la relacion

de aspecto de la caja de los medicamentos junto con el color predominante. Este vector

de caracterısticas resulta bastante pequeno, pero dado que se trabaja con cajas muy

parecidas se penso que no darıa muy buen resultado.

Otra opcion que se barajo durante el desarrollo es el uso de la jerarquıa proporcionada

por la funcion findContours() de OpenCV. Esta idea parecıa bastante interesante desde

60

Page 69: Asistente Robotizado para la gestión interactiva de medicamentos a

7.3. Dataset

un punto de vista teorico, pero en la practica no resultaba tan bonito. Mientras se

hacıan las correspondientes pruebas con el resto de procesos, nos percatamos que la

forma de generar dicha jerarquıa era muy diferente en cada ejecucion, a veces ocurrıa,

que en dos iteraciones consecutivas, dos contornos que eran padre e hijo en la primera

pasan a ser hermanos en la segunda. Esto implica que crear un proceso para calcular

la distancia entre contornos iba a resultar muy complicado.

Finalmente se opto por usar el histograma en color. Un histograma es una vector

cuyos elementos son el numero de pıxeles que tienen una intensidad de entre todas las

intensidades posibles. Se debe realizar sobre uno de los canales de la imagen. Usualmente

en vision por computador se usa un histograma de una imagen en blanco y negro, aunque

en este caso hemos intensificado el tamano, generando un histograma por cada uno de

los canales de la imagen RGB.

En definitiva, se usan 3 histogramas de 256 valores, que corresponden con el canal

rojo, verde y azul. Estos 3 histogramas se juntan en un super vector de 768 elementos,

que contiene los 3 histogramas uno detras de otro. En la implementacion se usa una

matriz de 3 filas por 3 columnas, en vez de un vector, dado que el tipo de dato Mat de

OpenCV lo trata como si fuera un vector.

Este super vector es normalizado entre [0,1] empleando la funcion normalize() de

OpenCV. Esta funcion ofrece varios tipos de normalizacion, y se ha usado el metodo

MINMAX, que asigna al valor mas alto dentro del histograma el valor 1 y al valor mas

bajo se asigna a 0, interpolando el resto de valores.

El calculo de la distancia entre los vectores de caracterısticas se calcula mediante la

distancia euclıdea. Se hace uso de la funcion norm() proporcionada por OpenCV, que

por defecto calcula la distancia euclıdea.

7.3. Dataset

El dataset es el conjunto de vectores de caracterısticas usados para el entrenamiento

del algoritmo de clasificacion.

61

Page 70: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7. Diseno y evaluacion del reconocedor de medicamentos

En este proyecto se esta trabajando con un dataset con un total de 1320 vectores de

caracterısticas. Siendo 120 muestras por cada clase, con un total de 11 clases. Las clases

se corresponden con el nombre de los medicamentos con los que se estan trabajando.

7.4. Universo de trabajo

El universo de trabajo es el conjunto de elementos, en nuestro caso cajas de medica-

mentos, que se corresponden con cada una de las clases dentro del dataset.

A continuacion se muestra un ejemplo de cada uno de los medicamentos usados. Se ha

utilizado el proceso implementado para la adquisicion de lexico para extraer, de forma

aleatoria, una captura y el histograma de cada uno de los medicamentos.

(a) Captura. (b) Histograma.

Figura 7.1: Universo de trabajo: Almax.

62

Page 71: Asistente Robotizado para la gestión interactiva de medicamentos a

7.4. Universo de trabajo

(a) Captura. (b) Histograma.

Figura 7.2: Universo de trabajo: Aspirina.

(a) Captura. (b) Histograma.

Figura 7.3: Universo de trabajo: BB Cream.

63

Page 72: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7. Diseno y evaluacion del reconocedor de medicamentos

(a) Captura. (b) Histograma.

Figura 7.4: Universo de trabajo: Celestoderm.

(a) Captura. (b) Histograma.

Figura 7.5: Universo de trabajo: Dretine..

64

Page 73: Asistente Robotizado para la gestión interactiva de medicamentos a

7.4. Universo de trabajo

(a) Captura. (b) Histograma.

Figura 7.6: Universo de trabajo: Enantyum.

(a) Captura. (b) Histograma.

Figura 7.7: Universo de trabajo: Espidifen.

65

Page 74: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7. Diseno y evaluacion del reconocedor de medicamentos

(a) Captura. (b) Histograma.

Figura 7.8: Universo de trabajo: Fungusol.

(a) Captura. (b) Histograma.

Figura 7.9: Universo de trabajo: Glicilax.

66

Page 75: Asistente Robotizado para la gestión interactiva de medicamentos a

7.5. Resultados del clasificador

(a) Captura. (b) Histograma.

Figura 7.10: Universo de trabajo: Oliderm.

(a) Captura. (b) Histograma.

Figura 7.11: Universo de trabajo: Pharmaton.

7.5. Resultados del clasificador

Para comprobar la eficacia del clasificador en la tarea de reconocimiento de medi-

camentos normalmente se separa el conjunto de datos (dataset) en dos conjuntos, un

conjunto de entrenamiento y un conjunto de prueba. De esta manera se puede probar

el algoritmo para conocer su tasa de aciertos ante casos desconocidos. En este proyecto

se ha usado el metodo leave-one-out.

67

Page 76: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 7. Diseno y evaluacion del reconocedor de medicamentos

0 2 4 6 8 10 12 14 16

96,5

97

97,5

98

98,5

99

k

%aciertos

Leave-one-out

Figura 7.12: Grafica del resultado de leave-one-out

La validacion mediante el algoritmo Leave-one-out consiste en extraer un elemento

del dataset que va a conformar el conjunto de prueba y el resto de elementos conforman

el conjunto de entrenamiento. Seguidamente se aplica el algoritmo de clasificacion y

se anota su resultado. Este proceso se repite para cada uno de los elementos dentro

del dataset. Al final del resultado se calcula la tasa de aciertos contando el numero de

aciertos frente al numero total de elementos.

En la figura 7.12 y en la tabla 7.1 se puede observar el resultado de aplicar el test

leave-one-out al dataset de medicamentos.

Con un valor de k = 1 se obtiene los mejores resultados con este algoritmo alcanzando

una tasa de aciertos del 99,17%. Es un resultado muy bueno, por ello se usa el valor

de k = 1 en la fase de busqueda.

68

Page 77: Asistente Robotizado para la gestión interactiva de medicamentos a

7.5. Resultados del clasificador

k aciertos total % exito

1 1309 1320 99.16673 1303 1320 98.71215 1304 1320 98.78797 1294 1320 98.03039 1291 1320 97.803011 1286 1320 97.424213 1281 1320 97.045515 1276 1320 96.6667

Cuadro 7.1: Resultado Leave-one-out

almax

aspirina

bbcream

celestoderm

dretine

enan

tyum

espidifen

fungu

sol

glycilax

oliderm

pharmaton

almax 120 0 0 0 0 0 0 0 0 0 0aspirina 0 119 0 1 0 0 0 0 0 0 0bbcream 0 0 119 1 0 0 0 0 0 0 0celestoderm 0 0 1 117 0 2 0 0 0 0 0dretine 0 0 1 0 119 0 0 0 0 0 0enantyum 0 0 0 0 0 120 0 0 0 0 0espidifen 0 0 0 0 0 0 119 1 0 0 0fungusol 0 0 1 0 0 0 0 119 0 0 0glycilax 0 1 1 0 0 0 0 0 118 0 0oliderm 0 0 0 0 0 0 0 0 0 120 0pharmaton 0 0 1 0 0 0 0 0 0 0 119

Cuadro 7.2: Matriz de confusion (k=1)

69

Page 78: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 8

Conclusiones

La idea principal de este proyecto consistıa en disenar un sistema que permitiera a

un robot buscar e identificar medicamentos para ayudar a personas dependientes. Al

final se ha conseguido que el robot Meccanoid G15KS sea capaz de buscar un medi-

camento situado en una estanterıa y senalarlo mediante un puntero laser. Ademas se

puede programar una agenda en el robot que ejecute el programa de busqueda a una

hora indicada, o se puede hacer manualmente para buscar un medicamento concreto.

Para que el robot sea capaz de realizar esto, es necesario que aprenda como son los

medicamentos, para ello se ha realizado un procedimiento de adquisicion de lexico con

anclaje visual que ademas sirve para el entrenamiento del robot.

El primer objetivo a alcanzar era el de disenar un metodo de comunicacion simbolico.

Este problema se resolvio usando un puntero laser. Aunque parece algo extrano en un

principio, este metodo se usa de forma intuitiva por un humano tras el primer uso.

Ademas, el proceso de identificar el objeto senalado es trivial y elimina todas las posibles

ambiguedades. A pesar de que la deteccion del puntero laser puede presentar algunos

problemas en escenas muy iluminadas, la tarea suele ser bastante sencilla y rapida de

realizar; practicamente en todos los casos se obtienen buenos resultados. La principal

pega de este mecanismo es que es necesario disponer de un dispositivo que contenga un

laser que pueda manejar el usuario.

El proceso de adquisicion de lexico, se ha apoyado en el uso del puntero laser y la

deteccion de objetos realizada mediante vision por computador para poder identificar el

70

Page 79: Asistente Robotizado para la gestión interactiva de medicamentos a

objeto que queremos que aprenda el robot. La mejora mas importante en este aspecto

viene de la captura de vıdeo. Se han usado varios fotogramas seguidos para mejorar el

resultado que se obtiene de forma individual en cada uno de los fotogramas. El proceso

consiste en obtener en cada fotograma el rectangulo delimitador de mayor area, que

corresponde con el rectangulo que rodea la caja del medicamento. Al tomar varios

fotogramas, se obtiene al final el rectangulo de mayor area de todos los calculados. Este

metodo ha mejorado considerablemente la eficacia del proceso individual, permitiendo

identificar un medicamento de forma fiable en unos 2-3 segundos. En alguna ocasiones

este tiempo puede extenderse, debido a que la posicion del medicamento o la iluminacion

impiden la deteccion de todos los bordes del objeto. Pero a pesar de esto, si se mantiene

el tiempo suficiente el puntero laser sobre el objeto, puede encontrarse el borde exterior.

Una vez tenemos el rectangulo delimitador, simplemente se recorta la imagen usando

ese rectangulo. Como todas las cajas de medicamentos son rectangulares, simplemente

hay que recortar la imagen usando el rectangulo delimitador del contorno exterior del

objeto detectado. Este proceso es muy especifico para esta tarea en concreto que habrıa

que refinar si se quiere usar otro tipo de recipientes.

La tarea de adquisicion de lexico se ha realizado de forma conjunta con el proceso de

entrenamiento del dataset de entrenamiento del clasificador. Esto permite que la apli-

cacion realizada pueda ser usada en cualquier robot y que ademas pueda ser entrenado

de forma facil por cualquier persona, sin necesidad de tener un gran conocimiento de

inteligencia artificial. A pesar de esto, el proceso puede resultar algo cansado si se reali-

za en una unica sesion. Para aliviar la pesadez de esta tarea, se ha disenado un sistema

de entrenamiento abierto, con el cual puede irse entrenando el robot en sesiones cortas.

Incluso se pueden anadir nuevos medicamentos una vez que el robot ya esta usando. A

esto le acompana la ventaja de usar un clasificador knn, puesto que el entrenamiento

no requiere de tiempo de computo adicional.

Se ha disenado un procedimiento para que el robot sea capaz de buscar y senalar

un medicamento dentro de una estanterıa de forma autonoma. La parte crucial de esta

tarea reside en la identificacion del medicamento. Esta tarea la realiza el algoritmo de

clasificacion knn. Se han obtenido resultados muy buenos, con una tasa de aciertos por

71

Page 80: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 8. Conclusiones

encima del 99% en el test leave-one-out. Se han usado utilizando tres histogramas como

variable predictora, uno por cada canal de la imagen RGB.

La otra parte mas importante dentro del proceso de busqueda reside en la segmenta-

cion de todos los objetos de la imagen, para ello se ha usado un algoritmo que se basa

en la deteccion de bordes de la imagen y una jerarquıa que los relaciona para obtener

el borde exterior de cada uno de los medicamentos. Para ello obtiene los rectangulos

delimitadores con mayor area. Una vez obtenido el borde exterior de las cajas, la parte

de segmentar la imagen es analoga al procedimiento de adquisicion de lexico.

Para poder probar estos experimentos, se ha usado el robot Meccanoid G15KS. Es-

te robot ha sido modificado para que pueda ser usado en este proyecto. La primera

modificacion consistio en modificar su estructura para que la cabeza pudiera realizar

un movimiento horizontal y vertical (PAN-TILT). Se anadio una camara y un puntero

laser. Finalmente se descarto el procesador del robot y se incluyo una Raspberry Pi y

una placa Arduino para la vision artificial y el control de los motores respectivamente.

El robot elegido ha sido una muy buena eleccion y ha permito poner a prueba en un

entorno real todo el proceso.

72

Page 81: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 9

Lıneas de trabajo futuro

Este trabajo ha desencadenado un punto de partida para realizar una investigacion

mas profunda en muchos de los metodos y procedimientos que se han desarrollado.

Ademas se pueden incluir muchas mejoras que se han dejado de lado en el transcurso

de este proyecto.

La parte donde mas se puede mejorar es en la comunicacion hombre-maquina. Co-

mo hemos visto este proyecto se ha centrado en una comunicacion simbolica, y se ha

empleado un metodo muy sencillo, que consiste en el uso de un puntero laser. Sin em-

bargo, el mecanismo usado en la sociedad humana consiste en usar gestos y sonidos.

Una posible linea de investigacion futura puede consistir en el reconocimiento de gestos

acompanados de informacion sonora. Pueden ser gestos sencillos como tocar un objeto

o apuntar con el dedo. Las senales sonoras pueden ser ordenes sencillas que ayuden al

robot a comprender el gesto que esta realizando.

La propia parte de reconocimiento de voz, y sobretodo entender que dice la perso-

na sigue siendo un gran reto dentro de la Inteligencia Artificial, e investigar en esta

direccion es un buen camino por donde continuar.

La deteccion de los bordes de los objetos ha sido uno de los procedimientos de los

cuales mejor resultado se ha obtenido. Sin embargo el proceso esta pensado para una

escena estatica, o con ligeras modificacion. Una linea de trabajo futura es adaptar este

metodo para objetos que estan en movimiento, de tal forma que se puedan usar varios

73

Page 82: Asistente Robotizado para la gestión interactiva de medicamentos a

Capıtulo 9. Lıneas de trabajo futuro

fotogramas para detectar correctamente los objetos que se mueven dentro de la escena.

El ultimo paso de la segmentacion, que cosiste en recortar la imagen ha resultado

muy sencilla en este caso debido a que los medicamentos con los que se ha trabajado

estan en cajas de carton rectangulares. En muchos casos podemos encontrarnos con

botes de plastico o cristal que contienen el medicamento en su interior. En estos caso

el proceso de segmentacion se deberıa de refinar para conseguir segmentar todo tipo de

envoltorios, y esto puede ser el punto de partida para otra lınea de investigacion futura.

Otra de las partes donde mas se puede mejorar en es el reconocimiento de medica-

mentos. Aunque los resultados obtenidos han sido buenos, es conveniente seguir investi-

gando en esta linea y mejorar este reconocimiento, puesto que podemos estar hablando

de vidas humanas. Un punto donde mejorar es en la eleccion de nuevas variables dis-

criminantes, aunque usar el histograma ha sido una muy buena opcion, el tamano de

los vectores de caracterısticas que se han generado son muy grandes y eso implica la

necesidad de disponer de un sistema con una gran cantidad de memoria. Usar el algo-

ritmo knn no ayuda tampoco en este aspecto. Se puede plantear el uso de otro tipo de

clasificadores mas robustos, eficientes y rapidos.

La fase de clasificacion se puede complementar o quizas incluso sustituir con la lectura

del nombre del medicamento y/o codigo de barras. Este metodo implica un gran reto,

puesto que lo mas complicado es encontrar la posicion del nombre del medicamento. Este

camino es una buena opcion porque existen muchos medicamentos que su apariencia es

igual, y solo cambia el nombre, como es el caso de los medicamentos genericos. Ademas,

la parte de reconocimiento de los caracteres esta suficientemente investigada como para

ser un mecanismo muy fiable.

74

Page 83: Asistente Robotizado para la gestión interactiva de medicamentos a

Bibliografıa

Arduino web. URL https://www.arduino.cc/. (2016-07-04).

Meccano - Meccanoid. a. URL http://www.meccano.com/meccanoid-about. (2016-

07-01).

Meccano - Meccanoid-opensource. b. URL http://www.meccano.com/

meccanoid-opensource. (2016-07-01).

OpenCV. URL http://opencv.org/. (2016-07-01).

Placa Zum Core compatible ArduinoTM | BQ. URL https://www.bq.com/es/

placa-zum-core. (2016-07-01).

Raspberry Pi - Teach, Learn, and Make with Raspberry Pi. a. URL https://www.

raspberrypi.org/. (2016-07-01).

raspicam commands - Raspberry Pi Documentation. b. URL https://www.

raspberrypi.org/documentation/usage/camera/raspicam/. (2016-07-01).

Raspicam lib - GitHub. c. URL https://github.com/cedricve/raspicam. (2016-07-

01).

WiringPi. URL http://wiringpi.com/. (2016-07-01).

J. Canny. A Computational Approach to Edge Detection. IEEE Transactions on

Pattern Analysis and Machine Intelligence, PAMI-8(6):679–698, 1986. ISSN 0162-

8828.

Antonio Cunha, Telmo Adao, y Paula Trigueiros. HelpmePills: a mobile pill recognition

tool for elderly persons. Procedia Technology, 16:1523–1532, 2014.

75

Page 84: Asistente Robotizado para la gestión interactiva de medicamentos a

Bibliografıa

C. C. Kemp, C. D. Anderson, H. Nguyen, A. J. Trevor, y Z. Xu. A point-and-click

interface for the real world: Laser designation of objects for mobile manipulation. En

2008 3rd ACM/IEEE International Conference on Human-Robot Interaction (HRI),

pags. 241–248. 2008.

Yukie Nagai, Koh Hosoda, Akio Morita, y Minoru Asada. Emergence of joint attention

based on visual attention and self learning. En Int. Symposium on Adaptive Motion

of Animals and Machines. 2003.

Natalie Parde, Michalis Papakostas, Konstantinos Tsiakas, Maria Dagioglou, Vangelis

Karkaletsis, y Rodney D Nielsen. I spy: An interactive game-based approach to

multimodal robot learning. En Workshops at the Twenty-Ninth AAAI Conference

on Artificial Intelligence. 2015.

P. Rouanet, J. Bechu, y P. Y. Oudeyer. A comparison of three interfaces using handheld

devices to intuitively drive and show objects to a social robot: the impact of underl-

ying metaphors. En RO-MAN 2009 - The 18th IEEE International Symposium on

Robot and Human Interactive Communication, pags. 1066–1072. 2009.

P. Rouanet, P. Y. Oudeyer, F. Danieau, y D. Filliat. The Impact of Human-Robot Inter-

faces on the Learning of Visual Objects. IEEE Transactions on Robotics, 29(2):525–

541, 2013. ISSN 1552-3098.

B. W. Silverman y M. C. Jones. E. Fix and J.L. Hodges (1951): An Important Contribu-

tion to Nonparametric Discriminant Analysis and Density Estimation: Commentary

on Fix and Hodges (1951). International Statistical Review / Revue Internationale

de Statistique, 57(3):233–238, 1989. ISSN 0306-7734.

Satoshi Suzuki y KeiichiA be. Topological structural analysis of digitized binary images

by border following. Computer Vision, Graphics, and Image Processing, 30(1):32–46,

1985. ISSN 0734-189X.

Priyesh Tiwari, Jim Warren, Karen Day, Bruce MacDonald, Chandimal Jayawardena,

I. H. Kuo, Aleksandar Igic, y Chandan Datta. Feasibility Study of a Robotic Me-

dication Assistant for the Elderly. En Proceedings of the Twelfth Australasian User

Interface Conference - Volume 117, AUIC ’11, pags. 57–66. Australian Computer

Society, Inc., Darlinghurst, Australia, Australia, 2011. ISBN 978-1-920682-97-2.

76

Page 85: Asistente Robotizado para la gestión interactiva de medicamentos a

Bibliografıa

Chen Yu y Dana H Ballard. Exploring the role of attention in modeling embodied lan-

guage acquisition. En Proceedings of the Fifth International Conference on Cognitive

Modeling, pags. 219–224. 2003.

HK Yuen, J Princen, J Illingworth, y J Kittler. Comparative study of Hough Transform

methods for circle finding. Image and Vision Computing, 8(1):71–77, 1990. ISSN

0262-8856.

77