Componentes

Resumen
Consiste en robot humanoide bípedo de 20 grados de libertad hecho con piezas de Bioloid (la base es un kit Bioloid Premium), piezas sueltas de Bioloid y las piezas de 2 móviles HTC Touch XL. El robot no es independiente pues depende de uno o varios pcs en HPC que llamaré desde ahora lado Servidor.
El software en el lado cliente Bioloid, a través del controlador CM-510 del mismo, gestiona los microcontroladores de los servos y los sensores y se comunica con el Servidor vía ZigBee (se estudia la posibilidad de que sea un HTC el que controle al CM-510 vía puerto serie) del que recibe instrucciones de control de los mismos, en base a la IA del servidor y/o a la interacción con el entorno, dejando prácticamente dependiente al Bioloid del Servidor (exceptuando pequeños comportamientos que llamo lado instintivo del cliente Bioloid).
Las partes de los HTC se montarán sobre el robot añadiendo vista estereoscópica (debido a las 2 cámaras de los HTC), reconocimiento de voz y del origen de emisión del sonido en los 3 ejes (debido a los 2 micrófonos de los HTC y 1 del Bioloid) e incluso altavoz para transmitir síntesis de voz en castellano; todo esto es gestionado en el HTC a través de un software que llamo del lado cliente Windows Mobile. Éste, se encarga de enviar a través de Wifi (modo ad hoc)/gprs, las imágenes + el sonido (mediate streaming) y la dirección 3D del sonido al Servidor. También, este software, reproduce mediante síntesis de voz el texto que recibe vía Wifi(modo ad hoc)/gprs (además de instrucciones de control al HTC (añadir "y del Bioloid" si estudio control desde HTC al CM-510 es viable). Los HTC son totalmente independientes del lado Bioloid (si estudio control desde HTC al CM-510 es viable)
 
Hardware
Para lado Cliente Bioloid:
- 2 x servos AX-18+.
- 2 x sensores IR (corta distancia)
- 1 x sensor ultrasonidos (media distancia)
- 1 x Baterías Li-PO de 11.1V 1100 mAh (alimentación de CM-510)
- 1 x Giróscopo de 2 ejes. Pendiente encontrar uno de 3 ejes.
- Frames de PVC.
- Piezas propias de aluminio.
- Espejos (para lograr ciertos ángulos de visión en robot)
Para lado Cliente Windows Mobile:
- 2 x HTC Touch XL:
    + 2 x Altavoces
    + 2 x Micrófonos
    + 2 x Cámaras.
- 2 x Baterías Li-Ion de 3.7V 1100 mAh (alimentación de hardware de HTC)
 Para lado Cliente Windows Server:
- 1 x PC (como mínimo, en un futuro Clúster de Alto Rendimiento)

 Software
- eNarduin Server - Windows XP/Vista/7 edition.
NOTA IMPORTANTE:  Actualmente estoy comprobando si se puede usar las plataformas Linux openQBO basado en ROS (tendría que migrar el código actual) Por ahora creo que no lo haré debido a que no es aún diretamente compatible con Robotis Bioloid y Dynamixel vía ZigBee (aunque sí que hay pequeñas experiencias realizadas por particuales al respecto).
Soft propio multiplataforma desarrollado con C++ en Visual Studio .NET 2008 (versión compatible con MONO para Linux/Mac) / C# ó VB en SharpDeveop 3.5 (soporte MONO Linux/Mac) / C# en MonoDevelop / Java en Eclipse Galileo.
Base de datos para IA contra Oracle portable / MySQL portable / propia.
Gestión HPC y paralelización basada en MPI / MPICH2 + CUDA / openCL.
No se descarta la creación de drivers o programas independientes que permitan el nexo entre hardware y/o software heterogéneos.
Software propio para:
   + La IA del robot.
   + La gestión de:
      * Servos + sensores de Bioloid.
      * Cámaras + micrófonos de los 2 HTC + altavoz de 1 HTC.
   + Recepción de sonidos y tratamiento STT (voz a texto) con Microsoft SAPI / Euler / eSpeak / Festival Lite (FLite) / GNUSpeech / ?? otros (mejor si multiplataforma) . NOTA IMPORTANTE:  Actualmente dispone de speeching basado en motor TTS de Google (API no oficial basada en peticiones HTTP).
   + Transmisión de texto a pronunciar (hacia HTC).
   + Tratamiento imágenes recibidas desde los 2 HTC con Intel OpenCV (interesante estudio de necesidad de HandVu) o incluso OpenVIDIA.
   + NOTA: Interesante añadirle la capacidad de control remoto del robot mediante Microsoft Kinect.
ESTADO: versión 0.20.2 (instalada en ordenador portátil con Windows XP SP3).


- eNarduin PPC Client - Windows Mobile 6.0 edition.
NOTA IMPORTANTE:  Actualmente estoy migrando y viendo qué tal la versión J2ME para hacerlo compatible con todo tipo de teléfonos móviles con Java. Esto simplifica mucho el código de cara a Streaming y Video pero minimiza los recursos a utilizar y requiere de firmado de midlets (para evitar molestos mensajes) Tras pruebas en este lenguaje, veo que las especificaciones que requiero no están tan ampliamente aceptadas (solo en móviles muy modernos) y no funciona en Android (aunque sí que existe un conversor llamado NetMite, algo limitado).
Software propio desarrollado C++ nativo con Windows Mobile SDK 6.0. / C# Compact FrameWork .NET.
Conectado a eNarduin Server para transmitirle sincronizadamente y mediante streaming vía Wifi (modo ad hoc)/gprs imágenes y sonidos, además de recibir instrucciones.
ESTADO: versión 0.161 (instalada en HTC Touch XL nº1). Características:
  + Captura de vídeo. LISTO (pendiente ver posible optimización > realizar en C++ nativo)
  + Captura de audio. PDTE.
  + Envío de vídeo sobre wifi(modo ad hoc)/gprs. LISTO (pendiente estudiar si posible optimización -mejor gestión de recursos-)
  + Envío de audio. PDTE.
  + Envío de parámetros como XML sobre wifi(modo ad hoc)/gprs. LISTO (pendiente añadir más parámetros y pensar en cambiar XML por estructura fija)
  + Parametrización visual. LISTO (pendiente añadir más parámetros).
  + Parametrización vía wifi(modo ad hoc)/gprs + texto a pronunciar. PDTE.
  + Motor TTS. PDTE:
Por ahora he encontrado/conozco los siguientes:
- Microsoft Speech SDK (el único que he utilizado y es regular de "natural")
- Festival Lite (aún sin probar)
- Digital Future TTS SDK (aún sin probar, de pago, español "de las américas")

- No oficial Google TTS API (regular de "natural") Necesita acceso a internet y creo que no se puede cambiar la voz, por tanto podría ser excluyente. Para utilizarla lo mejor sería hacer un wrapper para tratar translate.google.com/translate_tts.
- Online AT&T TTS (regular de "natural") Necesita acceso a internet.

 
- eNarduin Bioloid Client. ESTADO: pendiente continuación desarrollo. Versión preliminar del código controlable vía ZigBee (solo da pitadas según datos numéricos de entrada).
...






Referencias:
FLite: http://www.viksoe.dk/code/flite.htm
          http://fife.speech.cs.cmu.edu/flite/doc/index.html
AT&T online:  http://www2.research.att.com/~ttsweb/tts/demo.php