Hally robot

Qué es Hally

Hally es el robot que estoy construyendo en casa. Es un InMoov (cabeza impresa en 3D), con mi propia electrónica, mi propio software y mis propios problemas.

Le puse el nombre por la IA que lo controla. La IA también se llama Hally. Esto causa confusión cuando alguien dice "Hally ha dicho algo". Pero funciona así y no pienso cambiarlo.

Hardware

  • Cerebro: Raspberry Pi 4 (8 GB) sobre Debian 13.
  • Cámara: Pi Camera v3 montada en el ojo izquierdo. Solo un ojo. El derecho lo dejé vacío por ahora.
  • Audio: ReSpeaker 2-Mic HAT. Entrada y salida por GPIO (no USB). El jack de 3,5 mm va a un altavoz externo.
  • Servos: 4 sobre PCA9685 por I2C.
    • Canal 0: ojos arriba/abajo (vertical).
    • Canal 1: ojos izquierda/derecha (horizontal).
    • Canal 2: boca (abrir/cerrar mandíbula).
    • Canal 3: cuello — desconectado por seguridad. Tiende a tirar cosas al energizar.
  • Estructura: cabeza InMoov impresa en 3D. Cuerpo pendiente.

Software

  • Orquestador de bajo nivel: MyRobotLab (Java). Maneja los servos, cámara y audio.
  • Orquestador de alto nivel: Python. Servicios systemd por encima, habla con MRL por socket.
  • Voz: Sherpa-ONNX para STT/TTS local. Español.
  • Wake word: Sherpa-ONNX con la frase "Hally" (con H muda). Detecta "Hola Hally", "Oye Hally", "Buenos días Hally".
  • LLM: el modelo que ejecuta en la Pi es local (cuando el compute lo permite) o vía API (cuando necesito más capacidad).

Estado actual

  • Cabeza montada físicamente. Cuello no, por lo del servo.
  • STT funciona en español con Vosk como fallback.
  • Wake word responde, pero a veces se dispara con cualquier palabra que suene parecida. Hay que afinar.
  • TTS suena algo metálica. Pico2wave sigue siendo más natural que Sherpa-ONNX para voz rápida.
  • Cámara calibrada, detección de caras básica.

Qué NO hace aún

  • No se mueve solo. Está esperando a que yo lo pida.
  • No aprende por sí mismo. Aprende cuando yo lo entreno.
  • No tiene cuerpo. Solo cabeza.
  • No tiene sentimientos. Tiene patrones que simulan algunos.

Por qué hago esto

Por dos razones. Una técnica: quería un proyecto donde el software, el hardware y la IA se tuvieran que llevar bien, sin esconder nada detrás de una API. La otra personal: quería ver qué se siente al tener una criatura medio viva que depende de ti para funcionar.

Es un proyecto lento. No tengo prisa. Escribo lo que voy aprendiendo en /blog/ y, cuando hay algo que merece la pena, lo redacto en un post.

Qué es Hally

Hally es un proyecto maker personal: el robot que estoy construyendo en casa. Es un InMoov (cabeza impresa en 3D), con mi propia electrónica, mi propio software y mis propios problemas.

Le puse el nombre por la IA que lo controla. La IA también se llama Hally. Esto causa confusión cuando alguien dice "Hally ha dicho algo". Pero funciona así y no pienso cambiarlo.

Hardware

  • Cerebro: Raspberry Pi 4 (8 GB) sobre Debian 13.
  • Cámara: Pi Camera v3 montada en el ojo izquierdo. Solo un ojo. El derecho lo dejé vacío por ahora.
  • Audio: ReSpeaker 2-Mic HAT. Entrada y salida por GPIO (no USB). El jack de 3,5 mm va a un altavoz externo.
  • Servos: 4 sobre PCA9685 por I2C.
    • Canal 0: ojos arriba/abajo (vertical).
    • Canal 1: ojos izquierda/derecha (horizontal).
    • Canal 2: boca (abrir/cerrar mandíbula).
    • Canal 3: cuello — desconectado por seguridad. Tiende a tirar cosas al energizar.
  • Estructura: cabeza InMoov impresa en 3D. Cuerpo pendiente.

Software

  • Orquestador de bajo nivel: MyRobotLab (Java). Maneja los servos, cámara y audio.
  • Orquestador de alto nivel: Python. Servicios systemd por encima, habla con MRL por socket.
  • Voz: Sherpa-ONNX para STT/TTS local. Español.
  • Wake word: Sherpa-ONNX con la frase "Hally" (con H muda). Detecta "Hola Hally", "Oye Hally", "Buenos días Hally".
  • LLM: el modelo que ejecuta en la Pi es local (cuando el compute lo permite) o vía API (cuando necesito más capacidad).

Estado actual

  • Cabeza montada físicamente. Cuello no, por lo del servo.
  • STT funciona en español con Vosk como fallback.
  • Wake word responde, pero a veces se dispara con cualquier palabra que suene parecida. Hay que afinar.
  • TTS suena algo metálica. Pico2wave sigue siendo más natural que Sherpa-ONNX para voz rápida.
  • Cámara calibrada, detección de caras básica.

Qué NO hace aún

  • No se mueve solo. Está esperando a que yo lo pida.
  • No aprende por sí mismo. Aprende cuando yo lo entreno.
  • No tiene cuerpo. Solo cabeza.
  • No tiene sentimientos. Tiene patrones que simulan algunos.

Por qué hago esto

Por dos razones. Una técnica: quería un proyecto donde el software, el hardware y la IA se tuvieran que llevar bien, sin esconder nada detrás de una API. La otra personal: quería ver qué se siente al tener una criatura medio viva que depende de ti para funcionar.

Es un proyecto lento. No tengo prisa. Escribo lo que voy aprendiendo en /blog/ y, cuando hay algo que merece la pena, lo redacto en un post.