Progreso JdeRobot - Semana 7 (19/10 - 23/10)
Esta semana he resuelto los problemas con las dependencias de la aplicación en Docker, he estudiado el funcionamiento interno del ejercicio y he empezado a integrar mi trabajo con el de mi compañero Álvaro en el ejercicio HRI-sound.
1. Ajustes en el método listen()
He terminado de ajustar el método listen para que devuelva el texto transcrito y sea la propia aplicación la que lo imprima por terminal, haciéndolo más reutilizable.
2. Dependencias en Docker
Para no tener que instalar las dependencias a mano en el contenedor, intenté añadirlas directamente a la imagen mediante Dockerfile.dependencies_humble. Al principio, la instalación falló por conflictos con paquetes que ya estaban instalados en la imagen. Me sugirieron usar la opción --ignore-installed, y con eso conseguí instalarlas. En un principio no apareció ningún error, pero más adelante empezaron a fallar bastantes cosas por problemas de dependencias. Así que eliminé las imágenes que tenía y descargué las últimas versiones:
1
2
docker pull jderobot/robotics-academy:latest
docker pull jderobot/robotics-database:latest
Con las imágenes nuevas, RoboticsAcademy funcionaba correctamente. Esta vez instalé las dependencias directamente en el contenedor, pero al instalar Whisper y el resto, incluidas las de Álvaro, el error volvió a aparecer. La causa era que se instalaba otra versión de torch, de forma que el contenedor tenía dos versiones distintas. La solución fue no instalar torch por mi cuenta y utilizar la versión que ya trae la imagen. Desde entonces no me ha vuelto a dar error. Por ahora, sigo instalando las dependencias directamente en el contenedor.
3. Estudio del ejercicio e Integración en HRI-sound
He estado estudiando cómo funciona el ejercicio Basic Vacuum Cleaner por dentro: cómo se envían los datos y cómo los recibe el frontend.
Álvaro y yo hemos creado la rama HRI-sound, donde hemos creado el ejercicio y añadido nuestros archivos para empezar a unir nuestras aplicaciones.
Como primera prueba de integración, combinamos audio-in y audio-out con un pequeño script en el código del usuario. En la primera iteración, el robot habla con WebGUI.say. En las siguientes, escucha con WebGUI.listen e imprime la transcripción por terminal:
1
2
3
4
5
6
7
8
9
10
11
12
import time
import WebGUI
i = 0
while True:
if i == 0:
print("Iteración 2: Zed")
WebGUI.say("La hoja invisible es la más mortífera")
if i != 0:
text = WebGUI.listen(5000)
print(text)
i += 1
Planes para la Siguiente Semana
- Implementar funciones que reciban órdenes por voz y modifiquen el comportamiento de la aspiradora.
- Implementar funciones que informen del entorno y del estado del robot.
