← GPS hoạt động thế nào?

Bài 6 · Vận dụng · 22 phút

Định vị lai: WiFi, Bluetooth, 4G

Biên soạn bởi Nguyễn Anh Tuấn

Vì sao trong nhà GPS yếu mà điện thoại vẫn biết chỗ: A-GPS, định vị bằng WiFi (BSSID) và trạm sóng di động (cell tower), beacon Bluetooth, và fused location.

Bài trước kết lại: GPS cần “thấy bầu trời”, nên vào trong nhà hay xuống hầm là gần như bó tay. Vậy mà mở bản đồ trong trung tâm thương mại, chấm xanh vẫn hiện - sai hơn ngoài trời chút, nhưng vẫn biết bạn ở tầng nào, gần cửa hàng nào.

Bí mật: điện thoại không chỉ dựa vào GPS. Nó còn vắt kiệt mọi tín hiệu quanh mình - WiFi, sóng di động, Bluetooth, cả cảm biến chuyển động - rồi gộp lại. Đó là định vị lai (hybrid positioning).

Bật GPS từ trạng thái “nguội”, máy phải dò xem có vệ tinh nào trên đầu rồi chờ nó phát chậm rãi dữ liệu quỹ đạo - có khi cả 30 giây tới vài phút. Thời gian từ lúc bật tới khi có vị trí đầu tiên gọi là TTFF (time to first fix).

A-GPS (GPS có hỗ trợ) rút ngắn việc đó: điện thoại tải sẵn dữ liệu quỹ đạo (ephemeris/almanac - đã gặp ở bài Chòm vệ tinh & tín hiệu) qua mạng 4G/5G, nên không phải chờ vệ tinh phát. Định vị từ vài chục giây xuống còn vài giây.

Trung thực

A-GPS chỉ tăng tốc việc bắt vệ tinh, không thay được vệ tinh. Trong nhà sâu vẫn cần các cách bên dưới.

Đây mới là cứu cánh trong nhà. Mỗi router WiFi liên tục phát ra một địa chỉ riêng (gọi là BSSID, chính là địa chỉ MAC). Điện thoại nghe thấy các router quanh mình - không cần kết nối hay mật khẩu - rồi tra một cơ sở dữ liệu khổng lồ “router này nằm ở đâu” để ước ra vị trí.

  • WiFi: nhận ra router theo địa chỉ BSSID, tra cơ sở dữ liệu vị trí - chạy tốt trong nhà.
  • Trạm sóng di động (cell tower): thô hơn, nhưng phủ rộng và gần như luôn có.
  • Không cần kết nối WiFi - chỉ cần “nghe” thấy là đủ.

Nhiều nơi (siêu thị, bảo tàng, sân bay) gắn các beacon Bluetooth (BLE) phát một mã định danh; điện thoại nghe được thì biết mình đang gần beacon nào. BLE ước khoảng cách theo độ mạnh tín hiệu nên khá thô.

Chính xác hơn nhiều là UWB (siêu băng rộng): nó đo thời gian bay của những xung cực ngắn - đúng tinh thần “khoảng cách từ thời gian” của bài Đo khoảng cách - nên đạt độ chính xác cỡ chục centimet (AirTag, định vị trong nhà dùng UWB).

Vào hầm gửi xe kín mít, không vệ tinh, không WiFi - điện thoại chuyển sang “đoán mò có cơ sở”: dùng cảm biến chuyển động (IMU - gia tốc kế và con quay hồi chuyển) để đếm bước và hướng đi, cộng dồn lại mà suy ra vị trí. Cách này gọi là dead reckoning. Vấn đề: mỗi bước sai một tí, và sai số tích luỹ dần:

dr.py - dead reckoning: sai so tich luy theo so buoc

import math

# Meo con di trong ham (khong GPS): moi buoc biet HUONG va DAI, nhung huong
# bi lech mot chut -> sai so tich luy khi di cang xa.
duong_di = [(0, 10), (90, 8), (0, 12), (270, 6), (0, 9)]  # (huong dung do, dai m)
lech = 4  # cam bien huong lech 4 do moi buoc

def di(buoc, sai_huong):
    x = y = 0.0
    for huong, dai in buoc:
        rad = math.radians(huong + sai_huong)
        x += dai * math.cos(rad)
        y += dai * math.sin(rad)
    return (x, y)

for n in (1, 3, 5):
    that = di(duong_di[:n], 0)
    doan = di(duong_di[:n], lech)
    print(f"Sau {n} buoc: doan lech vi tri that {math.dist(that, doan):.2f} m")

Kết quả khi chạy

Sau 1 buoc: doan lech vi tri that 0.70 m
Sau 3 buoc: doan lech vi tri that 1.63 m
Sau 5 buoc: doan lech vi tri that 2.17 m

Đi càng xa càng trôi. Vì vậy IMU chỉ đáng tin ngắn hạn, để “lấp” những khoảng mất sóng, rồi được chỉnh lại ngay khi bắt lại được GPS/WiFi.

Trung thực

Ví dụ trên đơn giản hoá: chỉ mô phỏng một kiểu lệch hướng cố định. Dead reckoning thật còn dùng độ dài bước thay đổi và nhiều cảm biến, nhưng bản chất “sai số tích luỹ” thì y hệt.

Không nguồn nào hoàn hảo, nên điện thoại gộp hết: GPS (khi thấy trời), WiFi và trạm sóng (trong nhà), Bluetooth/UWB (chính xác cự ly gần), IMU (lấp lúc mất sóng) - thành một ước lượng tốt nhất. Dịch vụ làm việc đó gọi là fused location.

GPS (yếu trong phố)trạm sóng 4GWiFiBgộp lại = vị trí
Trong phố, GPS yếu nên điện thoại gộp thêm trạm sóng, WiFi và Bluetooth để ra vị trí.

Bước tiếp theo

Hiểu các nguồn này rồi, ta có thể chủ động giúp điện thoại định vị nhạy và chính xác hơn. Các mẹo thực dụng (và VÌ SAO chúng hiệu quả) ở Bài 7: Mẹo tăng độ chính xác.

Câu hỏi thường gặp

Tốn rất ít data (chỉ tải gói dữ liệu hỗ trợ nhỏ), và thực ra giúp ĐỠ tốn pin vì máy bắt được vị trí nhanh hơn, không phải dò vệ tinh lâu.

Không. Điện thoại chỉ cần “nghe thấy” các router phát quanh đó (mỗi router có một địa chỉ riêng gọi là BSSID), không cần mật khẩu hay kết nối. Nó tra địa chỉ đó trong cơ sở dữ liệu để đoán vị trí.

Họ dựng cơ sở dữ liệu khổng lồ: xe chụp bản đồ và hàng tỉ điện thoại (có bật chia sẻ) ghi nhận “thấy router X ở quanh toạ độ này”. Gộp lại thành bản đồ vị trí các router - kiểu cộng đồng cùng vẽ (crowdsourced).

Bluetooth thường (BLE) ước khoảng cách theo ĐỘ MẠNH tín hiệu nên khá thô (cỡ mét). UWB (siêu băng rộng) đo THỜI GIAN BAY của xung cực ngắn nên chính xác tới cỡ chục centimet - dùng trong AirTag, định vị trong nhà.

Nó chuyển sang “đoán mò có cơ sở” (dead reckoning): dùng cảm biến chuyển động (IMU - gia tốc kế, con quay hồi chuyển) đếm bước và hướng để suy ra đã đi tới đâu. Chính xác lúc đầu nhưng trôi dần.

Là dịch vụ gộp mọi nguồn - GPS, WiFi, trạm sóng, cảm biến - thành một ước lượng tốt nhất, thay vì bắt ứng dụng tự xử lý. Android có “Fused Location Provider” làm đúng việc này.

Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.

Tick những điều em tự tin làm được sau khi học bài này. 0/6

Trả lời vài câu để chắc rằng em đã nắm bài.

Câu 1/3 Điểm: 0

Trong trung tâm thương mại gần như không bắt được vệ tinh, điện thoại định vị chủ yếu nhờ gì?

  1. 1

    Dead reckoning trôi dần

    Chạy đoạn dr.py ở Bước 5. Sai số sau 1, 3, 5 bước là bao nhiêu? Rút ra kết luận về IMU.

    Hoàn thành khi: Khoảng 0,70 / 1,63 / 2,17 m - càng đi xa càng trôi, nên dead reckoning bằng IMU chỉ đáng tin trong ngắn hạn.

  2. 2

    WiFi không cần mật khẩu

    Vì sao định vị bằng WiFi KHÔNG cần kết nối hay biết mật khẩu router?

    Hoàn thành khi: Vì chỉ cần nghe địa chỉ BSSID mà router liên tục phát ra, rồi tra cơ sở dữ liệu vị trí - không hề kết nối hay đăng nhập.

  3. 3

    TTFF và A-GPS

    TTFF là gì? A-GPS rút ngắn nó bằng cách nào?

    Hoàn thành khi: TTFF (time to first fix) là thời gian từ lúc bật tới khi có vị trí đầu tiên; A-GPS tải sẵn dữ liệu quỹ đạo (ephemeris/almanac) qua mạng nên máy không phải chờ vệ tinh phát chậm.

  4. 4

    Trong nhà dựa vào gì

    Ở trung tâm thương mại gần như không thấy vệ tinh, điện thoại định vị chủ yếu nhờ những nguồn nào?

    Hoàn thành khi: WiFi (qua BSSID), beacon Bluetooth (BLE/UWB), trạm sóng di động, và cảm biến IMU - không phải GPS.

  5. 5

    UWB hay BLE chính xác hơn?

    Trong nhà, UWB hay Bluetooth thường (BLE) định vị chính xác hơn? Vì sao?

    Hoàn thành khi: UWB (cỡ chục cm) vì đo thời gian bay của xung; BLE thường chỉ ước theo độ mạnh tín hiệu nên thô hơn (cỡ mét).

  6. 6

    Nối sang Bài 7

    Kể 2 việc NGƯỜI DÙNG có thể làm để điện thoại định vị nhạy và chính xác hơn.

    Hoàn thành khi: Ví dụ: bật quét WiFi & Bluetooth, ra chỗ thoáng trời. Chi tiết và lý do nằm ở Bài 7 (Mẹo tăng độ chính xác).