Ir al contenido

Simulador: RHINO en el museo

Las prácticas de esta semana son demostrativas: se ejecutan en Webots para ver los algoritmos de la clase funcionando en un robot de verdad, en el lugar donde se hicieron famosos. El robot es RHINO, el guía del Deutsches Museum Bonn (1997), y el museo se reconstruyó a partir de la planta que publicaron sus autores.

RHINO en el museo reconstruido

  1. Webots R2025a.

  2. Python 3 con numpy y scipy. Si hizo las prácticas de la semana 13, ya los tiene:

    Ventana de terminal
    pip install numpy scipy

    Webots usa el comando python del sistema: debe ser el mismo Python donde instaló estas librerías (Tools → Preferences → Python command).

  3. El proyecto del simulador: rhino-webots.zip. Descomprímalo en cualquier carpeta.

La Fig. 4 de Burgard et al. (1998) muestra la creencia de RHINO sobre un mapa del museo: los obstáculos en negro y la probabilidad de cada celda en gris. Las celdas grises son la grilla de Markov del robot, de 15 cm de lado. Con esa escala se midió todo el mapa: la sala mide 21.3 × 19.9 m.

Fig. 4 del artículoMapa del simulador (líneas cada 5 m)
Fig. 4 de Burgard et al. 1998: obstáculos en negro y creencia en grisMapa del museo extraído de la Fig. 4

Cada obstáculo de la figura se volvió un objeto de formas básicas, con texturas tomadas de las fotos del museo:

En la figuraEn el simulador
Muros gruesosParedes blancas de 3 m
Círculos de 70 cmColumnas blancas
Círculos grandesEsculturas de cobre sobre una base de madera
Círculos pequeñosPostes de información de acero
Rectángulos de 30 × 62 cmAtriles de acero
Bloques grandesMáquinas con tableros de instrumentos
El restoVitrinas: pedestal de madera con vidrio encima

Todo lo que ve el Lidar coincide con el mapa del artículo.

El RHINO original era un RWI B21: un cilindro de 52 cm de diámetro con dos láseres, 24 sonares y cámaras. El del simulador es una versión simplificada:

  • Tracción diferencial, con ruedas de 8 cm de radio separadas 40 cm. Como en la semana 12, las ruedas reales son un poco distintas a lo que cree el programa, y la odometría se desvía.
  • Un Lidar de 360° con 720 rayos (uno cada 0.5°) y alcance de 10 m, en la ventana del anillo rojo.
  • Una pantalla (Display) donde cada controlador dibuja el mapa, la creencia y las poses. Aparece en una esquina de la vista 3D: arrástrela o cámbiele el tamaño con el mouse.

Lo mismo que muestra la pantalla se puede ver más grande en el navegador: haga doble clic sobre RHINO en la vista 3D (o clic derecho → Show Robot Window). Se abre una página con:

  • el mapa del museo y lo que calcula el programa (creencia, partículas, elipses, caminos), dibujados en vectores: se ven nítidos a cualquier tamaño;
  • las líneas de texto del programa (tiempo, errores, incertidumbre);
  • botones que hacen lo mismo que las teclas, así que no hace falta hacer clic en la vista 3D: Recorrido automático (T), Detener (Espacio), y según el mundo Secuestrar (S) o Marcas sí / no (M). Con la página activa, también funcionan esas teclas;
  • las coordenadas (x,y)(x, y) en metros del punto bajo el mouse.

La página necesita internet la primera vez (carga una librería de Webots) y se actualiza unas 5 veces por segundo mientras la simulación corre.

Abra cada mundo con File → Open World y ejecútelo con ▶:

MundoPrácticaQué hace
worlds/museo.wbt—Manejar a RHINO y ver lo que mide el Lidar
worlds/markov.wbt1. MarkovLocalización de Markov en una grilla, como RHINO
worlds/particulas.wbt1. MarkovLocalización con partículas
worlds/kalman.wbt2. KalmanFiltro de Kalman extendido con columnas y postes
worlds/slam.wbt3. SLAMRHINO arma el mapa mientras se localiza

En todos los mundos RHINO arranca en recorrido automático: da vueltas de 32 m alrededor de la exhibición central. Las teclas funcionan después de hacer clic en la vista 3D:

TeclaAcción
TEncender o apagar el recorrido automático
FlechasManejar a RHINO (apagan el recorrido automático)
EspacioDetener

El recorrido automático usa la pose real de RHINO para manejar, como si un guía lo llevara de la mano. Así cada algoritmo se puede ver trabajar aunque se equivoque. Los algoritmos solo usan los encoders y el Lidar.

Los programas de RHINO están en controllers/ (uno por mundo), y las funciones comunes (motores, odometría, Lidar, mapa y dibujo) en python/rhino.py. Los parámetros de cada algoritmo están al inicio de su controlador: cámbielos, guarde y reinicie la simulación con Ctrl+Shift+T.

En el museo real, la gente tapaba los láseres de RHINO. Webots trae un PROTO de persona (Pedestrian) que camina por una trayectoria. Al final de cada mundo hay un ejemplo comentado para agregar personas: el Lidar las ve como obstáculos que no están en el mapa.

  • ModuleNotFoundError: No module named 'scipy': Webots está usando otro Python. Revise Tools → Preferences → Python command.
  • No veo la pantalla con el mapa: en el menú Overlays → Display Devices, active la pantalla mapa de RHINO, o abra la ventana del robot.
  • La ventana del robot dice “Esperando la simulación…”: la simulación está en pausa o el programa se detuvo. Ejecútela con ▶ y revise la consola de Webots.
  • La simulación va lenta: es normal en la práctica de Markov (actualiza más de un millón de estados en cada paso). Reduzca el tamaño de la ventana 3D o desactive las sombras en Tools → Preferences → OpenGL.