TECNOLOGÍA Y CIENCIA |
|
NeuroBot es un dispositivo de entrenamiento para la rehabilitación de personas con lesiones cerebrales ideado por el neuropsicólogo José María Torralba Muñoz con el objetivo de añadir a los métodos más convencionales un plus motivacional y de mejora de la atención implicando actividades motoras en el proceso rehabilitador.
La idea base consiste en conducir NeuroBot a lo largo de un recorrido manejándolo con un mando a distancia pero imponiendo a su control ciertas dificultades al proceso de toma de decisiones por parte de la persona con DCA. En las primeras versiones, los parámetros controlados son sólo la velocidad y la dirección (cuando se pulsa sobre girar a la derecha el vehículo gira a la izquierda y viceversa) pero ya existe en prototipo una plataforma genérica que permite implementar diferentes dificultades que impliquen otras actividades motoras en la toma de decisiones.
Además de por su dimensión tecnológica, el proyecto me interesó porque se quería desarrollar como software libre y hardware libre así como facilitar su fabricación casera, al estilo DIY del movimiento Maker, para hacerlo llegar a cualquiera que lo necesitara. En el proceso, una de las sorpresas más agradables ha sido conocido a Createc, auténtico referente maker en Granada además de centro pionero en la impresión 3D.
Fran en el taller de Createc 3D. Si el no puede hacerlo es que no puede hacerse.
Cuando conocí el proyecto ya existían dos versiones operativas y probadas (llamadas primero Cerebrot y posteriormente NeuroBot) desarrolladas con el soporte del equipo del departamento de electrónica del IES Virgen de las Nieves dirigido por Federico Coca y que servían de base para acometer una línea de trabajo ya estable y con muchas garantías de éxito. Además de por ser un proyecto de hardware libre y software libre, me interesó colaborar en el desarrollo porque me parecía que encajaba muy bien con mi perfil profesional por su dimensión electrónica, de programación y de diseño de productos en 3D; además de implicar un campo tan apasionante como la psicología y destinarse a un fin social como la ayuda a la recuperación de personas con daño cerebral adquirido (DCA). Para la parte electrónica se eligió usar placas Arduino, que son muy económicas y fáciles de conseguir además de contar con infinidad de módulos, también muy baratos y sencillos de conectar y programar incluso por personas sin conocimientos específicos.
El controlador más sencillo de adquirir es un mando a distancia universal por infrarrojos, aunque es fácil extrapolar la idea de funcionamiento a otros tipos de comunicaciones, Bluetooth, por ejemplo, con la que ya hemos fabricado prototipos para la plataforma genérica de control.
Los dispositivos desarrollados antes del actual NeuroBot sugerían que el tamaño debía ser de unos 200 mm para poder ser apreciado cómodamente por el usuario y tener una forma que impidiera la ambigüedad a la hora de discriminar la dirección del movimiento. Para cumplir la segunda especificación lo más obvio era darle forma de flecha y eliminar cualquier elemento externo que pudiera distraer. La primera especificación podía ser satisfecha en una impresora 3D de tamaño convencional o en un panel de tamaño ISO A4 (para elaborarlo en 2D) usando unas medidas de 180 mm para asegurar que los márgenes no representaran un problema al imprimir o al cortar.
En el artículo sobre los componentes del vehículo se detallan las partes necesarias para fabricar el dispositivo de ayuda a la rehabilitación del DCA, la entrada de los modelos 2D y 3D y montaje del vehículo contiene una serie de pasos a seguir para construirlo y en la entrada que explica el software para Arduino con el que controlar el vehículo de ayuda a la rehabilitación del DCA se puede descargar la aplicación y encontrar algunas ideas sobre como adaptarla a componentes alternativos o realizar algunas mejoras.
Modelos 2D y 3D y montaje del vehículo de ayuda a la rehabilitación del DCA El diseño del soporte físico del vehículo de ayuda a la rehabilitación del daño cerebral adquirido (DCA) se elaboró pensando en la impresión 3D pero para la fase de pruebas, en la que el uso de algunos elementos no se habían decidido por completo, también se utilizó un modelo bidimensional que hace las veces de base sobre la que colocar los componentes y que es perfectamente operativo.
Como fabricarlo en 2D es muy económico y todas las partes se pueden reutilizar posteriormente para la versión impresa en 3D, es recomendable empezar por construirlo así en una primera etapa, especialmente si se van a realizar pruebas o modificaciones sobre el dispositivo original. Está disponible, con una licencia CC BY-SA 3.0 ES, la descarga gratis del dibujo de la base del vehículo en dos dimensiones en formato PDF
Para la impresión 3D del vehículo están disponible para descargar gratis los documentos en formato STL también con una licencia CC BY-SA 3.0 ES. Estos archivos pueden utilizarse con la mayoría de aplicaciones que gestionan impresoras 3D, por ejemplo con Cura de Ultimaker. Con el objetivo de que el dispositivo se pudiera apreciar (visualizar) fácilmente por los usuarios de los ejercicios de rehabilitación, se eligió una forma de flecha y un tamaño algo menor a los 200 mm que es la superficie máxima que suelen ser capaces de imprimir la mayoría de las impresoras 3D de tipo Prusa. Lo más aconsejable es girar las partes más grandes del modelo (la base y la carcasa) para evitar problemas con los márgenes de manera que la punta de la flecha (de un ángulo casi recto) quede en una esquina. De esta forma también se minimiza el riesgo de que el objeto se despegue de la cama durante el proceso de impresión 3D.
Para que sea más sencillo realizar modificaciones sobre el modelo 3D, también está disponible para descargar gratis el original en formato FreeCAD, igualmente licenciado conforme a CC BY-SA 3.0 ES. Aunque el las imágenes aparece una versión refinada del modelo 3D, el documento que se descarga no incluye esta operación para evitar así posibles problemas a la hora de modificar las partes de los objetos que pueden darse en algunas versiones antiguas de FreeCAD y hacer más cómodas las modificaciones del original.
El documento 3D en formato FreeCAD también conserva algunas alternativas para poder elegir entre la base con interruptor cuadrado o de palanca o el tratamiento antideslizante y el soporte con tuerca para las ruedas.
Si el ancho de las ruedas usadas para realizar el montaje basado en el modelo bidimensional no permite disponerlas en el espacio interior, es posible modificar el diseño 2D de forma muy sencilla manteniendo razonablemente la forma que permite distinguir la dirección del movimiento. Como se ilustra en el gráfico de abajo, sólo hace falta cortar en las dos zonas más delgadas de los extremos de los huecos de las ruedas.
El montaje del vehículo es muy sencillo, basta con fijar los componentes en el espacio correspondiente y realizar las conexiones. La única precaución que hay que considerar con respecto al orden en el que se realiza el proceso es que los motores, los LED y el interruptor deben soldarse antes de fijarse a la base. El resto de elementos pueden conectarse con cables de tipo DuPont, muy recomendable especialmente para reutilizar las partes de las pruebas 2D para el dispositivo definitivo impreso en 3D.
Una vez fijados los componentes cableados a la base se atornilla la placa del driver del motor y el Arduino Uno, se atornillan los cables de los motores y de la alimentación al driver y se realizan las conexiones entre componentes con los cables con conectores macho/hembra de tipo DuPont en los extremos.
Como es necesario conectar varios componentes a masa, se puede fabricar una especie de regleta con una tira de pines hembra para conectores macho de tipo DuPont. Sólo hay que cortar la parte que se quiere usar y soldar un trozo de cable de un hilo o el resto (largo) de una patilla de un componente (una resistencia de las que se usan en el montaje o un LED, que será más rígido) Para protegerlo se puede pegar el recubrimiento de un cable ancho o un trozo de funda termo-retráctil en ambos casos abiertos longitudinalmente.
Para sistematizar el proceso, he elaborado una lista con los pasos que hay que seguir pero, como se verá, el proceso es bastante flexible y sencillo como para que se pueda completar según otros itinerarios alternativos. Como seguir los pasos delante de la pantalla del ordenador y luego montar y conectar puede ser un poco tedioso, la idea es descargar en formato PDF la lista con los pasos del montaje y la conexión del vehículo de ayuda a la rehabilitación del DCA para imprimirla y montar en un lugar más cómodo.
Software del vehículo de ayuda a la rehabilitación del DCA
Como puede verse siguiendo el diagrama de flujo del gráfico de abajo, la aplicación que gestiona el funcionamiento del vehículo para ayudar a la rehabilitación del DCA es muy sencillo. Básicamente consiste en leer periódicamente (a la máxima frecuencia disponible) el receptor de infrarrojos, evaluar el código y si se trata de una orden de las que se han previsto en la plataforma (avanzar, retroceder, girar…) actuar en consecuencia activando los motores como corresponda o parándolos si no hay ninguna orden que ejecutar durante determinado periodo de tiempo. En entregas anteriores expliqué cómo, utilizar un mando universal de control por infrarrojos tiene la gran ventaja de abaratar el coste del dispositivo y hacerlo muy sencillo de construir pero acarrea el inconveniente de usar un protocolo de comunicaciones que está diseñado para el envío de órdenes aisladas, no continuas en el tiempo aunque puedan repetirse. Para resolver este inconveniente hay que asegurarse, por una parte, de la caducidad de las órdenes que podrían repetirse, algo resuelto en la librería para manejar Arduino con un mando a distancia por infrarrojos, y por otra de permitir que el movimiento del vehículo siga un cierto tiempo, imitando un comportamiento inercial, para suplir la continuidad de las órdenes y compensar la velocidad a la que llegan.
En el documento «CONFIGURACION.h» se encuentran los valores correspondientes a los números de pines utilizados para los motores (en realidad, para el driver) y para los indicadores así como las velocidades o sus coeficientes correctores y los diferentes tiempos monitorizados para establecer si el dispositivo debe seguir moviéndose (inercia) o si se debe ignorar una orden solicitada en un breve periodo de tiempo (rebote).
Como es lógico, será necesario modificar el valor de los pines finalmente utilizados al conectar el montaje y probar las velocidades para determinar las adecuadas para los motores que se hayan elegido para construir el dispositivo.
En el código anterior puede verse que la aplicación ha previsto el uso de dos receptores de infrarrojos (aunque en el montaje de ejemplo sólo se ha conectado uno) y no es complicado usar más. La idea es recibir correctamente la información del mando en posiciones del vehículo que oculten su vista o el reflejo de la luz que emite.
Se ha previsto usar un indicador para las tres velocidades implementadas que se encenderá más cuanto mayor sea el valor de la velocidad. Es sencillo añadir un número mayor de velocidades modificando tanto este documento como los valores correspondientes de los dos documentos explicados más abajo. La velocidad de giro no se establece directamente sino como un divisor de la velocidad actual (normalmente la mitad). El software permite elegir si se usa un LED encendido para indicar el movimiento directo (normal) o inverso (movimiento contrario al nominal de la orden) Pueden conectarse ambos, sólo uno de ellos o ninguno sin alterar el funcionamiento del vehículo. Para que sea fácil utilizar cualquier mando, se ha separado en el documento «TECLAS_IR.h» la correspondencia entre la operación y el valor enviado por el emisor de infrarrojos.
Para saber qué código está enviando el mando será necesario quitar el comentario de las líneas 20 y 63, conectar la placa Arduino al puerto USB de un ordenador, cargar el software, mostrar una consola e ir tomando nota de los valores que aparezcan al pulsar las teclas que se quieren asignar.
Para accionar los motores a la velocidad de giro que corresponda se utiliza la función AnalogWrite de Arduino que, pese a lo que su nombre sugiere, envía una señal digital al driver en la que el voltaje sostenido resultante (y por tanto la velocidad) se expresa por medio de la modulación por el ancho del pulso (PWM). El avance o retroceso envía una señal para que ambos motores giren en la dirección correspondiente; para conseguir el giro, sin usar ruedas específicas de dirección, se hace girar los motores en sentidos contrarios y a una velocidad (en principio) menor que la del movimiento lineal, por lo que el resultado es el vehículo rotando sobre sí mismo sin avanzar ni retroceder.
La función velocidad_giro() simplemente divide el valor de la velocidad a la que se está desplazando actualmente el vehículo, por el coeficiente establecido en la configuración para calcular así la velocidad de giro. Si el resultado fuera menor que la mínima velocidad, especificada también en la configuración, le asigna este último valor para evitar que una velocidad de giro demasiado baja impidiera el movimiento de los motores o no fuera la suficiente para desplazar el vehículo. Lógicamente el mínimo corresponderá con el motor concreto y peso final del montaje y habrá que determinarlo empíricamente probando hasta encontrarlo.
Junto a los comentarios que documentan el funcionamiento de la aplicación, el programa final mantiene, en lugar de eliminarlas, algunas líneas comentadas que corresponden a alternativas útiles y ayudas al funcionamiento. Además de las mencionadas líneas 20 y 63 que, «descomentadas», sirven para visualizar los valores enviados por el mando de control remoto por infrarrojos, he dejado las 95, 103, 111 y 120 como ayuda a la fase de pruebas (seguramente con el dispositivo parado) para mostrar la operación en curso. También es posible intercambiar las líneas 66 y 133 (poniendo el signo del comentario en la primera y quitándolo de la segunda) para reiniciar la inercia si la operación indicada por el mando a distancia ya se está ejecutando, y reforzar la coherencia de las órdenes en situaciones en las que el receptor pierde fácilmente la señal, a costa de perder cierta continuidad en el movimiento del vehículo. En lugar de copiar el software listado en los párrafos anteriores se puede descargar la aplicación de Arduino para controlar el vehículo de ayuda a la rehabilitación del DCA y grabar en la placa con el IDE de Arduino.
Autor/ Fuente: Victor Ventura / Polaridad.es /Createc 3D Contenido con licencia Creative Commons CC BY-SA 3.0 ES. El proyecto inicial fue publicado en 2015 por Víctor Ventura, quien administra el blog polaridad.es desde Granada, España.
![]()
Si se puede programar, entonces me gusta
Además de la programación, todas las formas de expresión gráfica me sirven para pasarlo bien. Empecé profesionalmente en Granada en CAD 2D y 3D para aplicaciones técnicas. Después, usando modelado 3D para hacer animaciones para vídeo, me enganché al tratamiento de imagen y completé con el diseño gráfico el uso que hacía del dibujo por ordenador. Juntando el interés por lo gráfico con la programación y agitándolo suave pero firmemente tienes a un desarrollador multimedia tan contento. Donde más a gusto me encuentro ahora es en la web. Y es en la web donde los dispositivos para Internet de las cosas (IoT) me han dado la ocasión de acercarme a la electrónica, una inquietud que he querido atender desde siempre y que también se lleva fenomenal con la programación, que sigue siendo, ya lo he dicho, mi principal oficio. Me gusta poder hacer todo esto usando software libre y hardware libre y ser parte de una comunidad a la que siempre que puedo le devuelvo un poco de lo mucho que me aporta. También puedes echar un vistazo a los artículos que escribo de vez en cuando en polaridad.es y en el blog de acadacual.es puedes encontrarme en Linkedin para lo profesional o escribirme un correo electrónico a [email protected] si quieres contactar conmigo personalmente.
Reconocimientos:
Las fotografías de películas, series o videojuegos son propiedad de las productoras y/o distribuidoras correspondientes. Excepto allí donde se establezcan otros términos, el contenido de esta página se publica bajo Licencia Creative Commons, así cualquier obra de terceros con variantes de esta licencia u otras, como otras autorizaciones de contenido de terceros debe respetar las condiciones en cada caso particular donde se especifique en la información adicional sobre Reconocimientos y más información sobre la obra gráfica
0 Comentarios
Deja una respuesta. |