Igual que en el apartado anterior, el proceso de elección ha seguido un camino similar parejo a la elección del sistema principal, lo que pasa es que en este caso, el dispositivo de control puede ser siempre el mismo independientemente de la plataforma elegida.
La idea original desde el principio, era la de hacer el control del sistema, usando la mano, para ello se pensó en un guante de realidad virtual, pues es el dispositivo existente, más adecuado para ello. Se hizo una pequeña búsqueda, y se encontró que el guante P5, era un producto asequible y bastante documentado en la red.
Se compró y se hizo funcionar bajo ArchLinux/RPi, pero al no ser considerado esencial para desarrollar la aplicación (pues se puede simular con 4 variables que varien entre 0 y 64) se ha donado a la Fundación Fuentes Abiertas por su colaboración.
Al principio las primeras pruebas de control bajo PC y matlab se hicieron con un gamepad, y quizás esta pueda ser la solución de un primer prototipo, para hacer un control del sistema portatil sin usar un teclado.
Para los que quieran usar el guante P5 con la plataforma RPi, o cualquier pc, aquí los repositorios con el código fuente para ser compilado. Incluye ejemplos en lenguaje C, para su uso.
-Guante de realidad virtual P5 de vrealities. (drivers bajo linux Arch linux)
http://code.google.com/p/libp5glove/source/checkout
http://noisybox.net/computers/p5glove/
Existen en el mercado una gran variedad de transductores que permiten trabajar a la frecuencia de los ultrasonidos, pero por características físicas, suelen ser:
-Resonantes, que trabajan muy bien (gran eficiencia en la conversión de un tipo de energía a otra) en una banda muy estrecha, por ejemplo son típicos los que trabajan a 40Khz
-Los elsctroestáticos, que trabajan con una banda más ancha, pero que requieren de bastante circuitería adicional (tensión de bias, etc...) una muestra de que tipo de transductores estamos hablando en http://www.avisoft.com/usg/microphones.htm
En este proyecto desde el principio, nos hemos basado en un documento que ha funcionado de forma correcta, se trata de "A BIOLOGICALLY INSPIRED SONARHEAD" ( https://sites.google.com/site/sbeiprivate/tareas-demostrador-robotica/tareas-agosto/biosonar.pdf ) Este documento y los materiales para montaje fueron comprados y seleccionados por Francisco Vegara.
Toda la circuitería y los transductores "cuelgan" en cascada del los circuitos de conversión AD y DA que están conectados al puerto SPI de la RPi.
Y tienen un ancho de banda útil de unos 20KHz con frecuencia central de 50KHz, aunque pueden trabajar de los 40Khz a los 100Khz ya que antes de diseñar el sistema AD-DA se probaron con un generador de funciones.
Se estudió la posibilidad de hacer una interfaz háptica, pero con la dedicación programada en goteo y productos disponibles en el mercado, se pensó que no era la solución para hacer algo asequible y sencillo de usar por cualquier desarollador potencial.
Al ser informado por Juan Domingo de la posibilidad de usar la tecnología "bone conduction" cambió el planteamiento, pues esta tecnología no obstruía el canal auditivo y hacía ahún más "natural" el invento, pues podían ser transformados en frecuencias audibles los ultrasonidos emitidos y recibidos, haciendo la interpretación de la información, más natural para el cerebro.
Para la sintesis de señales se usan un conjunto de librerías "open" definidas en:
http://www.music.mcgill.ca/~gary/rtaudio/
https://ccrma.stanford.edu/software/stk/
Estas librerías se han compilado y usado en el SO Arch linux y plataforma hardware RaspBerry Pi. Pero no se han llegado a aprovechar toda la potencialidad de estas, pues solo se han llegado a sintetizar senos.
La tecnología bone conduction sin amplificación puede ser insuficiente para el propósito del proyecto ya que nivel sonoro máximo experimentado con la RBPI resulta ser de un bajo nivel comparado con el nivel experimentado con auriculares tradicionales, quizás suficiente, pero no necesariamente pues en entornos ruidosos puede quedar enmascarado por otros sonidos. Por lo que puede considerarse para futuros avances, la tecnología bone conduction autoamplificada, u otra placa de desarrollo embarcado, que emita con más potencia por el puerto analogico de sonido.
Para el desarrollo y prueba de la idea, es suficiente con auriculares normales pues son los que producen un mejor rendimiento en el laboratorio. Despues el cambio a la tecnología "bone conduction" es inmediato.
Para todo esto, es suficiente con usar el sistema de sonido de la RPi, o el de cualquier sistema equivalente.
Para futuros desarrollos se considerará desarrollar una interfaz haptica siguiendo la idea original. Pero no parece ser algo alcanzable a corto plazo.
Para hacer más facil el trabajo de desarrollo software, se han dividido en diferentes partes el sistema, de acorde a la funcionalidad deseada.
Los archivos y el codigo fuente se encuentran en la documentación en inglés:
https://sites.google.com/site/sibiecin/technicaldataatgoteostage
También se pueden encontrar aquí las instrucciones para manejar el SO Arch linux generado, desde la consola, a través de la linea de comandos, así como del método usado para la compilación del codigo fuente y las herramientas de edición consideradas.
También se describe el proceso que se ha seguido para hacer que el sistema pueda usar todas las librerias necesarias para la aplicación.
Normalmente se ha generado un único archivo fuente por cada módulo software para simplificar su comprensión, en algunos casos se ha generado archivos grandes pero manipulables.
El lenguaje de programación usado ha sido el C/C++ Siendo el compilador capaz de compilarlos ambos simultaneamente.
Guante de realidad virtual P5 de vrealities. (drivers bajo linux Arch linux) repositorios codigo fuente.
http://code.google.com/p/libp5glove/source/checkout
Se ha conseguido Recoger los valores numericos enteros correspondientes a la flexión de los dedos (de 0 a 63) además de los valores de los botones del guante para guardarlos en variables enteras que pueden ser pasadas a otros programas, pero es posible capturar la posición en el espacio respecto al detector de infrarojos de cada uno de los leds infrarojos que existen en el guante, por si es necesario para otras aplicaciones.
Para que funcione el guante es necesario que el receptor de infrarojos vea almenos un led del guante.
Ese modulo funciona bien de forma aislada, pero al intentar combinarlo con otros modulos, no funciona todo lo bien que se esperaba y habría que depurar el codigo para hacerlo funcionar.
Para el desarrollo software de la aplicación, no es necesario contar con el guante físicamente, ya que este es facilmente simulable con entradas del teclado.
Se puede desarrollar un sistema de control alternativo, pero no se ha hecho hasta ahora.
Para la sintesis de señales se usan un conjunto de librerías "open" definidas en:
http://www.music.mcgill.ca/~gary/rtaudio/
https://ccrma.stanford.edu/software/stk/
Se usan vectores en la memoria RAM de la RPi para almacenar las secuencias numericas de datos generadas.
Los vectores generados son de datos de 64 bits, haciendolos desproporcionadamente grandes para la información que almacenan, ya que la tarjeta de sonido de la RPi manipula datos de 16 bits.
Posiblemente la librería esté diseñada así para que se puedan trabajar con los datos de cualquier tarjeta de sonido existente y futura (los drivers actuales están manipulando datos de 32 bits) pero el hardware existente no suele pasar de los 24 bits.
Hasta ahora solo se han conseguido sintetizar senos, pero el software definido tiene un potencial mucho mas grande para sintetizar señales.
En este programa, se han dedicado la mayor parte de los esfuerzos, pues incluye la mayor cantidad de tiempo invertido en el software del proyecto.
Basicamente se ha combinado la sintesis de señales y la comunicación con la tarjeta de sonido para poder probar el bus SPI, para poder enviar datos se han tenido que transformar de los 64 bits en coma flotante originales a los 16bits "enteros" necesarios para los chips DA y el proceso inverso para la captura de datos procedentes del conversor AD
Este modulo está estrechamente relacionado con el hardware pues es el que se comunica con el a más bajo nivel de todos los módulos.
Este modulo está integrado en el anterior módulo y usa las funciones de STK y RtAudio para comunicarse con la tarjeta de sonido de la RPi.
En este apartado no se ha implemantado nada, pues no se ha llegado a capturar ninguna señal externa, pero se ha pensado en usar la librería STK que contiene muchas funciones para el tratamiento de señales, tales como filtros digitales, etc...
Las primeras tentativas de unificar toso el software, ha resultado en problemas del contro del tiempo del ciclo del programa, así como problemas con el acceso a los dispositivos de control P5, por lo que es posible que haya que depurar mucho para implementar un modulo integrado que incluya todo el hardware descrito, sobre todo el guante P5. Hay mucho que hacer todavía incluso para obtener una funcionalidad básica.
El diseño del sistema está definido pero no está probado completamente, pero con poco que hagamos, podremos empezar a hacer pruebas de la idea original a un bajo coste y con una pequeña inversión, hay muy poco hecho en el campo de los ultrasonidos y las investigaciones en este campo pueden dar grandes satisfacciones. El sistema está definido a un nivel de desarrollo básico y hay muchas cosas que se han de mejorar para que esto se pueda convertir en un producto "maduro" para el mercado, solo el trabajo en este sentido, nos dará las respuestas en cuanto a la inversión necesaria y el tiempo necesario.
Durante la investigación del "estado del arte" hemos descubierto proyectos en el ambito de la Investigación, conceptualmete similares a SBEI y con unos resultados esperanzadores, por lo que esto es motivo suficiente como para animarnos a trabajar en la "dirección" tomada.
Esperemos que con nuestro trabajo en esta "etapa" haber facilitado un poco la tarea a cualquier interesado en continuar con el desarrollo de las ideas expuestas, así como haber proporcionado información util a cualquier usuario interesado en el desarrollo de sistemas embarcados y la ingeniería electrónica en general.