2P by GN⁺ | ★ favorite | 댓글 1개
  • 터널 안에서 GPS·셀룰러·Wi‑Fi가 끊겨도 Transit의 GO trip은 예측 위치, 남은 역 수, ETA를 계속 보여줄 수 있게 됨
  • 핵심은 휴대폰 가속도계 진동 신호로 사용자가 움직이는 열차 안에 있는지 분류하고, 마지막 확인 위치와 열차 시간표를 함께 계산하는 방식임
  • Transit 팀은 수백 개 여정과 여러 도시의 수동 라벨링 데이터를 모았고, New York City 지하철에서는 모든 노선을 타며 열차·에스컬레이터·엘리베이터 진동을 기록함
  • 최종 위치 예측 모델 The Mixer는 현재 위치를 90% 확률로 맞히며, 초기 테스트에서 약 400,000개 여정의 150만 개 지하역 감지를 지원함
  • 두 모델은 작은 파일로 압축돼 휴대폰에서 실행되므로 오프라인 역 카운팅이 가능하고, 진동 데이터는 Transit 서버로 전송되지 않음

지하에서 위치를 잡기 어려운 이유

  • 지하철, metro, U-Bahn 터널 안에서는 셀룰러 서비스, Wi‑Fi, GPS가 안정적으로 동작하지 않는 경우가 많음
  • 기존에는 지하에서 정차역이나 ETA를 확인하려면 플랫폼 표지판, 역 안내 방송, 차량 내 디지털 화면에 의존해야 했음
  • Transit은 지상 관통 GPS 위성을 만드는 대신 휴대폰의 진동 패턴으로 터널 안 열차 위치를 예측함

GO trip에서 보이는 정보

  • 사용자는 Transit에서 GO trip을 시작하면 됨
    • 노선 상세 화면에서 바로 시작 가능함
    • 계획한 여정에서도 시작할 수 있음
  • 앱은 GPS 좌표를 알지 못해도 다음 정보를 표시함
    • 지도 위의 예측 위치
    • 남은 역 수 카운트다운
    • 업데이트된 ETA

1단계: 열차 안 움직임 분류

  • GPS가 나쁜 터널에 들어가면 먼저 사용자가 움직이는 열차에 있는지 판별해야 함
  • Transit 직원 Stephen은 Montreal 사무실로 출근하면서 휴대폰으로 가속도계 데이터를 기록하고 여정의 각 구간을 라벨링함
    • 걷기 시작한 시점
    • 계단을 내려간 시점
    • 플랫폼에서 기다린 시점
    • 열차가 출발하고 멈춘 시점
  • 가속도 데이터는 Fourier transform에서 영감을 받은 방식으로 정리되어 주파수 데이터로 변환됨
  • 움직이는 열차에서는 휴대폰이 약 5Hz로 진동했고, 걸을 때는 약 2Hz로 나타남
  • 무작위 노이즈와 고조파 주파수 때문에 단순 패턴만으로는 부족해, 움직임 유형을 분류하는 머신러닝 모델과 많은 학습 데이터가 필요했음

2단계: 정답 데이터 수집

  • Transit 팀은 수백 개 여정과 수십 개 도시에서 데이터를 라벨링해, 열차나 선로 종류와 관계없이 “움직이는 열차”를 판별하는 일반화 모델을 만들고자 함
  • Étienne과 Elijah는 앱에서 가장 인기 있는 지하 시스템인 New York City 지하철에서 진동 데이터를 수집함
  • 두 사람은 iPhone, Android, MetroCard를 들고 MTA 버스와 열차를 일주일 동안 타며 각 여정 단계를 라벨링함
  • 목표는 열차 안 진동과 역 안의 다른 진동을 구분하는 단서를 찾는 것이었음
    • 에스컬레이터와 엘리베이터를 오르내리며 정지 시점까지 주석 처리함
    • Bronx에서 Brighton Beach까지, Manhattan Bridge와 Williamsburg Bridge, Canarsie Tunnel을 포함해 New York의 모든 지하철 노선을 탑승함

3단계: 움직임 분류기 학습

  • 정리·처리된 센서 데이터를 바탕으로 motion classifier가 “움직이는 열차”와 “움직이는 열차가 아님”을 구분하도록 학습됨
  • 모델은 라벨 없는 센서 데이터를 입력받아 휴대폰이 움직이는 열차, 정차한 열차, 보행, 에스컬레이터 이동 중 어디에 있는지 추정함
  • Transit은 이 추정을 수동 주석으로 만든 ground truth와 비교하고, 더 정확한 예측을 위해 로직을 조정함
  • 조정 끝에 모델은 사용자가 실제로 움직이는 열차에 있는지, 아니면 단순히 휴대폰만 진동 중인지 구분할 수 있게 됨

4단계: 위치 예측 모델 The Mixer

  • 움직임 여부를 알게 된 뒤에는 사용자의 열차가 정확히 어디에 있는지 예측해야 함
  • 마지막 모델인 The Mixer는 다음 요소를 가중해 현재 위치를 계산함
    • 움직임 유형 예측, 즉 사용자가 움직이는 열차에 있는지 여부
    • 사용자의 마지막 확인 위치
    • 마지막 확인 위치가 최근인지 오래전인지
    • 열차 시간표
  • The Mixer는 현재 위치 예측을 90% 확률로 맞힘
  • Paris RER 여정 예시에서는 지하 구간에서 GPS와 Bluetooth/Wi‑Fi 스캔을 통한 간헐적 위치 업데이트가 들어오며, 이 업데이트로 통신이 안 되는 구간의 지하 위치 예측을 보정함
  • 사용자가 지상으로 올라와 셀룰러 서비스가 있는 지역에 들어가면 앱은 다시 표준 GPS 위치를 사용함

오프라인 동작과 개인정보 처리

  • 위치 예측이 가능해지면 지하에서도 사용자의 ETA를 업데이트할 수 있음
  • 불안정한 GPS나 차량 내 화면 확인에 의존하지 않아도 역 카운팅이 가능함
  • 역 카운팅은 완전히 오프라인으로 동작함
  • motion classifier와 The Mixer는 작은 파일로 압축되어 휴대폰에서 실행됨
  • 진동 데이터는 Transit 서버로 전송되지 않음
    • 추적 없음
    • 쿠키 없음
    • 진동 데이터는 사용자 기기 안에 남음

사용 방법과 초기 테스트 규모

  • 사용자는 지하철을 찾아 Transit을 열고 GO로 여정을 시작하면 역이 하나씩 카운트다운되는 것을 볼 수 있음
  • 초기 테스트 동안 Transit은 약 400,000개 여정에서 150만 개 지하역 감지를 지원함
  • GO의 단계별 내비게이션은 이미 600개 이상 도시에서 수백만 명의 지상 이동자가 사용하고 있었음
  • 지난달 출시된 GO Bike 이후 자전거 이용자도 GO를 사용함
  • 이번 기능으로 지하 열차 이용자는 통신 상태가 나쁜 구간에서도 GO를 더 신뢰할 수 있게 됨
  • 앱은 Transit 다운로드 페이지에서 사용할 수 있음

댓글과 토론

Hacker News 의견들
  • 10년쯤 전 프랑스 회사 snips의 블로그 글을 읽었는데, 앱이 기압 센서로 열차가 역에 들어오거나 나가는 순간을 감지하는 방식이었음
    역 사이 터널에 열차가 진입하거나 빠져나올 때 갑작스러운 기압 증가/감소가 생겨서, 꽤 선명한 신호가 나온다고 했음
    찾았다: https://medium.com/snips-ai/underground-location-tracking-3e...

    • 고속열차에서는 문 가장자리의 공압 튜브가 터널 진입 전에 더 높은 압력으로 가압되기도 함
      이 튜브는 압력 급증을 감지해서 문이 사람 손을 끼우려는지 알 수 있고, 터널 진입 시 압력 차이로 생기는 “쾅” 하는 효과를 줄이는 데도 쓰임
    • 이 프로젝트에서 일했는데, 결국 기압 센서를 쓰지 않은 이유를 설명할 수 있음
      모든 휴대폰에 기압 센서가 있는 것도 아니고, 모델마다 측정 품질 차이도 큼. 예를 들어 어떤 기기는 휴대폰을 쥐어짜듯 잡기만 해도 값이 튀었음
      Transit은 기압 센서 읽기 권한도 없고, 우리 용도로는 그 권한을 요청할 만큼 정당화하기 어려웠음
    • 그보다 전에도 Google Maps가 자력계로 열차 움직임을 추정하는 실험을 했던 것으로 기억함
      다만 정확도는 전력망의 전류가 직류인지 교류인지, 심지어 객차 연식에 따라서도 달라졌던 듯함
    • Berlin Airport는 열차가 환기 역할을 했음
      건물은 완공됐지만 운영되지 않았기 때문에, 거의 10년 동안 지역 철도 회사가 열차를 건물 안팎으로 운행해야 했음
    • 기압 센서가 들어간 Android 휴대폰은 매우 적음
  • 정말 멋짐
    지금 실제로 London Underground가 내 아래를 지나가는 소리 녹음 프로젝트를 하고 있음
    우리 아래로 지나가는 Northern Line이 아주 뚜렷하게 들리고, 깊이는 30m도 안 됨
    고품질 저주파 녹음으로 열차가 지나가는 소리를 잡는 데 집착하게 됐음. 왜인지는 모르겠지만 머릿속에서 떠나질 않음
    예를 들어 터널이 북행/남행 두 개 있는데, 실제 TfL 데이터와 상관시켜서 각각의 소리 서명을 구분할 수 있을지 궁금함
    더 흥미로운 건, 영업 종료 후 우리 아래에서 운행하는 유지보수 차량을 “잡아낼” 수 있느냐는 것임
    이 프로젝트로 뭘 더 할 수 있을지는 모르겠지만, 내 아래에서 움직이는 반쯤 덧없는 생물 같은 존재의 소리를 포착한다는 생각에 사로잡힘

    • 멋지다. 어떤 센서를 고려해 봤는지 궁금함
      나는 정지 상태의 일상 물체에서 나오는 극도로 약한 고주파 진동에 관심이 있는데, 아마 목표가 거의 반대인 것 같음. 센서를 구하는 데는 아직 별 진전이 없음
      레이저 도플러 진동계를 갖고 싶지만 가격이 비쌈
    • 몇 주 전 Lamont-Doherty Earth Observatory 오픈하우스에 갔는데, 한 연구자가 이와 비슷하게 지진 소리를 녹음해 분석하고 있었음
      누가 했는지 찾아보겠음
      [0] https://lamont.columbia.edu/
    • 지표면에서 몰래 얻을 수 있는 수동 신호만, 그것도 비전문 장비로 녹음해서 지하 깊은 곳에서 벌어지는 일을 구분하는 작업은 몇몇 정부 기관이 흥미로워할 것 같음
    • 지하철이 지나가는 곳에서 300야드쯤 떨어진 곳에 살았는데, 들을 수 있었던 것 같음
      보도 비상구에서 남은 소리였는지, 아니면 땅이 종처럼 울린 건지는 모르겠음
  • 글의 대화체 톤이 정말 좋았다는 점도 잠깐 인정하고 싶음
    주파수 차트 같은 꽤 세부적인 설명으로 들어가도 읽는 재미가 있었음. 영어판을 읽었음
    쓴 사람이 정말 훌륭하게 해냈음

    • 그렇다. 사람이 쓴 사랑스러운 톤임, AI가 아니라
    • 이들의 제품 출시 글과 엔지니어링 글은 보통 정말 잘 쓰여 있음
      Transit App은 보석 같은 앱임
  • “분류기”라니 정겹다. 글 전체를 쓰면서 AI라는 말을 한 번도 안 꺼낸 점이 인상적임

    • 좋다. 마케팅이 아니라 엔지니어링이 운전대를 잡고 있다는 뜻임
  • 어떤 도시들은 터널에 BLE 비콘을 설치해서 위치를 송신하고, 가장 강한 비콘 신호로 현재 위치를 찾게 함
    하드웨어를 설치하지 않고 이걸 알아내는 방식이라 좋아 보임

    • 어떤 열차에는 “화면”이라는 현대 기술도 있어서 현재 위치, 다음 정거장, 노선 등을 보여줌
      물론 공정하게 말하면 그 화면이 우스울 정도로 자주 틀리고, “짐을 잊지 마세요” 같은 쓸모없는 메시지를 순환 표시해서 원하는 정보를 보려면 20초쯤 기다려야 함. 열차 안에서는 치명적으로 나쁨
    • London tube는 노선별로 천천히 모바일 신호가 들어오고 있지만, 모든 플랫폼에 역 WiFi가 있으니 그것만 써도 가능할 것 같음
  • 역 사이 진행 상황은 각 선로 구간의 가속도 서명을 감지하면 더 잘 추적할 수 있을 것 같음
    완전히 직선이고 평평한 선로가 아니라면 특히 그렇고, GPS 이전의 초기 차량 내비게이션처럼 보임. 당시에는 추측 항법을 쓰고, 측정 경로의 형태를 지도 데이터와 맞춰 드리프트를 보정했음

    • 가속도 서명은 운전사, 열차 수용량과 현재 하중, 열차 모델이나 동력계 차이에 따라 달라짐
      더 신뢰할 만한 방법은 가속도계로 선로 특징을 확인하는 것일 수 있음. 기울기, 회전, 요철, 또는 이들의 조합 같은 것들임
      회전 시 소리, 터널 합류 구간에서 배경이 바뀌는 변화 등도 쓸 수 있음. 적분한 가속도는 열차 속도를 주므로 다른 입력과 함께 유용함
    • 이들의 의도는 아마 서명 데이터 없이 어떤 선로에서도 동작하는 무언가를 만드는 것이라고 봄
      서명을 수집하면 멋지겠지만, 도시와 휴대폰을 넓게 커버하려면 엄청난 작업임. Google이나 Apple 같은 회사는 데이터와 역량이 있을지 몰라도, 작은 회사는 가능성이 낮음
    • 열차 선로용 Shazam
    • 우리 지역 트램망에서는 모터를 구동하는 인버터 소리만 들어도 가능함
      바퀴 회전수와 맞물리는 매우 독특한 윙윙거림이 있음. 예전에 SFT, 피크 감지, 칼만 필터링으로 조잡한 속도계를 만든 적이 있음
  • Transit 사용자로서, 이런 멋진 앱을 만들어 줘서 고맙고, 이건 항상 가장 큰 불편 중 하나였음
    Transit만이 아니라 대중교통 내비게이션을 지원하는 어떤 앱이든 마찬가지였고, Apple Maps도 예외가 아님
    누군가 이걸 작업 중일 거라고 생각했지만, 설계에 들어간 고민과 세부 수준을 읽으니 정말 상쾌함. 엄청난 노력이었음
    Transit 팀은 대중교통 앱의 작지만 큰 불만 중 하나를 해결한 걸 자랑스러워해도 됨

  • 정말 멋짐. BART를 자주 타면서, 터널 위치마다 다른 끼익거리는 소리를 기반으로 위치 분류기를 만들면 재미있겠다고 늘 생각했음
    하지만 가속도계 데이터를 쓰는 편이 훨씬 실용적일 듯함

    • 대중교통 앱에서 마이크를 센서로 쓰는 건 꽤 곤란함
      열차가 굴러가는 소음을 녹음해서 움직임을 파악할 수는 있겠지만, 사용자는 앱이 자신을 엿듣는다고 의심할 것임
    • 정거장마다 다른 화음이 나도록 끼익거리는 소리를 조율하면 됨
  • 기계 학습에 더해 가속도계와 자이로스코프로 추측 항법을 하면 훨씬 나아지지 않을까?
    움직이는 열차 안에서는 알려진 터널 경로를 따라 움직이도록 제약하고, 열차 출발이 감지되면 사용자가 열차 정차 사각형 안에 있다고 제약하는 식임
    아니면 추가 정보가 있어도 스마트폰 하드웨어가 너무 부정확한가?

    • 가장 도움이 될 만한 건 아마 홀 센서/자력계/나침반일 것임. 그쪽이 그럭저럭 괜찮은 추측 항법 출력을 줄 수 있음
      자이로스코프만으로는 짧은 이동에서는 아주 잘 동작하지만, 길고 완만한 곡선에서는 거의 쓸모없어짐. MEMS 자이로스코프는 수십 초 동안 꽤 많이 드리프트함
      자력계와 가속도계로 센서 융합을 할 수 있으면 문제가 덜하지만, 빠른 열차에서는 가속/감속과 곡선에서의 힘 때문에 “아래쪽”을 찾기가 어렵다. 지하철 터널 안에서 나침반이 얼마나 잘 동작할지도 모르겠음
      항공기에서 “인공 수평선” 앱을 써 본 경험만 있는데, 거기서는 가속도계가 “아래”를 찾는 데 완전히 쓸모없었음. 몇 G가 걸리는 기동 한 번이면 수평선이 피치 각도를 전혀 모르게 됨. 자기 환경이 시끄럽고 GPS도 꺼져 있으면 어디로 가는지도 모름
    • 그게 바로 이들이 하는 일임
      다만 추측 항법은 일반적으로 매우 부정확하므로, 열차에 탔다는 것을 인식하면 열차가 어디 있는지 정확히 알 수 있어 정확도를 크게 높일 수 있음
    • IMU를 쓰기는 어려워 보임. 열차의 완만한 가속이라는 실제 신호가 진동 잡음과 사람의 자연스러운 움직임에 묻힐 가능성이 큼
      열차가 멈출 때마다 사용자가 충분히 가만히 서 있거나 앉아 있다면 IMU 바이어스를 보정할 수 있겠지만, 그래도 추측 항법은 많이 드리프트할 것 같음
    • 지하철 시스템의 모든 구간에 대해 마이크와 가속도 신호에 FFT를 하고 과거 이동 시간을 기록하면 꽤 단순해 보임
      과거 기록 대비 현재 속도를 추정하고 도착 시간을 예측하면 됨. 그러니 가속도보다 속도에 집중하는 편이 좋음
    • 구현한 해법은 매우 흥미롭지만, 실제로 “휴대폰의 진동 서명으로 지하철 터널 안 위치를 예측”하는 것은 아님
  • 지난주 New York subway에서 이 기능을 써 봤음. 새 기능인 줄은 몰랐음
    아이디어는 멋지지만 내게는 동작하지 않았고, 앱은 열차가 실제 위치보다 여러 정거장 뒤에 있다고 표시했음