Nghiên cứu định vị tư thế bằng phương thức định vị GNSS đa anten

84 6 0
Nghiên cứu định vị tư thế bằng phương thức định vị GNSS đa anten

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI CAO THỊ TRANG NGHIÊN CỨU ĐỊNH VỊ TƢ THẾ BẰNG PHƢƠNG PHÁP ĐỊNH VỊ VỆ TINH GNSS ĐA ANTEN LUẬN VĂN THẠC SĨ KỸ THUẬT Chuyên ngành: KỸ THUẬT VIỄN THÔNG NGƢỜI HƢỚNG DẪN KHOA HỌC PSG.TS NGUYỄN HỮU TRUNG HÀ NỘI - 2017 MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN II DANH MỤC CÁC TỪ VIẾT TẮT III MỤC LỤC HÌNH ẢNH IV LỜI NÓI ĐẦU V CHƢƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan luận văn 1.1.1 Tính cấp thiết 1.1.2 Các vấn đề cần giải luận văn 1.1.3 Giải pháp 1.2 Tổng quan hệ thống vệ tinh định vị toàn cầu GNSS (GPS) 1.2.1 Giới thiệu 1.2.2 Cấu trúc hệ thống GPS 1.2.3 Cấu trúc tín hiệu GPS 1.2.4 Các nguồn sai số GPS 11 1.2.5 Các ứng dụng hệ thống định vị toàn cầu GPS 13 CHƢƠNG NGUYÊN LÝ GNSS 18 2.1 Các phƣơng trình quan sát GNSS 18 2.1.1 Mã khoảng giả 18 2.1.2 Khoảng giả pha sóng mang 19 2.2 Định vị sai khác 19 2.2.1 Vi sai đơn 20 2.2.2 Vi sai đúp (vi sai bậc hai) 21 2.2.3 Vi sai bậc ba 22 2.3 Các ƣớc tính 23 2.3.1 Bình phƣơng tối thiểu phi tuyến 23 2.3.2 Bộ lọc 25 2.4 Các mơ hình ngẫu nhiên 26 2.4.1 Phƣơng sai 26 2.4.2 Sự tƣơng quan 28 2.5 Phƣơng pháp phân giải bất định số nguyên 29 2.5.1 Làm tròn 30 2.5.2 Khởi động số nguyên 30 2.5.3 LAMBDA 31 CHƢƠNG XÁC ĐỊNH VÀ MÔ PHỎNG TƢ THẾ GNSS 34 3.1 Nguyên lý tƣ 34 3.1.1 Các khung tham chiếu 34 3.1.2 Các mơ tả vịng quay 37 3.1.3 Chuyển đổi khung tham chiếu 41 3.2 Các mơ hình chức 43 3.2.1 Mơ hình chức cực cầu 43 3.2.2 Mơ hình chức hạn chế 44 3.2.3 Mơ hình chức khơng giới hạn 44 3.3 Quá trình tiền xử lý 46 3.3.1 Tính tốn vị trí vệ tinh 46 3.3.2 Mơ hình ngẫu nhiên 47 3.4 Phƣơng pháp dấu phẩy động 47 3.5 Phƣơng pháp cố định 48 3.6 Lựa chọn đƣờng sở vị trí ăng-ten 48 3.7 Sử dụng liên kết đƣờng sở 48 3.7.1 Giải pháp dấu phẩy động cho đƣờng sở hạn chế 48 3.7.2 LAMBDA hạn chế đƣờng sở 50 3.7.3 Xác nhận bất định số nguyên 53 3.8 Mô tƣ GNSS 55 3.8.1 Sơ đồ thuật toán xác định tƣ GNSS 55 3.8.2 Kết mô tƣ GNSS dựa vào pha sóng mang 56 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI .65 TÀI LIỆU THAM KHẢO 66 PHỤ LỤC 68 LỜI CAM ĐOAN Tên là: Cao Thị Trang Sinh ngày 26 tháng 03 năm 1990 Học viên lớp cao học Kỹ thuật Viễn thông 2015B - Trƣờng đại học Bách Khoa Hà Nội Xin cam đoan nội dung đề tài “Nghiên cứu định vị tư phương thức định vị vệ tinh GNSS đa anten” tơi tự tìm hiểu, nghiên cứu thực dƣới dự hƣớng dẫn thầy giáo PGS.TS Nguyễn Hữu Trung Mọi trích dẫn tài liệu tham khảo mà sử dụng mà sử dụng có ghi rõ nguồn gốc Tơi xin hồn tồn chịu trách nhiệm lời cam đoan Hà Nội, tháng 09 năm 2017 Học viên thực Cao Thị Trang I LỜI CẢM ƠN Trƣớc tiên, xin bày tỏ lòng biết ơn tới PGS.TS Nguyễn Hữu Trung tận tình hƣớng dẫn, truyền đạt kiến thức kinh nghiệm q báu giúp tơi hồn thành Bản luận văn thạc sĩ Tôi xin gửi lời cảm ơn chân thành tới tập thể thầy, cô giáo Viện Điện tử - Viễn thông, Trƣờng Đại học Bách Khoa Hà Nội tạo môi trƣờng tốt để học tập nghiên cứu Tôi xin cảm ơn thầy cô Viện Đào tạo sau đại học quan tâm đến khóa học này, tạo điều kiện thuận lợi cho học viên suốt trình học tập thực đề tài Cuối cùng, tơi xin bày tỏ lịng biết ơn tới tồn thể gia đình, cảm ơn bạn bè đồng nghiệp cổ vũ, động viên suốt thời gian qua Tuy cố gắng hết sức, nhƣng thời gian kiến thức hạn chế nên luận văn khơng tránh khỏi sai sót, tơi mong bổ sung, góp ý thầy Học viên Cao Thị Trang II DANH MỤC CÁC TỪ VIẾT TẮT DCM Direction Cosine Matrix DLL Delay Lock Loop ECEF Earth Centre Earth Fixed EKF Extended Kalman Filter GLONASS Global‟naya Navigatsionnaya Sputnikovaya Sistema GNSS Global Navigation Satelite System GPS Global Positioning System ICD Interface Control Document IMU Inertial Measurement Unit INS Inertial Navigation System LLI Loss of Lock Indicator MEO Medium Earth Orbit PLL Phase Lock Loop PPM Proportional Pulse Modulation QEP Quadratic Eigenvalue Problem RINEX Receiver Independent Exchange RMS Root Mean Square SNR Signal to Noise Ratio UAV Unmanned Aerial Vehicle III MỤC LỤC HÌNH ẢNH Hình 1.1: Hệ thống vệ tinh quay quanh trái đất Hình 1.2: Sơ đồ liên quan ba phần GPS .4 Hình 1.3: Quỹ đạo vệ tinh GPS Hình 1.4: Vị trí trạm điều khiển giám sát hệ thống GPS .7 Hình 1.5: Cấu trúc tín hiệu vệ tinh GPS .8 Hình 1.6: Cấu trúc liệu vệ tinh GPS Hình 1.8: Các nguồn tác động khác gây sai số phép đo cự ly .11 Hình 2.1: Phƣơng pháp đo sai pha sóng mang đa ăng-ten 19 Hình 2.2: Quan sát hình học 29 Hình 2.3: Sơ đồ thuật tốn LAMBDA .31 Hình 3.1: Khung thân .35 Hình 3.2: Trục khung cảm biến, trục khung thân .35 Hình 3.3: Khung cấp cục 36 Hình 3.4: Phƣơng pháp „tìm kiếm mở rộng‟ 53 Hình 3.5: Lƣu đồ thuật tốn xác định tƣ GNSS 55 Hình 3.6: Lƣu đồ giao diện mơ tƣ GNSS .56 Hình 3.7: Giao diện làm việc 57 Hình 3.8: Đọc phân tích tệp RINEX 58 Hình 3.9; Bảng thơng báo tổng qt 59 Hình 3.10: Làm mịn pha sóng mang 59 Hình 3.11: Quá trình định vị ăng-ten chủ 59 Hình 3.12: Quá trình xử lý sai khác .60 Hình 3.13: Ƣớc tính nguồn lỗi đƣờng sở cặp ăng-ten 61 Hình 3.14: Q trình ƣớc tính tƣ phép bình phƣơng tối thiểu 62 Hình 3.15: Ba tham số tƣ đƣợc xác định dựa 62 IV LỜI MỞ ĐẦU Trong năm gần thông tin vệ tinh giới có bƣớc tiến vƣợt bậc đáp ứng nhu cầu đời sống, đƣa ngƣời nhanh chóng tiếp cận với tiến khoa học kỹ thuật Ngày nay, khoa học - công nghệ phát triển mạnh mẽ đƣa hàng loạt công nghệ đƣợc nghiên cứu, phát triển triển khai đem lại giá trị vô to lớn cho ngƣời Hệ thống vệ tinh định vị toàn cầu GNSS/GPS (Global Navigation Satellite System) từ đời hỗ trợ ngƣời việc xác định vị trí, hƣớng đi, xây dựng loại đồ, quan trắc phục vụ nhiều mục đích khác Cùng với đó, yêu cầu ngày cao ngƣời sử dụng việc nâng cao tính xác dịch vụ thúc đẩy nhiều công nghệ đời: nhƣ định vị tƣ phƣơng pháp định vị vệ tinh GNSS đa ăng-ten, định vị sử dụng hệ thống GNSS lƣỡng tần số; định vị sử dụng thu GPS mems IMU … Chính học viên lựa chọn đề tài “Nghiên cứu định vị tư phương thức định vị vệ tinh GNSS đa anten” Theo đó, học viên xin trình bày vấn đề định vị tƣ GNSS đa ăng-ten, phƣơng thức, thuật tốn q trình định vị tƣ thế, xây dựng chƣơng trình mơ phần mềm Matlab Nội dung luận văn bao gồm chƣơng: Chƣơng 1: Cơ sở lý thuyết Chƣơng 2: Nguyên lý GNSS Chƣơng 3: Xác định mô tƣ GNSS Để hồn thành luận văn này, em xin chân thành cảm ơn thầy giáo PGS.TS Nguyễn Hữu Trung thầy, cô Trƣờng Đại học Bách Khoa Hà Nội nhiệt tình giúp đỡ em suốt trình thực luận văn Tuy cố gắng hết sức, nhƣng thời gian kiến thức cịn hạn chế nên luận văn khơng tránh khỏi sai sót, em mong bổ sung, góp ý thầy cô! Em xin chân thành cảm ơn! Hà Nội, tháng 09 năm 2017 V CHƢƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan luận văn 1.1.1 Tính cấp thiết Hiện hệ thống định vị sử dụng vệ tinh (GNSS) đƣợc ứng dụng nhiều lĩnh vực nhƣ định vị vị trí xác đối tƣợng, sử dụng hàng không vũ trụ, giao thông thông minh, giám sát tốc độ, cảnh báo sóng thần,… Nhờ có phát triển cơng nghệ thông tin với bƣớc tiến mạnh mẽ ngành viễn thơng giúp đơn giản hóa nhiều khó khăn thơng qua hệ thống định vị tồn cầu GPS Cùng với thời gian công nghệ GPS ngày phát triển hồn thiện theo chiều hƣớng xác, hiệu thuận tiện Với mục đích nghiên cứu nhánh phát triển công nghệ GPS lĩnh vực định vị vị trí đối tƣợng đó, tơi đề xuất đƣợc phép nghiên cứu đề tài “Nghiên cứu định vị tư phương thức định vị vệ tinh GNSS đa anten” Ngày nay, không riêng nƣớc phát triển mà nƣớc đà phát triển việc sử dụng hệ thống định vị quan trọng quân sự, dân tất lĩnh vực khác quốc gia Vì vấn đề cấp thiết đặt xây dựng hệ thống giám sát định vị tƣ đối tƣợng để theo dõi cần thiết 1.1.2 Các vấn đề cần giải luận văn Với mục đích thiết kế mơ hình định vị tƣ phƣơng thức định vị vệ tinh GNSS đa ăng-ten việc định vị vị trí đối tƣợng vấn đề cần giải luận văn bao gồm: - Xây dựng, thiết kế giao diện GUI định vị tƣ phần mềm Matlab - Giải nguồn lỗi gây - Phát dịch chuyển cần thiết không giải đƣợc bất định giai đoạn đơn nhƣng giai đoạn đơn khơng đạt đƣợc tỷ lệ thành cơng cao cố gắng tìm kiếm tham số bất định xác - Chiều dài đƣờng sở mà ngắn lỗi góc cao - Giải bất định số nguyên vấn đề phức tạp 1.1.3 Giải pháp Để giải vấn đề đặt luận văn giải pháp đƣợc lựa chọn là: - Tìm hiểu GPS ứng dụng GPS - Tìm hiểu lập trình giao diện GUI cơng cụ Matlab để xây dựng giao diện mô để xác định tƣ GNSS - Sử dụng phép vi sai để giải vấn đề nguồn lỗi hệ thống - Để định vị tƣ cách xác cần giải bất định số nguyên thuật toán LAMBDA 1.2 Tổng quan hệ thống vệ tinh định vị toàn cầu GNSS (GPS) 1.2.1 Giới thiệu GPS (Global Positioning System) - hệ thống định vị tồn cầu, hệ thống xác định vị trí dựa vị trí vệ tinh nhân tạo Trong thời điểm, vị trí mặt đất xác định đƣợc khoảng cách đến ba vệ tinh (tối thiểu) tính đƣợc toạ độ vị trí GPS đƣợc thiết kế quản lý Bộ Quốc phịng Hoa Kỳ, nhƣng phủ Hoa Kỳ cho phép ngƣời sử dụng miễn phí, quốc tịch từ năm 1980, GPS hoạt động điều kiện thời tiết, nơi Trái Đất, 24 ngày GPS hệ dẫn đƣờng dựa mạng lƣới 24 vệ tinh đƣợc đặt quỹ đạo không gian, hoạt động dựa trạm phát tín hiệu vơ tuyến điện Đƣợc biết nhiều hệ thống có tên gọi LORAN (LOng RAnge Navigation) hoạt động dải tần 90-100 KHz chủ yếu dùng cho hàng hải, hay TACAN (Tactical Air Navigation) dùng cho quân đội Mỹ biến thể với độ xác thấp VOR/DME (Very High Frequency Omnidirectional Range/Distance Measuring Equipment) dùng cho hàng không dân dụng Gần nhƣ đồng thời với lúc Mỹ phát triển GPS, Liên Xô phát triển hệ thống tƣơng tự với tên gọi GLONASS Hiện Liên minh châu Âu phát Bƣớc 7: Bƣớc biết đƣợc ƣớc tính đƣờng sở xác định khung thân ăng-ten từ đƣờng sở Sau đó, ƣớc tính tƣ bình phƣơng tối thiểu đƣợc viện dẫn Hình 3.14: Q trình ước tính tư phép bình phương tối thiểu Bƣớc 8: Kết từ phƣơng thức xác định tƣ bình phƣơng tối thiểu đƣợc biểu diễn nhƣ sau: Hình 3.15: Ba tham số tư xác định dựa bình phương tối thiểu tuyến tính 62 Bƣớc 9: Các kết từ ƣớc tính bình phƣơng tối thiểu đƣợc hiển thị hình 07-Aug-2017 17:27:42 Observation data of #1 antenna : C:\AttDet_16_3_2009\AttDet\TestData\Master.06O Observation data of #2 antenna : C:\AttDet_16_3_2009\AttDet\TestData\Slave_1.06O Observation data of #3 antenna : C:\AttDet_16_3_2009\AttDet\TestData\Slave_2.06O Observation data of #4 antenna : C:\AttDet_16_3_2009\AttDet\TestData\Slave_3.06O Ephemerides data : C:\AttDet_16_3_2009\AttDet\TestData\Navigation.06N Common epoch=385 Number of antennas(valid baselines)=4 Smoothing interval=100 (epochs) Elevation mask angle=10 (degree) Result from least squares estimation using CARRIER PHASE At Epoch 2006.10.29 01:44:30.00 -> YAW=51.680 ROLL=26.258 PITCH=-39.098 At Epoch 2006.10.29 01:44:31.00 -> YAW=51.677 ROLL=26.264 PITCH=-39.089 At Epoch 2006.10.29 01:44:32.00 -> YAW=51.677 ROLL=26.260 PITCH=-39.100 At Epoch 2006.10.29 01:44:33.00 -> YAW=51.681 ROLL=26.251 PITCH=-39.093 At Epoch 2006.10.29 01:44:34.00 -> YAW=51.677 ROLL=26.249 PITCH=-39.089 At Epoch 2006.10.29 01:44:35.00 -> YAW=51.681 ROLL=26.265 PITCH=-39.084 At Epoch 2006.10.29 01:44:36.00 -> YAW=51.673 ROLL=26.244 PITCH=-39.084 At Epoch 2006.10.29 01:44:37.00 -> YAW=51.678 ROLL=26.252 PITCH=-39.096 At Epoch 2006.10.29 01:44:38.00 -> YAW=51.673 ROLL=26.257 PITCH=-39.091 At Epoch 2006.10.29 01:44:39.00 -> YAW=51.670 ROLL=26.245 PITCH=-39.088 At Epoch 2006.10.29 01:44:40.00 -> YAW=51.685 ROLL=26.257 PITCH=-39.091 63 At Epoch 2006.10.29 01:44:41.00 -> YAW=51.681 ROLL=26.255 PITCH=-39.088 At Epoch 2006.10.29 01:44:42.00 -> YAW=51.682 ROLL=26.266 PITCH=-39.087 At Epoch 2006.10.29 01:44:43.00 -> YAW=51.687 ROLL=26.274 PITCH=-39.086 At Epoch 2006.10.29 01:44:44.00 -> YAW=51.677 ROLL=26.249 PITCH=-39.108 At Epoch 2006.10.29 01:44:45.00 -> YAW=51.683 ROLL=26.257 PITCH=-39.087 At Epoch 2006.10.29 01:44:46.00 -> YAW=51.674 ROLL=26.262 PITCH=-39.091 At Epoch 2006.10.29 01:44:47.00 -> YAW=51.674 ROLL=26.253 PITCH=-39.098 At Epoch 2006.10.29 01:44:48.00 -> YAW=51.682 ROLL=26.248 PITCH=-39.091 At Epoch 2006.10.29 01:44:49.00 -> YAW=51.679 ROLL=26.264 PITCH=-39.088 Kết luận chƣơng 3: Chƣơng tìm hiểu mơ hình khái niệm để xác định tƣ GNSS, thủ tục để xác định giải pháp bất định dấu phẩy động bất định cố định Thực thi thuật toán, lƣu đồ thuật toán LAMBDA hàm mục tiêu để giải bất định số nguyên chƣơng đƣa Xây dựng chƣơng trình, giao diện mơ phỏng, chạy mơ đƣa kết demo 64 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ĐỀ TÀI Luận văn trình bày hệ thống định vị toàn cầu, nhƣ để định vị tƣ đối tƣợng phƣơng thức định vị GNSS đa ăng-ten Trong chƣơng học viên đƣa định vị sai khác để làm giảm thiểu, hủy bỏ nguồn lỗi ảnh hƣởng đến tín hiệu quan sát Trong chƣơng học viên tìm hiểu số thuật tốn định vị tƣ thế, đặc biệt nghiên cứu thuật toán LAMBDA để giải bất định số nguyên q trình quan sát tín hiệu để xác định tƣ cảu đối tƣợng lập trình mơ phần mềm Matlab Sản phẩm hoàn thành bao gồm 01 luận văn tốt nghiệp, 01 file mô định vị tƣ quan sát mã pha sóng mang Nhìn chung, đề tài hồn thành mục tiêu đề đƣa sơ đồ thuật toán định vị tƣ GNSS đa ăng-ten Bên cạnh kết đạt đƣợc học viên tự thấy luận văn nhiều hạn chế thiếu sót Kiến thức nghiên cứu cịn hạn hẹp nên phần trình bày nội dung vấn đề tìm hiểu thuật tốn định vị tƣ cịn sơ sài Hạn chế luận văn dừng lại việc tìm hiểu, nghiên cứu mơ phần mềm hệ thống định vị tƣ GNSS đa anten dựa vào đo pha sóng mang chƣa thực đƣợc mô phần cứng Trong chƣơng 2, tƣợng đa đƣờng đƣợc nhắc đến nhƣ nguồn lỗi làm giảm tỷ lệ thành công phƣơng pháp phân giải bất định số nguyên làm giảm độ xác ƣớc tính tƣ Chính tốn đặt tìm cách làm giảm thiểu xóa bỏ tƣợng đa đƣờng để có đƣợc tỷ lệ thành cơng cao cho phƣơng pháp phân giải bất định ƣớc tính tƣ Tạo mơ hình mơ phần cứng cho đối tƣợng thực, ví dụ nhƣ UAV-mini với cánh quay 65 TÀI LIỆU THAM KHẢO [1] Agnew, D.C and Larson, K.M (2007), Finding the repeat times of the GPS constellation, Springer [2] A.Ganesh (2015), GPS Principles and Applications, Satish Serial Publishing House [3] Blewitt, G (1997), Basics of the GPS technique: observation equations, Geodetic Applications of GPS, pp 10-54 [4] Dai, Z., Knedlik, S., and Loffeld, O (2008) “A Matlab toolbox for attitude determination with GPS multi-antenna systems” GPS solution Vol.13, no.3, pp.241-248 [5] Giorgi, G., et P J G Teunissen (2010) Carrier phase GNSS attitude determination with the multivariate Constrained LAMBDA method In Aerospace Conference, 2010 IEEE [6] Giorgi, G (2010), The multivariate constraited LAMBDA method for singleepoch, single frequency GNSS-based full attitude determination, Proceeding of ION GNSS 2010 [7] Giorgi, G., P Teunissen, and P Buist (2008), A search and shrink approach for the baseline constrained LAMBDA: experimental results, Proceeding of the International Symposium on GPS/GNSS, pp 797-806 [8] Hofmann-Wellenhof, B., K.Legat, and M.Wieser (2003), Navigation: Principles of Positioning and Guidance [9] John Pike, GPS III Operational Control Segment (OCX) [10] Kaplan, E., and C Hegarty (2006), Understanding GPS: Principles and Applications, 2nd ed., Artech House Publishers, ISBN 1580538940 [11] Misra, P., and P Enge (2006), Global Positioning System: Signals, Measurements and Preformance, 2nd ed., Lincoln, MA: Ganga-Jamuna Press, ISBN 0970954417 66 [12] Monikes, R., J.Wendel and G.Trommer (2005), A modified LAMBDA method for ambiguity resolution in the presence of position domain constraints, Prococeedings of ION GNSS 2005 [13] Ozludemir, M.(2004), The Stochastic Modeling of GPS Observations, Turkish J.Eng.Env.Sci,28, 223-231 [14] Teunissen, P (2002), Integer least-squares, Proc V Hotine-Marussi Symposium and Mathematical Geodesy, Matera, Italy [15] Teunissen, P (2006), The Lambda Method for the GNSS Compass, Artificial Satellites, 41(3), 89-103 [16] Teunissen, P (2000), Adjustment theory: an introduction, Delft Univ.Press, IBS 9040719748 [17] United States Coast Guard General GPS News 9–9–05 [18] Verhagen, Sandra 2005 The GNSS integer ambiguities: estimation and validation [19] Wieser, A.(2007), How important is GNSS observation weighting, Inside GNSS 67 PHỤ LỤC Main code clear all clc ******************************************************************* Constant Definition ******************************************************************* sol=299792458; freq1=1575.42e6; lambda1=sol/(freq1); totalGPSsatellite=32; global mEphTime mEphemerides ******************************************************************* Load Measurement ******************************************************************* load DataSatRecord load RinexNav load ambiguity ******************************************************************* Initialization ******************************************************************* totalepoch=size(mCommonEpoch,1); totalantenna=size(mMeasurement,1); if num_baseline~=0 % Baseline 1-2 1-3 2-3 b12=mBaseline(1,1); b13=mBaseline(2,1); b23=mBaseline(3,1); % Baseline 1-4 2-4 3-4, 1-5 2-5 3-5, 1-6 2-6 3-6 mBaselineAdd=[]; for antid=4:1:totalantenna, mBaselineAdd(antid-3,1:3)= mBaseline(antid,1:3); end else %% if no baseline given, then we consider the first antennas totalantenna=3; 68 end %% some matrix for recording the estimated attitude parameters %% 1st epoch will be deleted mAttitudeRecordDirect=zeros(totalepoch-1,3); mAttitudeRecordLSQMatrix=zeros(totalepoch-1,3); mAttitudeRecordLSQLinear=zeros(totalepoch-1,3); %% Initilize the matrix recording measurement mPhase=zeros(totalantenna,totalGPSsatellite,totalepoch); mCode=zeros(totalantenna,totalGPSsatellite,totalepoch); mCodeSmoothed=zeros(totalantenna,totalGPSsatellite,totalepoch); mSat=zeros(totalantenna,totalGPSsatellite,totalepoch); mSatPos=zeros(totalantenna,totalGPSsatellite,totalepoch,3); vKeySat=zeros(totalepoch,1); ******************************************************************* Data extraction ******************************************************************* %% Extract the measurement and satellite information %% For each matrix including phase , code, and sat visibility: %% 1st dimension : receiver ID( 1~n), No.1 is master antenna %% 2nd dimension: satelite ID (1~totalGPSsatellite of 32) %% 3rd dimension : epoch (1~totalepoch) ******************************************************************* for epoch=1:1:totalepoch, for antid=1:1:totalantenna, %% Satellites visibility 1=visible mSat(antid,1:totalGPSsatellite,epoch)=squeeze(squeeze(mMeasurement(antid,epoc h,1,:))); for k=1:1:totalGPSsatellite, if mSat(antid,k,epoch)==1, mPhase(antid,k,epoch)=mMeasurement(antid,epoch,3,k); mCode(antid,k,epoch)=mMeasurement(antid,epoch,2,k); end end end end ******************************************************************* 69 Smoothing code by carrier phase ******************************************************************* mCodeSmoothed=zeros(totalantenna,totalGPSsatellite,totalepoch); for i=1:1:totalantenna, clear mCodeTemp mRawCode=squeeze(mCode(i,:,:)); mRawPhase=squeeze(mPhase(i,:,:)); mCodeSmoothed(i,:,:)=Smoothing(mRawCode,mRawPhase,smoothing_interval); end ******************************************************************* Single point positioning for master antenna ******************************************************************* waitbar_sp = waitbar(0,'Single point positioning '); vSatClockCor=zeros(1, totalGPSsatellite); mSatPos=zeros(totalantenna,totalepoch,totalGPSsatellite,3); for epoch = 1:1:totalepoch, mSatPosCur=zeros(totalGPSsatellite,3); vCodeCur=zeros(1,totalGPSsatellite); vPhaseCur=zeros(1,totalGPSsatellite); vCodeSmoothedCur=zeros(1,totalGPSsatellite); clear vSatUsed vElevationAngle %% Extract the satellite info and measurement for master antenna vSatIDs=find(squeeze(mSat(1,1:totalGPSsatellite,epoch))~=0); vCodeCur=mCode(1,:,epoch); vPhaseCur=mPhase(1,:,epoch); vCodeSmoothedCur=mCodeSmoothed(1,:,epoch); %% Initialization for the first epoch if epoch==1, vInitPos=[1 1]; receiver_clock=0; vEpheEopchs=zeros(totalGPSsatellite,1); vGroupDelay=zeros(1, totalGPSsatellite); vSatClockCor=zeros(1, totalGPSsatellite); else %% if not the first epoch, the LSQ adjustment starts from the position of last epoch vInitPos(1:3)=mAntXYZAll(1,epoch-1,1:3); end 70 time=mCommonEpoch(epoch); %% Calculate the coordinate of satellites for i=1:1:length(vSatIDs), satid=vSatIDs(i); %% Satellite PRN %% Find a proper ephemerides vEpheEopchs(satid)=SeekEpheEpoch(time,satid); %% Estimate the transit time of GPS signal transit_time=vCodeCur(satid)/sol+vSatClockCor(satid)-receiver_clockvGroupDelay(satid); %% Calculate the satellite position [vSatPosNoRotation ,vSatClockCor(satid),vGroupDelay(satid)]= GetSatPosECEF(satid,vEpheEopchs(satid),time,transit_time ); %% Filter out the satellite with low elevation angle vSatENU= ECEF2ENU(vSatPosNoRotation,vInitPos'); vElevationAngle(i) = atan(vSatENU(3)/norm(vSatENU(1:2)))*180/pi; if (vElevationAngle(i) < maskangle) && (epoch~=1), low_angle_id=satid; %% Delete this satellite from the matrix recording %% satellite PRNs, this satellite will then not be used %% any more in the following parts mSat(1,satid,epoch)=0; continue; %% go to process the next satellite end %% Correct the code data by removing receiver clock error, %% satellite clock error, group delay %% For smoothed and raw code data vCorrectedCodeSmoothed(satid)=vCodeSmoothedCur(satid)receiver_clock*sol+ vSatClockCor(satid)*sol-vGroupDelay(satid)*sol; vCorrectedCode(satid)=vCodeCur(satid)-receiver_clock*sol+ vSatClockCor(satid)*sol-vGroupDelay(satid)*sol; %% Implement the earth rotation to the satellite vSatXYZ=EarthRotation(transit_time,vSatPosNoRotation); %% Save the satellite positions of this epoch for single point posiitoning mSatPosCur(satid,1:3)= vSatXYZ; %% Save the satellite positions for future differential positioning mSatPos(1,epoch,satid,1:3)= vSatXYZ; end %% End of loop for satellites %% Satellites used for the positioning at current epoch vSatUsed=find(squeeze(squeeze(mSat(1,:,epoch)))~=0); %% For master antenna, choose the key satellite for future DGPS %% Key satellite implies the satellite having the highest %% elevation angle herein 71 %% For the post-processing and for the ambiguity resolution, the %% key satellite could also be chosen as the satellite having the %% longest visibility within a specific time span max_elevation=max(vElevationAngle); vKeySat(epoch)=vSatIDs(find(vElevationAngle==max_elevation)); %% Single point positioning using smoothed code data [vAntPos_sm,receiver_clock]=SinglePointGPS(vCorrectedCodeSmoothed,mSatPos Cur,vSatUsed,vInitPos); mAntXYZAll(1,epoch,1:3)=vAntPos_sm; str=sprintf('Single point positioning %2.0f%%%', epoch/totalepoch*100); waitbar(epoch/totalepoch,waitbar_sp,str) end %% End of loop for epochs close (waitbar_sp) ******************************************************************* Differential GPS positioning ******************************************************************* waitbar_DGPS = waitbar(0,'Differential Positioning'); for epoch=1:1:totalepoch, %% Loop for epoch %% ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ %% Get the corresponding data of the master antenna %%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Data of master antenna at this epoch vSatIDMaster=find(squeeze(squeeze(mSat(1,:,epoch)))~=0); vCodeMaster=mCode(1,:,epoch); vPhaseMaster=mPhase(1,:,epoch); vCodeSmoothedMaster=mCodeSmoothed(1,:,epoch); mSatPosMaster=squeeze(mSatPos(1,epoch,:,1:3)); %% Estimated positiong of master antenna from single point positioning vMasterPosition=squeeze(mAntXYZAll(1, epoch,1:3)); for antid=2:1:totalantenna, %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Get the data from slave antenna %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ clear mSlaveSatID vElevationAngle %% Satellite IDs for slave antenna given in a compact format vSatIDSlave=find(squeeze(squeeze(mSat(antid,:,epoch)))~=0); %% Code data of slave antenna (compact) vCodeSlave=mCode(antid,:,epoch); vPhaseSlave=mPhase(antid,:,epoch); vCodeSmoothedSlave=mCodeSmoothed(antid,:,epoch); 72 %% Search for the common satellites of master and this slave antenna vCommonSatID= intersect(vSatIDSlave,vSatIDMaster); satnum_common=length(vCommonSatID); %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Calculate the satellite position for slave antenna %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ for i=1:1:satnum_common, satid=vCommonSatID(i); %% Satellite PRN %% Find a proper ephemerides paragraph time=mCommonEpoch(epoch); %% "Second of the week " of current epoch eph_epoch=SeekEpheEpoch(time,satid); %% "True" distance for master antenna dis_true_master=norm(vMasterPosition-mSatPosMaster(satid,:)'); %% "True" distance for slave antenna dis_true_slave=dis_true_master-vCodeMaster(satid)+vCodeSlave(satid); %% Estimate the transit time of GPS signal transit_time=dis_true_slave/sol; %% Calculate the satellite position [vSatPosNoRotation ,sat_clock_err,sat_group_delay]= GetSatPosECEF(satid,eph_epoch,time,transit_time ); %% Implement the earth rotation to the satellite vSatXYZ=EarthRotation(transit_time,vSatPosNoRotation); %% Satellite position of slave antenna mSatPosSlave(satid,:)=vSatXYZ; end %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Find the data from common satellites to construct baselines %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Get the key satellite ID for the construction of differential %% observation equation key_sat_id=vKeySat(epoch); %% Pick up the common visible satellites for DGPS processing mCommonSatPosSlave=zeros(totalGPSsatellite,3); mCommonSatPosMaster=zeros(totalGPSsatellite,3); mCommonSatPosSlave(vCommonSatID,:)=mSatPosSlave(vCommonSatID,:); mCommonSatPosMaster(vCommonSatID,:)=mSatPosMaster(vCommonSatID,:); %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Get the ambiguity %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vN= mAmbiguity(antid-1,:); %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% DGPS solution 73 %%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vSlavePosition_phase =DGPS_phase(mCommonSatPosMaster,mCommonSatPosSlave,vPhaseMaster, vPhaseSlave, key_sat_id,vCommonSatID,vN,vMasterPosition ); %% Record the slave antenna coordinates and baselines %% for further attitude determination processing mAntXYZAll(antid,epoch,1:3)=vSlavePosition_phase; if num_baseline~=0, %% Calculate the 3D error in the estimated baselines if antid==2, baseline_true=b12; elseif antid==3, baseline_true=b13; elseif antid>3, baseline_true=mBaselineAdd(antid-3,1); end mBaselineEst(epoch,antid)=norm(vSlavePosition_phase-vMasterPosition'); mBaselineErr( epoch,antid )=mBaselineEst(epoch,antid)-baseline_true; end %% Save the local level coordinates of the slave antenna mAntENUAll(antid,epoch,1:3)=ECEF2ENU(vSlavePosition_phase,vMasterPositio n); end str=sprintf('Differential GPS processing %2.0f%%%', epoch/totalepoch*100 ); waitbar(epoch/totalepoch,waitbar_DGPS,str) end %% End DGPS close (waitbar_DGPS) %% Since the results of 1st epoch are always of low quality, we therefore %% delete this value if num_baseline~=0, mBaselineEst(1,:)=[]; mBaselineErr(1,:)=[]; end mAntXYZAll(:,1,:)=[]; mAntENUAll(:,1,:)=[]; totalepoch=totalepoch-1; %% If baselines are identified, then display the baseline error if num_baseline~=0, %% Show baselines errors for antid=2:1:totalantenna, 74 vBaselineErr=mBaselineErr(:,antid); title_str=sprintf('Estimated baseline 3D error between antenna and %d',antid); DisplayBaselineErr(vBaselineErr,title_str); end end %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Attitude computation by LSQ %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% ~~~~~ Step 1: Calculate the antenna body frame ~~~~~ mAntBody=GetBodyCoordinates(b12,b13,b23,mBaselineAdd); %% Knowing only the magnitude of baselines we can not specify the Z value %% of the antenna body frame for the antenna 4,5,6 We should employ the %% calculated attitude parameters and the local level coordinate to derive %% the estimated antenna body frame The estimated antenna body frame will %% help the determination of the Z value if totalantenna>=4, %% Choose the first 50 epoch to calculate the antenna body frame based on %% the attitude parameters obtained from the direct computation if totalepoch>50, testepoch=50; else testepoch=totalepoch; end %% Now get the sign of the Z value in the antenna body frame by using the %% relationship: Body Frame=Rotation matrix* Local level frame, where the %% rotation matrix is obtained from the attitude parameters based on the %% direct attitude computation for epoch=1:1:testepoch, mAntLocal =squeeze(mAntENUAll(:,epoch,1:3)); mR=GetCombinedRotationMatrix(mAttitudeRecordDirect(epoch,1), mAttitudeRecordDirect(epoch,2),mAttitudeRecordDirect(epoch,3)); mBodyTemp=(mR*mAntLocal')'; for i=4:1:totalantenna, mSign(epoch,i)=mBodyTemp(i,3)/abs(mBodyTemp(i,3)); end end vSumSign=sum(mSign); %% If 80% of the Z values are of the same sign, we then consider it as the %% correct sign Otherwise the user has to specify the sign(s) for antid=4:1:totalantenna, if abs(vSumSign(antid)/testepoch)>0.8, sign_z=vSumSign(antid)/abs(vSumSign(antid)); mAntBody(antid,3)=abs(mAntBody(antid,3))*sign_z; 75 else str=sprintf('Can not determine the Z value of antenna body frame of antenna %d, use default value instead',antid); msgbox(str); end end end %% ~~~~~ Step 2: Start attitude calculation LSQ ~~~~~ waitbar_attitude2 = waitbar(0,'Attitude determination'); for epoch=1:1:totalepoch, %% Local level frame for slave antennas mAntLocal =squeeze(mAntENUAll(:,epoch,1:3)); %% Attitude determination by applying LSQ [yaw_deg_lsq,roll_deg_lsq,pitch_deg_lsq]=AD_LSQ(mAntLocal ,mAntBody ,0,0,0); %% Save the data mAttitudeRecordLSQLinear(epoch,1:3)=[yaw_deg_lsq roll_deg_lsq pitch_deg_lsq]; str=sprintf('Least squares attitude determination %2.0f%%%', epoch/totalepoch*100); waitbar(epoch/totalepoch,waitbar_attitude2,str) end %% close (waitbar_attitude2) DrawAttitudeFigure(mAttitudeRecordLSQLinear,'Attitude parameters based on linearized least squares adjustment') SaveResultInFile(mAttitudeRecordLSQLinear,mEpochStr, 'Result from least squares estimation using CARRIER PHASE','Results.txt') type('results.txt'); 76 ... nhƣ định vị tƣ phƣơng pháp định vị vệ tinh GNSS đa ăng-ten, định vị sử dụng hệ thống GNSS lƣỡng tần số; định vị sử dụng thu GPS mems IMU … Chính học viên lựa chọn đề tài ? ?Nghiên cứu định vị tư phương. .. đƣợc phép nghiên cứu đề tài ? ?Nghiên cứu định vị tư phương thức định vị vệ tinh GNSS đa anten? ?? Ngày nay, không riêng nƣớc phát triển mà nƣớc đà phát triển việc sử dụng hệ thống định vị quan trọng... ? ?Nghiên cứu định vị tư phương thức định vị vệ tinh GNSS đa anten? ?? Theo đó, học viên xin trình bày vấn đề định vị tƣ GNSS đa ăng-ten, phƣơng thức, thuật toán trình định vị tƣ thế, xây dựng chƣơng trình

Ngày đăng: 28/02/2021, 08:03

Tài liệu cùng người dùng

Tài liệu liên quan