La app Transit rastrea tu ubicación en el metro sin GPS
(blog.transitapp.com)- Incluso si GPS, red celular y Wi‑Fi se cortan dentro de un túnel, el viaje GO de Transit ahora puede seguir mostrando la ubicación estimada, cuántas estaciones faltan y el ETA
- La clave está en usar la señal de vibración del acelerómetro del teléfono para clasificar si el usuario está dentro de un tren en movimiento, y combinar eso con la última ubicación confirmada y el horario del tren
- El equipo de Transit reunió datos etiquetados manualmente de cientos de viajes y varias ciudades, y en el metro de New York City recorrió todas las líneas registrando vibraciones de trenes, escaleras mecánicas y elevadores
- El modelo final de predicción de ubicación, The Mixer, acierta la ubicación actual con un 90% de probabilidad y, en las pruebas iniciales, ayudó a detectar 1.5 millones de estaciones subterráneas en unos 400,000 viajes
- Los dos modelos se comprimen en archivos pequeños y se ejecutan en el teléfono, por lo que es posible hacer conteo de estaciones sin conexión, y los datos de vibración no se envían a los servidores de Transit
Por qué es difícil ubicarse bajo tierra
- Dentro de túneles de subway, metro o U-Bahn, el servicio celular, el Wi‑Fi y el GPS muchas veces no funcionan de forma estable
- Hasta ahora, para revisar en el subterráneo en qué estación ibas o el ETA, había que depender de letreros en el andén, anuncios por altavoz o pantallas digitales dentro del tren
- En vez de construir satélites GPS que atraviesen el suelo, Transit predice la ubicación del tren dentro del túnel usando los patrones de vibración del teléfono
Qué muestra GO trip
- El usuario solo tiene que iniciar un GO trip en Transit
- Se puede iniciar directamente desde la pantalla de detalles de la ruta
- También se puede iniciar desde un viaje planificado
- Aunque la app no conozca las coordenadas GPS, muestra lo siguiente
- La ubicación estimada en el mapa
- La cuenta regresiva de estaciones restantes
- El ETA actualizado
Paso 1: clasificar el movimiento dentro del tren
- Cuando entras a un túnel con mala señal GPS, primero hay que determinar si el usuario está en un tren en movimiento
- Stephen, del equipo de Transit, registró datos del acelerómetro con su teléfono mientras iba a la oficina de Montreal y etiquetó cada tramo del viaje
- El momento en que empezó a caminar
- El momento en que bajó las escaleras
- El momento en que esperó en el andén
- El momento en que el tren arrancó y se detuvo
- Los datos de aceleración se organizaron con un método inspirado en la transformada de Fourier y se convirtieron en datos de frecuencia
- En un tren en movimiento, el teléfono vibraba alrededor de 5Hz, mientras que al caminar aparecía alrededor de 2Hz
- Como había ruido aleatorio y frecuencias armónicas, los patrones simples no bastaban, así que hizo falta un modelo de machine learning para clasificar el tipo de movimiento y una gran cantidad de datos de entrenamiento
Paso 2: recopilar datos correctos
- El equipo de Transit etiquetó datos de cientos de viajes y decenas de ciudades para crear un modelo generalizado que pudiera detectar un “tren en movimiento” sin importar el tipo de tren o de vía
- Étienne y Elijah recopilaron datos de vibración en el metro de New York City, el sistema subterráneo más popular de la app
- Durante una semana, ambos recorrieron buses y trenes de la MTA con iPhone, Android y una MetroCard, etiquetando cada etapa del trayecto
- El objetivo era encontrar pistas para distinguir la vibración dentro del tren de otras vibraciones presentes en la estación
- Subieron y bajaron en escaleras mecánicas y elevadores, anotando incluso los momentos en que se detenían
- Recorrieron todas las líneas del metro de New York, desde el Bronx hasta Brighton Beach, incluyendo Manhattan Bridge, Williamsburg Bridge y el Canarsie Tunnel
Paso 3: entrenar el clasificador de movimiento
- A partir de los datos de sensores ya organizados y procesados, se entrenó el motion classifier para distinguir entre “tren en movimiento” y “no es un tren en movimiento”
- El modelo recibe datos de sensores sin etiquetar y estima si el teléfono está en un tren en movimiento, un tren detenido, caminando o en una escalera mecánica
- Transit compara esa estimación con el ground truth creado mediante anotaciones manuales y ajusta la lógica para lograr predicciones más precisas
- Después de esos ajustes, el modelo pudo distinguir si el usuario realmente estaba en un tren en movimiento o si simplemente era el teléfono el que estaba vibrando
Paso 4: The Mixer, el modelo de predicción de ubicación
- Una vez que se sabe si hay movimiento, el siguiente paso es predecir exactamente dónde está el tren del usuario
- El modelo final, The Mixer, calcula la ubicación actual ponderando los siguientes elementos
- La predicción del tipo de movimiento, es decir, si el usuario está en un tren en movimiento
- La última ubicación confirmada del usuario
- Si esa última ubicación confirmada es reciente o antigua
- El horario del tren
- The Mixer acierta la predicción de la ubicación actual con una probabilidad del 90%
- En un ejemplo de viaje del RER de Paris, durante el tramo subterráneo entran actualizaciones intermitentes de ubicación mediante GPS y escaneos Bluetooth/Wi‑Fi, y esas actualizaciones corrigen la predicción de ubicación subterránea en los tramos sin conectividad
- Cuando el usuario vuelve a la superficie y entra en una zona con servicio celular, la app vuelve a usar la ubicación GPS estándar
Funcionamiento offline y privacidad
- Una vez que puede predecir la ubicación, la app también puede actualizar el ETA incluso bajo tierra
- Ya no hace falta depender de un GPS inestable ni de revisar las pantallas dentro del tren para contar estaciones
- El conteo de estaciones funciona completamente sin conexión
- El motion classifier y The Mixer se comprimen en archivos pequeños y se ejecutan en el teléfono
- Los datos de vibración no se envían a los servidores de Transit
- Sin rastreo
- Sin cookies
- Los datos de vibración se quedan en el dispositivo del usuario
Cómo usarlo y escala de las pruebas iniciales
- El usuario puede buscar el metro, abrir Transit e iniciar su viaje con GO para ver cómo las estaciones van bajando una por una
- Durante las pruebas iniciales, Transit ayudó a detectar unas 1.5 millones de estaciones subterráneas en aproximadamente 400,000 viajes
- La navegación paso a paso de GO ya era usada por millones de personas en superficie en más de 600 ciudades
- Desde el lanzamiento el mes pasado de GO Bike, los ciclistas también usan GO
- Con esta función, quienes viajan en tren subterráneo pueden confiar más en GO incluso en tramos con mala conectividad
- La app está disponible en la página de descarga de Transit
1 comentarios
Opiniones en Hacker News
Hace unos 10 años leí una publicación del blog de la empresa francesa snips, donde la app detectaba con el sensor de presión el momento en que el tren entraba o salía de una estación.
Decía que cuando el tren entra o sale del túnel entre estaciones se produce un aumento/disminución brusco de la presión atmosférica, generando una señal bastante clara.
Lo encontré: https://medium.com/snips-ai/underground-location-tracking-3e...
Esos tubos pueden detectar picos de presión para saber si la puerta está por atrapar la mano de alguien, y también se usan para reducir el efecto de “golpe” causado por la diferencia de presión al entrar a un túnel.
No todos los teléfonos tienen sensor de presión, y la calidad de medición varía mucho según el modelo. Por ejemplo, en algunos dispositivos el valor saltaba con solo agarrar el teléfono como si lo estuvieras apretando.
Transit tampoco tiene permiso para leer el sensor de presión, y para nuestro uso era difícil justificar pedir ese permiso.
Pero parece que la precisión variaba según si la corriente de la red eléctrica era continua o alterna, e incluso según la antigüedad del vagón.
Como el edificio estaba terminado pero no operaba, durante casi 10 años la compañía ferroviaria regional tuvo que hacer circular trenes hacia dentro y fuera del edificio.
Realmente genial.
Ahora mismo estoy haciendo un proyecto de grabación de sonido del London Underground pasando por debajo de mí.
La Northern Line que pasa bajo nosotros se oye con muchísima claridad, y está a menos de 30 m de profundidad.
Me obsesioné con capturar el sonido de los trenes pasando mediante grabaciones de baja frecuencia de alta calidad. No sé por qué, pero no se me va de la cabeza.
Por ejemplo, hay dos túneles, uno hacia el norte y otro hacia el sur, y me pregunto si podría distinguir las firmas sonoras de cada uno correlacionándolas con datos reales de TfL.
Más interesante aún sería si puedo “capturar” los vehículos de mantenimiento que circulan bajo nosotros después del cierre del servicio.
No sé qué más podría hacer con este proyecto, pero me tiene atrapada la idea de captar el sonido de esa presencia casi efímera, como un ser vivo, moviéndose debajo de mí.
A mí me interesan las vibraciones de alta frecuencia extremadamente débiles que emiten objetos cotidianos en reposo, aunque creo que mi objetivo es casi lo contrario. Todavía no he avanzado mucho en conseguir sensores.
Quisiera tener un vibrómetro láser Doppler, pero son caros.
Voy a ver si encuentro quién era.
[0] https://lamont.columbia.edu/
No sé si era sonido residual de una salida de emergencia en la vereda, o si la tierra resonaba como una campana.
También quiero reconocer brevemente lo mucho que me gustó el tono conversacional del artículo.
Incluso cuando entraba en explicaciones bastante detalladas, como gráficos de frecuencia, seguía siendo entretenido de leer. Leí la versión en inglés.
Quien lo escribió lo hizo realmente muy bien.
Transit App es una joya de app.
Qué entrañable eso de “clasificador”. Me impresiona que en todo el artículo no hayan mencionado ni una sola vez la palabra IA.
Algunas ciudades instalan beacons BLE en los túneles para transmitir la ubicación, y determinan la posición actual por la señal del beacon más fuerte.
Me gusta este enfoque porque lo averigua sin instalar hardware.
Aunque, para ser justos, esas pantallas se equivocan con una frecuencia ridícula y rotan mensajes inútiles como “no olvide sus pertenencias”, así que hay que esperar unos 20 segundos para ver la información que uno quiere. Dentro del tren eso es fatalmente malo.
Creo que el progreso entre estaciones podría rastrearse mejor detectando la firma de aceleración de cada tramo de vía.
Especialmente si la vía no es completamente recta y plana; se parece a los primeros sistemas de navegación vehicular anteriores al GPS. En ese entonces usaban navegación por estima y corregían la deriva comparando la forma del recorrido medido con los datos del mapa.
Un método más confiable podría ser usar el acelerómetro para identificar características de la vía: pendientes, giros, irregularidades, o combinaciones de ellas.
También se podrían usar el sonido en las curvas, cambios de ambiente en zonas donde se unen túneles, etc. La aceleración integrada da la velocidad del tren, así que puede ser útil junto con otras entradas.
Recolectar firmas sería genial, pero para cubrir muchas ciudades y teléfonos sería un trabajo enorme. Empresas como Google o Apple quizá tengan los datos y la capacidad, pero para una empresa pequeña es poco probable.
Hay un zumbido muy característico que se acopla con las RPM de las ruedas. Hace tiempo hice un velocímetro rudimentario con SFT, detección de picos y filtrado de Kalman.
Como usuario de Transit, gracias por crear una app tan genial; esto siempre fue una de las mayores molestias.
No solo en Transit, sino en cualquier app que admita navegación en transporte público; Apple Maps no es la excepción.
Imaginaba que alguien estaría trabajando en esto, pero leer el nivel de reflexión y detalle que entró en el diseño fue realmente refrescante. Fue un esfuerzo enorme.
El equipo de Transit puede sentirse orgulloso de haber resuelto una de las pequeñas grandes quejas de las apps de transporte público.
Realmente genial. Como tomo BART con frecuencia, siempre pensé que sería divertido crear un clasificador de ubicación basado en los distintos chirridos de cada punto del túnel.
Pero usar datos del acelerómetro parece mucho más práctico.
Se podría grabar el ruido del tren en movimiento para determinar el desplazamiento, pero el usuario sospecharía que la app lo está escuchando.
Además del aprendizaje automático, ¿no mejoraría mucho si se hiciera navegación por estima con el acelerómetro y el giroscopio?
Dentro de un tren en movimiento, se podría restringir el desplazamiento a la ruta conocida del túnel y, cuando se detecte la salida del tren, restringir que el usuario está dentro del rectángulo de detención del tren.
¿O el hardware del smartphone es demasiado impreciso incluso con información adicional?
Solo con el giroscopio funciona muy bien en trayectos cortos, pero se vuelve casi inútil en curvas largas y suaves. Los giroscopios MEMS derivan bastante durante decenas de segundos.
Si se puede hacer fusión de sensores con el magnetómetro y el acelerómetro, el problema es menor, pero en trenes rápidos es difícil encontrar “abajo” por la aceleración/frenado y las fuerzas en las curvas. Tampoco sé qué tan bien funcionaría una brújula dentro de un túnel de metro.
Solo tengo experiencia usando apps de “horizonte artificial” en aviones, y ahí el acelerómetro era completamente inútil para encontrar “abajo”. Con una sola maniobra de varias G, el horizonte deja de tener idea del ángulo de cabeceo. Si el entorno magnético es ruidoso y el GPS también está apagado, tampoco sabe hacia dónde va.
Solo que la navegación por estima suele ser muy imprecisa, así que si se reconoce que estás en un tren, se puede saber con precisión dónde está el tren y mejorar mucho la exactitud.
Cada vez que el tren se detiene, si el usuario está lo suficientemente quieto de pie o sentado, se podría calibrar el sesgo de la IMU, pero aun así la navegación por estima probablemente derivaría mucho.
Bastaría con estimar la velocidad actual frente al historial y predecir la hora de llegada. Así que conviene enfocarse en la velocidad más que en la aceleración.
La semana pasada probé esta función en el New York subway. No sabía que era una función nueva.
La idea es genial, pero a mí no me funcionó: la app mostraba que el tren estaba varias estaciones detrás de su ubicación real.