Semana 12. Diseño de interfaz para el control manual de la persona
La semana pasada diseñé un plugin que era capaz de mover una persona en un hospital a través de varios waypoints de manera autónoma. El siguiente subobjetivo fue diseñar una app simple que permitiera controlar manualmente a la persona. Esta app diseñada con el framework Qt permite un control automático y manual a gusto del usuario.
Qt. Es un framework multiplataforma orientado a objetos ampliamente usado para desarrollar programas que utilicen interfaz gráfica de usuario, así como también diferentes tipos de herramientas para la línea de comandos y consolas para servidores que no necesitan una interfaz gráfica de usuario. (Wikipedia)
Para el desarrollo de la aplicación empleé Qt Creator, un IDLE que te permite diseñar aplicaciones QT de una forma fácil y muy visual.
El aspecto visual de la aplicación fue el siguiente:
Y su funcionamiento es el siguiente:
- Si pulsamos el boton “manual control” detendremos la ejecución automática del modelo de la persona y a partir de ahí podremos controlarlo con los botones del cuadro de control de la derecha.
- El cuadro de control de la derecha funciona haciendo click directamente sobre los botones o, usando las teclas del teclado w,a,s,d propias de los videojuegos para el control de un personaje.
- Cuando dejemos de seleccionar el control manual, el modelo pasará a modo automático, desplazándose al waypoint más cercano y siguiendo a partir de ahí la trayectoria preestablecida.
En el Backend de la aplicación desarrollé una comunicación cliente-servidor entre la app y el plugin a través de sockets mediante conexión UDP. De esta forma, cuando el usuario pinchase en cualquier botón mandaría un mensaje UDP al plugin, este último lo procesaría y en base a los datos recibidos movería al modelo de Gazebo de una manera u otra.
A continuación veréis un ejemplo del funcionamiento de la app, controlando al modelo de una persona en Gazebo en el mundo del Hospital: