Tính toán vị trí từ dữ liệu GPS thô (2017)
(telesens.co)- Bài toán tính vị trí GPS là phải đồng thời giải giả cự ly (pseudorange) đến vệ tinh, quỹ đạo vệ tinh và sai số đồng hồ máy thu; dữ liệu thô được xử lý bằng Matlab để hiện thực suy ra vị trí thực tế
- Trong tính toán, hệ tọa độ WGS 84 ECEF phù hợp hơn vĩ độ/kinh độ, và để phân tích phương vị, góc ngẩng cùng sai số theo góc nhìn người dùng thì dùng thêm hệ tọa độ cục bộ ENU
- Vị trí vệ tinh được tính theo quy trình trong GPS Interface Specification và các tham số quỹ đạo; vì Trái Đất quay trong lúc tín hiệu truyền đi, cần hiệu chỉnh tọa độ tại thời điểm phát để khớp với khung ECEF ở thời điểm thu
- Vị trí người dùng và độ lệch đồng hồ máy thu được ước lượng bằng bình phương tối thiểu lặp từ giả cự ly đã hiệu chỉnh của ít nhất 4 vệ tinh; trong phân tích ví dụ, độ trễ tầng điện ly và tầng đối lưu được bỏ qua
- Trong thí nghiệm máy thu tĩnh dùng u-blox NEO-M8T/6T, RTKLib STRSVR, RTCM 1002/1019 và goGPS, độ lệch chuẩn vị trí là East 14.00m, North 39.88m, Up 47.35m, còn độ lệch đồng hồ trôi tuyến tính ở mức 4.27e-7sec/sec
Bài toán cơ bản của tính vị trí GPS
- Nhiệm vụ cốt lõi của GPS là tính vị trí của người dùng
- Vĩ độ, kinh độ và độ cao quen thuộc để biểu diễn vị trí trên bề mặt Trái Đất, nhưng không thuận tiện cho tính toán toán học vì chênh lệch 1 độ vĩ độ hay kinh độ không phải lúc nào cũng tương ứng cùng một khoảng cách vật lý
- Khoảng cách ứng với 1 độ kinh độ là lớn nhất ở xích đạo và gần bằng 0 ở vùng cực
- Việc tính toán cần một hệ tọa độ trực giao trong đó chênh lệch đơn vị tọa độ biểu thị khoảng cách vật lý cố định
- GPS xác định vị trí người dùng bằng khoảng cách đến nhiều vệ tinh và vị trí của các vệ tinh đó
- Trước tiên cần tính khoảng cách đến vệ tinh và vị trí của từng vệ tinh
Hệ tọa độ: ECEF, WGS 84, ENU
- Hệ tọa độ trực giao gắn với Trái Đất và quay cùng Trái Đất được gọi là ECEF(Earth Centered, Earth Fixed)
- Vì tọa độ của người dùng đứng yên trên bề mặt giữ nguyên theo thời gian nên hệ này phù hợp để biểu diễn vị trí người dùng
- Hệ tọa độ ECEF được dùng phổ biến nhất là WGS 84 do Bộ Quốc phòng Mỹ phát triển
- Gốc tọa độ là tâm khối lượng của Trái Đất
- Trục z đi qua CTP(Conventional Terrestrial Pole)
- CTP là vị trí cực trung bình của Trái Đất trong giai đoạn 1900~1905, còn vị trí cực thực tế dịch chuyển trong một vòng tròn bán kính khoảng 15m
- Trục x đi qua giao điểm giữa mặt phẳng xích đạo của CTP và kinh tuyến chuẩn Mean Greenwich Meridian
- Chuyển động vệ tinh về mặt tự nhiên nên được xử lý trong hệ tọa độ quán tính theo cơ học Newton, nhưng GPS Interface Specification cung cấp quy trình tính vị trí vệ tinh tại một thời điểm nhất định trong khung ECEF
- Trong ứng dụng cục bộ, hệ tọa độ ENU(East-North-Up) lấy vị trí người dùng làm gốc là thuận tiện
- Tọa độ ECEF có thể được đổi sang ENU bằng phép nhân ma trận dùng vĩ độ và kinh độ của người dùng
- Phép đổi sang ENU được dùng để tính phương vị và góc ngẩng của vệ tinh
Định nghĩa độ cao: ellipsoid chuẩn và geoid
- Với độ cao, trước tiên phải xác định “lấy gì làm mốc”
- Ellipsoid chuẩn(reference ellipsoid) là mô hình trừu tượng hóa Trái Đất thành một ellipsoid dẹt
- Nó nằm tại tâm Trái Đất và trục quay trùng với trục z của ECEF
- Bán kính 6371km thường dùng khi xem Trái Đất là hình cầu là giá trị nằm giữa bán trục lớn và bán trục nhỏ
- Một điểm thực trên bề mặt Trái Đất có thể nằm trên hoặc dưới ellipsoid chuẩn
- Geoid là tập hợp các điểm có cùng thế năng trọng trường, tức một bề mặt mang ý nghĩa vật lý
- Độ cao theo geoid được gọi là chính cao hoặc độ cao trên mực nước biển trung bình(MSL)
- Geoid thường được mô tả như tập các giá trị độ cao phía trên ellipsoid chuẩn
- Vĩ độ, kinh độ và độ cao được định nghĩa trong hệ tọa độ ellipsoid
- Vĩ độ trắc địa là góc giữa mặt phẳng xích đạo và đường vuông góc với bề mặt ellipsoid tại điểm P
- Góc của đường nối tâm Trái Đất với điểm P là vĩ độ địa tâm; nếu Trái Đất là hình cầu hoàn hảo thì nó trùng với vĩ độ trắc địa
- Việc đổi từ tọa độ ellipsoid sang tọa độ trực giao có thể làm trong một bước, nhưng đổi từ ECEF sang tọa độ ellipsoid cần một thủ tục lặp hội tụ nhanh
Tính vị trí vệ tinh
- Quỹ đạo vệ tinh lý tưởng là quỹ đạo elip được mô tả bằng 6 phần tử quỹ đạo Kepler
- 5 phần tử xác định kích thước, hình dạng elip và hướng của mặt phẳng quỹ đạo
- Phần tử thứ 6 xác định vị trí vệ tinh tại một epoch cụ thể
- Quỹ đạo vệ tinh thực tế không phải elip hoàn hảo do sự không đồng nhất trong cấu trúc Trái Đất và ảnh hưởng hấp dẫn của Mặt Trời, Mặt Trăng
- GPS phát 16 tham số quỹ đạo để hiệu chỉnh các nhiễu loạn này
- Bảng 20-IV của GPS Interface Specification chứa quy trình tính vị trí vệ tinh có kèm hiệu chỉnh quỹ đạo
- Vị trí người dùng được tính tại thời điểm thu t, nhưng tín hiệu GPS được phát từ vệ tinh tại thời điểm t-τ
- Vị trí vệ tinh được tính tại thời điểm phát tín hiệu t-τ
- Trong khoảng τ tín hiệu truyền đi, Trái Đất quay nên cần quay vectơ vị trí vệ tinh theo lượng quay của Trái Đất để khớp với khung ECEF của người dùng tại thời điểm thu t
- Điều này không giống với việc chỉ đơn giản tính vị trí vệ tinh ở thời điểm t
Giả cự ly và độ lệch đồng hồ
- Máy thu GPS so sánh dấu thời gian phát có trong tín hiệu vệ tinh với thời gian của máy thu, rồi nhân chênh lệch với tốc độ ánh sáng để ước tính sơ bộ khoảng cách đến vệ tinh
- Giá trị đo này là giả cự ly(pseudorange)
- Nếu đồng hồ vệ tinh và đồng hồ máy thu đồng bộ hoàn hảo, và tín hiệu truyền trong chân không theo đường thẳng với tốc độ ánh sáng, thì nó sẽ bằng khoảng cách thực
- Trong thực tế, nó khác khoảng cách thực do lệch đồng hồ và độ trễ khí quyển
- Độ lệch đồng hồ vệ tinh bắt buộc phải được hiệu chỉnh vì có thể gây sai số vị trí tới hàng nghìn mét
- Nó được tính bằng đa thức dùng các hệ số trong bản tin ephemeris GPS và một hạng tương đối tính
- Phần đa thức cung cấp phần lớn hiệu chỉnh, còn hiệu ứng tương đối tính đóng góp khoảng 1~10m tùy vị trí vệ tinh
- Độ lệch đồng hồ máy thu là ẩn số cần được ước lượng cùng với vị trí người dùng
- Trong thuật toán, độ lệch đồng hồ được xử lý ở đơn vị khoảng cách bằng cách nhân với tốc độ ánh sáng
- Độ trễ khí quyển được chia thành thành phần tầng điện ly và tầng đối lưu
- Độ trễ tầng điện ly thường gây sai số vị trí khoảng 25m
- Độ trễ tầng đối lưu thường gây sai số vị trí khoảng 2m
- Trong phân tích thí nghiệm của bài viết, các độ trễ này bị bỏ qua
Thuật toán ước lượng vị trí người dùng và độ lệch đồng hồ
- Giá trị đo giả cự ly đã hiệu chỉnh có thể biểu diễn như tổng của khoảng cách thực giữa người dùng và vệ tinh, độ lệch đồng hồ máy thu và sai số chưa được mô hình hóa
- Vị trí người dùng và độ lệch đồng hồ được tìm như những giá trị làm nhỏ nhất chênh lệch giữa giả cự ly đo được và giả cự ly dự đoán
- Lời giải là thủ tục bình phương tối thiểu lặp
- Giá trị khởi tạo vị trí người dùng là
[0 0 0] - Giá trị khởi tạo độ lệch đồng hồ người dùng là
0 - Ở mỗi vòng lặp, dựa trên ước lượng vị trí hiện tại sẽ xếp chồng các vectơ đơn vị theo hướng vệ tinh để tạo ma trận G
- Giải lượng hiệu chỉnh vị trí và lượng hiệu chỉnh độ lệch đồng hồ, rồi lặp lại cho đến khi độ thay đổi nhỏ hơn ngưỡng
- Giá trị khởi tạo vị trí người dùng là
- Nếu có đúng 4 vệ tinh và cấu hình không suy biến thì có thể tìm nghiệm trực tiếp
- Khi bầu trời không bị che khuất, thường quan sát được nhiều vệ tinh hơn và thông thường dùng nghiệm bình phương tối thiểu
- Quy trình triển khai theo luồng sau
- Nhận giả cự ly thô và ephemeris vệ tinh làm đầu vào
- Tính độ lệch đồng hồ của từng vệ tinh và hiệu chỉnh giả cự ly
- Nếu có thể thì áp dụng hiệu chỉnh tầng điện ly và tầng đối lưu
- Hiệu chỉnh giả cự ly bằng độ lệch đồng hồ máy thu hiện tại
- Chia giả cự ly cho tốc độ ánh sáng để lấy thời gian truyền tín hiệu τ
- Tính vị trí vệ tinh tại thời điểm t-τ
- Phản ánh sự quay của Trái Đất trong khoảng τ để khớp vị trí vệ tinh với khung ECEF của người dùng
- Lập ma trận G và sai khác giả cự ly, rồi tính lượng hiệu chỉnh vị trí và độ lệch đồng hồ
Chi tiết triển khai bằng Matlab
- Phần lớn mã Matlab có dạng đánh giá trực tiếp ẩn số bên trái từ các giá trị đã biết ở bên phải
- Một số phép tính không có nghiệm đóng dạng giải tích nên cần solver
- Ví dụ là bước tính dị thường lệch tâm E từ dị thường trung bình M khi tính vị trí vệ tinh
- Quan hệ
E - e*sin(E) == Mkhông thể giải ở dạng đóng nên dùngvpasolve
- Mã trong phụ lục gồm các chức năng sau
- Tính vị trí người dùng và độ lệch đồng hồ
- Tính vị trí vệ tinh
- Tính nghiệm bình phương tối thiểu cho vị trí người dùng và độ lệch đồng hồ
- Tính độ lệch đồng hồ vệ tinh
- Chuyển tọa độ ECEF WGS84 sang tọa độ ellipsoid
- Chuyển đổi định dạng dữ liệu ephemeris
Cấu hình thu thập dữ liệu GPS thô
- Để lấy dữ liệu GPS thô, cần một máy thu có thể xuất thông tin timing như giả cự ly thô và ephemeris vệ tinh, chứ không phải thiết bị GPS thông thường chỉ tính vị trí bên trong rồi xuất kết quả
- Chip u-blox NEO-M8T và 6T đáp ứng yêu cầu này
- Có thể mua bộ phần cứng gồm GPS unit, anten và cổng xuất serial trên Amazon với giá khoảng 40 USD
- Để thu và lưu tín hiệu GPS thô, tác giả dùng tiện ích STRSVR của RTKLib
- RTKLib là gói phần mềm mã nguồn mở hỗ trợ định vị GNSS tiêu chuẩn và chính xác cao cho GPS, Glonass, Galileo, Baidu...
- STRSVR chuyển đầu ra định dạng tùy biến của máy thu u-blox sang định dạng chuẩn RTCM
- Thông tin cần thiết nằm trong các bản tin RTCM 1002 và 1019
- 1002 chứa thông tin giả cự ly thô
- 1019 chứa thông tin ephemeris vệ tinh
- STRSVR được cấu hình để nhận dữ liệu qua cổng serial 9600 Baud và lưu dưới dạng tệp RTCM 3
- Việc thu thập dữ liệu được thực hiện trên mái của một tòa nhà căn hộ
- Máy thu GPS được đặt ở vị trí không bị che khuất bầu trời
- Dùng phần mềm u-center của u-blox để xác nhận có đủ vệ tinh nhìn thấy và có thể đạt position fix tốt
- Thu thập khoảng 1 giờ dữ liệu GPS thô
Xử lý RTCM và sử dụng goGPS
- STRSVR lưu dữ liệu GPS thô ở định dạng nhị phân RTCM3
- Để xử lý trong Matlab, cần giải mã dữ liệu RTCM3 thành cấu trúc dữ liệu Matlab
- Thay vì tự viết bộ giải mã RTCM, bài viết dùng hàm
load_streamcủa thư viện Matlab goGPS- Hàm này đọc tệp định dạng RTCM và trích xuất các bản tin RTCM
- Dữ liệu trích xuất được lưu thành tệp
.matđể dùng làm đầu vào cho thuật toán tính vị trí
- Tệp
rtcm_datacũng được cung cấp- Do giới hạn bảo mật của WordPress, tệp được phát hành với đuôi
.txtthay vì.mat - Sau khi tải về cần đổi tên lại thành
.mat
- Do giới hạn bảo mật của WordPress, tệp được phát hành với đuôi
Kết quả thí nghiệm: biến thiên vị trí và trôi đồng hồ
- Vì máy thu đứng yên trong suốt quá trình thu thập dữ liệu, biến thiên theo thời gian của vị trí được tính ra thể hiện hiệu năng thực tế của thuật toán tính vị trí
- Trong khung ENU lấy người dùng làm tâm, độ lệch chuẩn của các thành phần vị trí là
- East: 14.00m
- North: 39.88m
- Up: 47.35m
- Biến thiên vị trí vào khoảng 30m theo hướng East và North, còn theo hướng Up thì lớn hơn
- Độ lệch đồng hồ máy thu không phải hằng số mà trôi tuyến tính theo thời gian
- Trong thuật toán, độ lệch đồng hồ được xử lý ở đơn vị khoảng cách
- Trên biểu đồ kết quả, nó được chia cho tốc độ ánh sáng để đổi về đơn vị thời gian
- Mức trôi là 4.27e-7sec/sec
Tính phương vị và góc ngẩng của vệ tinh
- Phương vị và góc ngẩng của vệ tinh được định nghĩa theo góc nhìn người dùng, nên được tính trong khung ENU lấy người dùng làm tâm
- Quy trình tính như sau
- Tính vectơ vị trí từ người dùng đến vệ tinh trong khung ECEF
- Chuyển vị trí người dùng sang tọa độ ellipsoid là vĩ độ và kinh độ
- Quay vectơ vị trí đó sang khung ENU lấy người dùng làm tâm
- Tính phương vị và góc ngẩng từ tọa độ ENU
- Ở epoch ví dụ, góc ngẩng của cả 8 vệ tinh tính được đều dương
- Phương vị có thể nhận cả giá trị dương và âm
- Người dùng không thể nhìn thấy vệ tinh nằm dưới đường chân trời, nên góc ngẩng dương là điều tự nhiên
- Nếu tính vị trí vệ tinh theo cùng quy trình cho nhiều epoch, có thể tạo satellite track chart như phần mềm xử lý GPS vẫn hiển thị
DOP: yếu tố hình học quyết định chất lượng ước lượng vị trí
- DOP(Dilution of Precision) là chỉ số dùng để đánh giá chất lượng ước lượng vị trí
- Sai số vị trí không chỉ bị ảnh hưởng bởi nhiễu đo mà còn bởi hình học giữa người dùng và vệ tinh
- Phép đo giả cự ly và vị trí vệ tinh càng nhiễu thì sai số vị trí càng lớn
- Các vệ tinh càng phân bố rộng theo phương vị và góc ngẩng thì hình học càng thuận lợi và DOP càng thấp
- Hiệp phương sai của sai số vị trí và độ lệch đồng hồ có thể tách thành hàm của sai số khoảng cách người dùng và ma trận G
- Ma trận G được tạo từ các vectơ đơn vị hướng từ người dùng tới vệ tinh
- Ma trận G trong khung ECEF được quay sang khung ENU để tiện tính DOP
- Các thành phần DOP được định nghĩa theo hướng East, North, Up
- HDOP là DOP theo phương ngang, kết hợp thành phần East và North
- VDOP là DOP theo phương thẳng đứng của thành phần Up
- Trong dữ liệu thực, HDOP và VDOP nhìn chung đều dưới 2.5
- Mức này được xem là đủ tốt
- VDOP lớn hơn HDOP
- Vì người dùng trên mặt đất không thể quan sát vệ tinh dưới đường chân trời, và tín hiệu từ vệ tinh thấp hơn 10 độ so với đường chân trời thường quá nhiễu nên thường không dùng, nên VDOP cao hơn
Quy mô của hạ tầng GPS
- Việc xây dựng chòm sao GPS tiêu tốn khoảng 30 tỷ USD, và chính phủ Mỹ chi khoảng 1 tỷ USD mỗi năm để duy trì
- Giá trị của Uber, công ty được nhắc đến là không thể tồn tại nếu không có GPS, vượt quá 70 tỷ USD
- Nếu tính cả nhiều ứng dụng mà GPS đã làm cho khả thi, thì đầu tư công cho GPS có thể xem là một ví dụ về tác động lan tỏa kinh tế và công nghệ rất lớn
1 bình luận
Ý kiến trên Hacker News
Android đã cung cấp quyền truy cập vào cách tiếp cận pha sóng mang (carrier phase) từ khá lâu, và nhờ đó có thể xác định vị trí tương đối giữa các thiết bị ở cùng khu vực lân cận với độ chính xác tới mức phải để ý ăng-ten GNSS được giấu ở đâu trong thiết bị
Chỉ riêng điều này thì chưa quá ghê gớm, nhưng nếu kết hợp thêm gia tốc kế và con quay hồi chuyển của từng thiết bị thì sẽ tốt hơn
Vì sự thay đổi của các phép đo giả cự ly GNSS có thể dự đoán được ngay cả khi không đứng yên, nên hệ thống có thể hoạt động thời gian thực mà mức suy giảm hiệu năng nhỏ
Ví dụ, có thể hạ cánh tự động một máy bay mô hình không bánh xe lên thùng xe tải, đồng thời tránh bị trầy xước hoặc phụ thuộc vào đường băng cỏ
Nếu mức tiêu thụ điện không phải là yếu tố cực kỳ quan trọng, thì cũng không cần làm cho một bộ thu GNSS khá tốt trở nên đắt đỏ; tôi không hiểu vì sao ta không thể đơn giản mua một cặp với giá 100 đô la
Đây là một bộ thu GNSS giá 30 đô la. Dĩ nhiên nó đi kèm thêm một ít thứ linh tinh không cần thiết
Với những ai muốn tự làm bộ thu GPS, có một dự án hoàn toàn mã nguồn mở giải thích khá nhiều lý thuyết: http://www.aholme.co.uk/GPS/Main.htm
https://lea.hamradio.si/~s53mv/navsats/theory.html
Một bài thường xuất hiện trong các bình luận về GPS, và có lý do chính đáng: https://ciechanow.ski/gps/
Một cách giải thích khác, và có lẽ tương tác hơn:
https://ciechanow.ski/gps/
Còn một triển khai mã nguồn mở khá ổn khác:
https://m.youtube.com/watch?v=dVD1Yws__v0
Tôi từng thấy các nhà nghiên cứu thu thập dữ liệu GPS của sinh vật thủy sinh chỉ thỉnh thoảng, và chỉ trong thời gian rất ngắn, nổi lên mặt nước
Nếu ghi lại dữ liệu thô rồi hậu xử lý, cả mức tiêu thụ điện lẫn thời gian tối thiểu phải phơi ra trước tín hiệu vệ tinh đều giảm mạnh, thời gian phơi tín hiệu có thể xuống dưới 1 giây
Khi đọc đoạn “hình dưới đây cho thấy hình học giữa người dùng và nguồn ảnh hưởng thế nào đến độ bất định của vị trí người dùng”, tôi nghĩ sẽ thật hay nếu trong ứng dụng bản đồ trên điện thoại có một thiết lập đổi hình dạng độ bất định vị trí từ hình tròn sang dạng giao nhau của các cung như thế này
Tôi nghe nói GPS là một trong số ít ứng dụng trong đời sống hằng ngày phải xét đến hiệu ứng tương đối tính. Nếu vậy, có đúng là dữ liệu được tạo ra đã loại bỏ sẵn các hiệu ứng tương đối tính này không?
Nếu là đầu ra của một thiết bị GPS thương mại thì đúng. Trong quá trình xử lý sau khi thu nhận để tạo đầu ra, đủ loại hiệu ứng gây sai số được hiệu chỉnh
Bài này nói về dữ liệu GPS thô được phát trực tuyến từ nhiều vệ tinh; để tạo ra giá trị đầu ra từ đó thì cần xử lý, và để tăng độ chính xác thường còn cần thêm đầu vào như trạm mặt đất hoặc hiệu chỉnh trên biển
Nhiều nhà cung cấp thiết bị GPS nhìn chung làm những việc tương tự, nhưng chi tiết mới là điểm then chốt
Bài https://ciechanow.ski/gps/ mà các bình luận khác liên kết cũng rất đáng đọc
Thời gian cũng trôi chậm hơn đối với các vật chuyển động nhanh hơn người quan sát, và vệ tinh thì chuyển động khá nhanh
GPS cần thời gian giữa người quan sát và vệ tinh được đồng bộ, nên nhịp thời gian được hiệu chỉnh để phản ánh các hiệu ứng của thuyết tương đối hẹp và thuyết tương đối rộng
Vì vậy tương đối tính là quan trọng, nhưng bạn không cần biết nhiều về tương đối tính để giải ra vị trí của mình
Tuy nhiên, một số dạng RTK đường cơ sở dài/mạng lưới có thể cần mô hình hóa tinh vi hơn
Bước tiếp theo là PPP hoặc RTK. GNSS là một hang thỏ đầy khả năng rất thú vị
Bài tập cho người tin Trái Đất phẳng: hãy giải thích bản đồ GPS trên điện thoại hoạt động thế nào nếu không có vệ tinh quay quanh Trái Đất hình cầu. Hãy trình bày lời giải
Trước hết cần đưa ra một lập luận khá phức tạp rằng điện thoại không thể làm vậy nếu không có vệ tinh
Một ví dụ dễ hơn một chút và khó để người tin Trái Đất phẳng bỏ qua hơn là ISS gần như có thể nhìn thấy bằng mắt thường, và chắc chắn thấy được bằng kính thiên văn ở sân sau. Vệ tinh Starlink cũng tương tự
Thuyết Trái Đất phẳng không phải là một lập trường đạt được bằng lý trí, mà hầu như luôn xuất phát từ sự bối rối hoặc là hệ quả tất yếu của một niềm tin cốt lõi không lay chuyển. Thường là từ việc đọc Kinh Thánh theo nghĩa đen một cách cực đoan, hoặc từ hoang tưởng rằng “mọi thứ chính thức đều là giả”