Monitor
Contenido
Integrantes
- Nicolás Vázquez nicovazquez90@gmail.com
- Gonzalo Crovetto crovetto.gonzalo@gmail.com
- Federico Mujica federicomujica1@gmail.com
Tutor
- Gonzalo Tejera <gtejera@fing.edu.uy>
Introducción
La plataforma Butiá se caracteriza por su amigabilidad y ayuda al usuario. Este proyecto plantea estudiar las posibilidades de ampliar la ayuda al usuario mediante la incorporación de un elemento monitor, que permita diagnosticar y apoyar el desarrollo de comportamientos.
Objetivo
El objetivo del proyecto es integran un monitoreo del estado de los sensores a la interfaz gráfica del TutleBot. De esta manera queremos que el usuario sepa de una forma facil e intuitiva cuando un sensor esta teniendo algún tipo de problema.
Motivación
Al finalizar este proyecto debemos poder brindar una forma intuitiva para usuarios sin conocimientos de electrónica ni programación de saber cual es el estado de los sensores butia. De esta forma, el usuario puede darse cuenta cuando cambiar un cable o un sensor defectuoso que este afectando su programa.
Investigación
Previo a poder implementar algunas de las ideas que nos surgían, pasamos por un largo proceso de investigación del funcionamiento de la plataforma Butiá. Identificamos módulos clave en la arquitectura del sistema, que se comunican de la siguiente manera:
En el centro de la imagen pueden verse las componentes centrales del sistema: pybot_client y pybot_server. Al iniciar TurtleBots, se inicializan ambos, y toda la interacción que podemos hacer desde la interfaz gráfica se va a traducir en comandos que se envían desde pybot_client hacia pybot_server, donde son atendidos estos pedidos.
- (falta hablar de butia y usb4butia, etc)
Desarrollo
Como puede verse en el directorio /plugins/butia hemos creado dos nuevas clases:
- MonitorButia (definido en el archivo monitor.py)
- MonitorElem (definido en el archivo monitor_elem.py)
MonitorElem
MonitorButia
Nuestra clase MonitorButia está compuesta por un hash llamado sensors, en el cual la clave de cada elemento es el String que identifica a cada uno de los sensores o actuadores, y el valor es un arreglo de 6 elementos MonitorElem (ya que es el número máximo de puertos que contiene la placa USB4Butia). Ademas contamos con las claves por separado en el atributo sensors_name. Para clarificar veamos la inicialización de la clase MonitorButia:
def __init__(self):
self.sensors = {
'grey': [MonitorElem() for i in range(6)],
'light':[MonitorElem() for i in range(6)],
'distanc': [MonitorElem() for i in range(6)],
'button': [MonitorElem() for i in range(6)],
'motors': [MonitorElem() for i in range(8)]
}
self.sensors_name = ['grey', 'light', 'button', 'distanc','motors']