DOI QR코드

DOI QR Code

Design and Implementation of SDR-based Multi-Constellation Multi-Frequency Real-Time A-GNSS Receiver Utilizing GPGPU

  • Yoo, Won Jae (Department of Electronics and Information Engineering, Korea Aerospace University) ;
  • Kim, Lawoo (Department of Electronics and Information Engineering, Korea Aerospace University) ;
  • Lee, Yu Dam (Department of Electronics and Information Engineering, Korea Aerospace University) ;
  • Lee, Taek Geun (Department of Electronics and Information Engineering, Korea Aerospace University) ;
  • Lee, Hyung Keun (Department of Electronics and Information Engineering, Korea Aerospace University)
  • Received : 2021.09.03
  • Accepted : 2021.10.28
  • Published : 2021.12.15

Abstract

Due to the Global Navigation Satellite System (GNSS) modernization, recently launched GNSS satellites transmit signals at various frequency bands such as L1, L2 and L5. Considering the Korean Positioning System (KPS) signal and other GNSS augmentation signals in the future, there is a high probability of applying more complex communication techniques to the new GNSS signals. For the reason, GNSS receivers based on flexible Software Defined Radio (SDR) concept needs to be developed to evaluate various experimental communication techniques by accessing each signal processing module in detail. This paper proposes a novel SDR-based A-GNSS receiver capable of processing multi-GNSS/RNSS signals at multi-frequency bands. Due to the modular structure, the proposed receiver has high flexibility and expandability. For real-time implementation, A-GNSS server software is designed to provide immediate delivery of satellite ephemeris data on demand. Due to the sampling bandwidth limitation of RF front-ends, multiple SDRs are considered to process the multi-GNSS/RNSS multi-frequency signals simultaneously. To avoid the overflow problem of sampled RF data, an efficient memory buffer management strategy was considered. To collect and process the multi-GNSS/RNSS multi-frequency signals in real-time, the proposed SDR A-GNSS receiver utilizes multiple threads implemented on a CPU and multiple NVIDIA CUDA GPGPUs for parallel processing. To evaluate the performance of the proposed SDR A-GNSS receiver, several experiments were performed with field collected data. By the experiments, it was shown that A-GNSS requirements can be satisfied sufficiently utilizing only milliseconds samples. The continuous signal tracking performance was also confirmed with the hundreds of milliseconds data for multi-GNSS/RNSS multi-frequency signals and with the ten-seconds data for multi-GNSS/RNSS single-frequency signals.

Keywords

1. 서론

현재 전세계적으로 다양한 전역위성항법시스템 (Global Navigation Satellite System; GNSS)을 포함한 지역위성항법시스템 (Regional Navigation Satellite System; RNSS)들이 운용 되고 있다. 이들 중 지구 전역 어디에서나 운용 가능한 GNSS는 미국에서 운용하는 Global Positioning System (GPS), 러시아에서 운용하는 GLObal NAvigation Satellite System (GLONASS), 유럽 연합에서 운용하는 Galileo, 중국에서 운용하는 BeiDou가 있다. 지구 전역에서 관측 가능한 GNSS와는 달리 특정 지역만을 서비스 대상으로 하는 RNSS로는 일본에서 운용 중인 Quasi-Zenith Satellite System (QZSS)와 인도에서 운용 중인 Indian Regional Navigation Satellite System (IRNSS)가 있다. 또한, 특정 지역 내의 GNSS 신호들을 보강하기 위한 목적으로 위성기반 오차 보정 시스템인 Satellite-Based Augmentation System (SBAS)이 운용되고 있다. 우리나라에서도 2023년 항공용 서비스 제공을 목표로 현재 개발 진행 중에 있는 한국형 위성항법보정시스템인 Korea Augmentation Satellite System (KASS)와 더불어 2035년 서비스 시작을 목표로 하는 자체 RNSS 한국형 위성항법시스템 (Korean Positioning System; KPS)을 개발 예정 중에 있다 (Kim et al. 2020, Jeong et al. 2021).

위와 같이 다양한 GNSS와 RNSS들은 약 1~2 GHz 사이의 L 밴드 주파수 대역과 멀지 않은 미래에 적극적인 활용이 예상되는 2 GHz 이상의 S 밴드를 통해 위성 천체력 데이터와 각종 보정 정보가 포함된 각 위성의 Pseudo Random Noise (PRN) 코드를 지상으로부터 최소 약 20,000 km 상공에 위치한 항법 위성에서 지상으로 송출한다. 항법 신호를 송출하는 과정으로는, 2진화 생성된 항법 데이터에 디지털 확산 신호인 칩 코드를 확산 변조 기법 (Direct Sequence Spread Spectrum)으로 결합하여 넓은 대역폭으로 송출하고 있다 (Kaplan & Hegarty 2017). 송출되는 항법 신호들은 목적에 따라 민간에 공개되어 사용 가능한 Open Service (OS), 고성능과 높은 신뢰도/연속성을 가지지만 정부로부터 허가가 요구되는 Public Regulated Service 및 응급 및 보안 서비스 등을 위한 Search and Rescue Service 및 Safety-of Life Service 등이 있다 (Bartolomé et al. 2015). 이 중 누구에게나 자유롭게 제공 중인 민간용 OS 신호는 약 1.5~1.6 GHz의 L1 주파수 대역뿐만 아니라 약 1.2 GHz의 L2 주파수 대역, 1.1~1.2 GHz의 L5 주파수 대역 이외에도 최근 GNSS 및 RNSS들의 현대화로 인해 1.3 GHz 부근의 L3 및 L6 대역으로도 다양하게 송출되고 있다 (Strode & Groves 2016, Kaplan & Hegarty 2017).

다양한 주파수 대역으로 송출되는 항법 신호들은 각기 다른 코드 및 변조 기법들에 의해 변환되는데 (Kaplan & Hegarty 2017), 이들을 처리하기 위하여 현재 활용되고 있는 대다수의 하드웨어 항법용 수신기들은 협대역 RF Front-end를 다수 사용하여 각각 한 개 혹은 두 종류의 항법 신호만 획득하도록 하는 방식을 택하고 있다. 하드웨어 항법 수신기는 다수의 RF Front-end를 사용하므로 다소 복잡한 구조를 가지며 수신기의 단가 또한 매우 높아지게 된다 (Idrees & Butt 2018). 더불어, 추후에 지속적으로 개발이 예상되는 새로운 주파수 대역의 신호 처리가 어려울 수도 있다. 하드웨어 기반 수신기의 유연하지 못한 특성을 해결하기 위한 방안으로 위해 Software Defined Radio (SDR) 기반의 소프트웨어 수신기에 대한 연구가 활발히 이루어지고 있다. SDR 기반 GNSS 수신기는 중심 주파수와 대역폭을 사용자의 요구에 따라 조정 가능하며, 신호 변조 기법과 재밍 탐지 등을 위하여 신호처리 구조를 유연하게 변경할 수 있고, 다양하고 상이한 항법 신호를 소프트웨어로 동시에 처리할 수 있다는 장점을 가진다 (Won et al. 2006, Arslan 2007, Ulversoy 2010).

GNSS 위성들은 최소 약 20,000 km 이상의 고도에 배치되어 있으며 위성에서 지상으로 송출되는 전력이 수십 W에 지나지 않기 때문에 지상의 사용자는 휴대전화 최소 수신 전력의 1/300인 약 -160 dBW 정도의 감도로 GNSS 신호를 수신하게 된다. 이와 같이 낮은 감도로 수신되는 GNSS 신호를 획득하기 위하여 각종 증폭기와 필터가 활용된다. 신호 획득 이후에는 상관기 측정치인 코드 위상과 도플러를 고정 루프들에 입력함으로써 GNSS 신호를 지속적으로 추적하게 된다 (Misra & Enge 2006, Kaplan & Hegarty 2017). 신호를 추적하여 비트 동기, 프레임 동기가 완료된 이후에는 항법메시지의 해독이 시작되며, 항법메시지의 해독이 완료되면 GNSS 위성과 사용자 간 거리를 정확히 알아낼 수 있게 된다. 연속적이고 지속적으로 사용자의 위치를 알아내기 위해서 수신기는 GNSS 신호에 대한 추적을 유지해야 하지만 이를 위해서는 전력 소모가 큰 단점이 있다 (Lin et al. 2017).

이와는 별도로, 초고층 빌딩들이 밀집한 도심 지역 또는 실내 환경에서는 GNSS 신호가 직접 도달할 수 없거나 신호 세기가 미약해서 건물 내부에서 탐지되지 못할 뿐만 아니라 탐지되더라도 신호의 품질이 매우 떨어진다. 이러한 신호 난수신 환경에서 GNSS 신호 세기가 급격히 떨어지는 원인으로는 위성으로부터 송출된 신호가 사용자로 전달되는 과정에서 주변의 건물 또는 장애물 등에 의해 반사되어 다중 경로 오차의 형태로 신호 세기가 감소하는 경우와 신호 전달 과정 중 콘크리트, 나무, 벽 등을 통과하는 과정에서 발생하는 신호 감쇄의 경우와 재밍과 같은 의도적인 전파 교란을 통해 신호 세기가 감쇄되는 경우로 나눌 수 있다.

이러한 난수신 환경에서도 외부 네트워크로부터 각종 보조 정보와 보정 정보 등을 제공받아서 GNSS 수신기의 초기 수신 속도를 향상시키기 위한 Assisted GNSS (A-GNSS) 기술이 있다 (van Diggelen 2009, Gong 2011). A-GNSS는 GNSS 신호를 사용하는 스마트폰 또는 수신기에서 측위 시에 무선 이동통신 망 또는 별도로 구성된 기준국 네트워크 서버로부터 보조 정보를 제공받아 신속히 사용자의 위치 파악이 가능한 기술이다. 각종 단말기를 초기 구동하여 첫 번째 사용자 위치해를 산출하는 데 걸리는 시간을 Time To First Fix (TTFF)라고 하는데 A-GNSS는 TTFF를 일반적으로 Cold start로 작동되는 Standalone GNSS 수신기에 비해 급격히 감소시킬 수 있다. 미국의 Federal Communications Commissions에서 제정된 긴급 구조 서비스의 정확도 요구 조건으로는 네트워크 기반일 경우 수평 위치오차가 1 \(\sigma\) (68%) 일 때 100 m, 2 \(\sigma\) (95%) 일 때 300 m의 정확도를 가져야 하며, A-GNSS를 포함한 모바일 기반에서는 수평 위치오차가 1 \(\sigma\) (68%) 일 때 50 m, 2 \(\sigma\) (95%) 일 때 150 m의 정확도를 가지도록 요구하고 있으며 TTFF 요구 조건은 20초 이내로 요구하고 있다 (Hatfield 2003).

본 논문에서는 현재 전세계적으로 운용하는 모든 L 밴드 주파수 대역의 내 GNSS 및 RNSS 신호들을 다수의 SDR 장비를 통해 수집하여 가용성 극대화 및 전력 소모 최소화가 가능한 SDR 기반의 A-GNSS를 설계하고 유연성과 확장성 그리고 이식성을 고려하여 C/C++ 언어로 구현한 내용을 다루고 있다. 서버와 사용자로 각각 구성된 SDR A-GNSS는 서버에서 사용자로 시간, 대략적 위치, 개략천체력 (almanac) 등과 같은 일반적인 A-GNSS에서의 보조 정보와는 달리 천체력 데이터가 포함된 Binary 형태를 가지는 BINary EXchange (BINEX) 포맷의 항법메시지를 온라인으로 제공한다. 사용자는 제공받은 항법 메시지를 해독하여 SDR로부터 획득되는 기저대역 샘플들을 동시에 병렬처리하기 위한 다수의 채널을 할당 후 사용자 측에서 위치 해를 계산하는 Mobile Station Based (MS-Based) A-GNSS 방식으로 설계 및 구동 된다.

본 논문에서 제안된 수신기는 SDR 고유의 유연한 확장성을 가지므로 향후 KPS를 포함한 다양한 추가 신호에 대해서도 신속하게 대처가 가능할 것으로 판단된다.

2. 개략 시간 측위

2.1 코드 위상 측정치에 의한 개략 시간 측위

GNSS 수신기에서 신호 추적이 수반되지 않는 경우 위성으로부터 수신되는 항법메시지에 의한 GNSS 시각 동기가 수행되지 못한다. 이 경우, 내부에 탑재한 Local oscillator에서 수신기에게 제공하게 되는 시간을 개략 시간 (Coarse Time)이라고 하며 개략 시간을 통해 사용자의 위치해를 산출하는 기법을 개략 시간 측위 기법 (Coarse-Time Positioning) 또는 snapshot positioning이라고 한다. 개략 시간 측위 기법은 매우 짧은 ms 단위의 신호만으로 획득되는 측정치들을 통해 A-GNSS 수신기의 신속 위치해 산출 또는 초기 구동에서 매우 유용하게 사용될 수 있다. 개략 시간을 활용할 경우 신호 획득에만 의존하여 획득되는 코드 위상과 도플러를 통해 이를 의사거리 측정치로 재구성하는 과정이 필수적으로 요구된다. 코드 위상으로부터 의사거리를 재구성하기 위해 정수 값의 코드 반복 횟수가 반드시 요구되는 데, 아무 정보가 없는 사용자 입장에서는 반복 횟수를 모르기 때문에 정수 모호성 문제 (integer ambiguity problem)가 발생한다 (van Diggelen 2009, Akopian & Syrjarinne 2009).

\(\hat{\rho}^j(t)=n^j\cdot l_c+r_{cp}^j\)                                                                                          (1)

여기에서 \(t\)는 현재 시간, \(\hat{\rho}^j(t)\)는 현재 시간에서 j번째 위성의 재구성된 m 단위의 의사거리, \(n^j\)는 정수 형태의 코드 반복 횟수, \(l_c\)는 코드의 한 반복 주기에 따른 m 단위의 거리 값, \(r_{cp}^j\)는 측정된 코드 위상을 m 단위의 거리로 변환한 값이다. 코드 반복 횟수를 계산하기 위해 사용자의 초기 위치, 초기 시간 및 이에 의한 위성 위치와 같은 사전 정보가 필요하다. 코드 반복 횟수를 정확히 계산 해내기 위해 실제 사용자의 참 위치로부터 약 100 km 이내의 사용자의 초기 위치가 필요하다. 정수 모호성 문제를 최고도의 위성을 기준으로 하여 사용자 초기 위치와 위성 위치로부터 해당 최고도 위성의 코드 반복 횟수를 계산해낸 뒤, 해당 위성의 코드 위상과 타 위성들의 코드 위상을 기반으로 타 위성들의 코드 반복 횟수를 식 (2)와 같이 해결 가능하다 (van Diggelen 2009).

\(n^j={\rm round} \left(n^1+\left({r_{cp}^1\over l_C} -{r_{cp}^j \over l_C}\right)+(r ̂^j-b_s^j )-(r ̂^1-b_s^1 ) \right)\)                                           (2)

여기에서 \(\hat{r}^1\)\(\hat{r}^j\)는 각각 최고도 위성 (j=1)과 j번째 위성과 사용자 초기 위치 사이의 의사거리 추정 값이며, \(b_s^j\)\(b_s^1\)는 각각 최고도 위성 (j=1)과 j 번째 위성의 위성 시계 오차 성분이다. 식 (2)에서 계산된 코드 반복 횟수 \(n^j\)를 통해 식 (1)에서 \(\hat{\rho}^j(t)\)를 계산 가능하게 된다.

지속적인 신호 추적을 수행하지 못하여 개략 시간을 신호 수신 시간으로 했을 때에 시간 오차가 의사거리 측정치인 재구성된 의사거리에 영향을 미치는 수신기 시계 오차 성분과 부정확한 시간 오차로 인해 위성 위치를 계산하는 데 포함되는 개략 시간 오차 성분으로, 측정치와 추정치에 영향을 미치는 두 가지의 시간 오차로 나뉘어 고려할 수 있다 (Yoo et al. 2020, Morton et al. 2021). 첫 번째인 수신기 시계 오차는 수신기 내에서 모든 채널에 동일하게 측정치에 영향을 미치는 성분이다. 일반적인 저가형의 GNSS 수신기들은 비용 절감을 위해 고성능의 원자시계를 탑재하지 않고 Crystal Oscillator 혹은 Temperature Compensated Crystal Oscillator를 탑재하므로, GNSS 신호를 추적하여 위성과의 정밀 시각 동기가 수행되지 않을 경우 시각 정확도가 급격히 감소될 수 있다. 위와 같이 정밀 시각 동기의 부재로 인하여 발생하는 개략 시간 \(t_c\)와 현재 수신 시간의 참 값인 \(t\)와의 차이를 개략 시간 오차 \(b_c\)로 식 (3)과 같이 나타낼 수 있다.

\(b_c=t-t_c\)                                                                                          (3)

개략 시간인 \(t_c\)를 위성 위치를 계산하는데, 개략 시간 오차 \(b_c\)에 따라 수 km 이상의 위성 위치 오차를 야기할 수 있다. 개략 시간을 위성 위치 계산에 활용했을 때의 GNSS 위성과 수신기 간의 기하학적 거리는 Fig. 1과 같이 나타낼 수 있다.

f1.png 이미지
Fig. 1. Comparison of geometric distances depending on coarse time error (Yoo et al. 2020).

Fig. 1에서, 현재 수신 시간과 개략 시간에서의 j번째 위성에 대한 기하학적 거리는 식 (4)의 관계를 가진다.

\(r^j(t)\cong r^j(t_c)-b_c\cdot \nu​^j\)                                                                               (4)

여기서 \(r^j(t)\)\(r^j(t_c)\)는 각각 현재 수신 시간과 개략 시간에서의 기하학적 거리를 나타내며, \(\{\nu​^j\cong \nu​^j(t_c)\}_{j=1,2,\cdots,N}\)는 총 N개의 위성 중 j번째 위성과의 거리 변화율을 나타낸다. 식 (4)의 재 구성된 의사거리는 식 (5)와 같이 분해하여 나타낼 수 있다.

\(\tilde{\rho}^j(t)=n^j\cdot l_{C/A}+r_{cp}^j\)                                                                                         
\(= r^j(t)-b_s^j(t)+b_r+\varepsilon^j\)                                                                        
\(=||\mathbf{X_s^j}(t)-\mathbf{X_u}||-b_s^j(t)+b_s+\varepsilon^j\)                                               (5)

여기에서, \(b_r\)은 수신기 시계 오차, \(\varepsilon^j\)는 전리층 및 대류권 지연 등을 포함한 측정치 오차, \(\mathbf{X_s^j}(t)\)는 위성 위치 벡터, \(\mathbf{X_u}\)는 사용자 수신기 위치 벡터이다. 개략 시간에서 추정된 의사거리는 사용자와 위성 위치에 대한 초기 위치에 의해 계산된다. 식 (4)로부터 현재 수신 시간과 개략 시간에서의 기하학적 거리 차이는 개략 시간 오차와 거리 변화율의 곱으로 나타낼 수 있기 때문에 이와 마찬가지로 현재 수신 시간과 개략 시간에서 추정된 의사거리는 식 (6)과 같이 나타낼 수 있다 (Yoo et al. 2020).

\(\hat{\rho}^j(t)\cong \hat{\rho}^j(t_c) -b_c \cdot \nu^j\)                                                                                                                 
\(=\hat{\rho}^j(t_c+\hat{b}_c)-(b_c-\hat{b}_c) \cdot \nu^j\)                                                                                        
\(=\hat{r}^j(t_c+\hat{b}_c)-b_s(t_c+\hat{b}_c)+\hat{b}_r-(b_c-\hat{b}_c) \cdot \nu^j\)                                                  
\(=||\mathbf{\hat{X}_s^j}(t_c+\hat{b_c})-\mathbf{\hat{X}_u}||-b_s(t_c+\hat{b}_c)+\hat{b}_r-(b_c-\hat{b}_c) \cdot \nu^j\)                         (6)

여기에서 \(\hat{\rho}^j(t)\)\(\hat{\rho}^j(t_c)\)는 각각 현재 수신 시간과 개략 시간에서 추정된 의사거리이고, \(\hat{b_c}\)는 개략 시간 오차 추정 값, \(\hat{b_r}\)는 수신기 시계 오차 추정 값, \(t_c+\hat{b_c}=\hat{t}\)는 현재 수신 시간 추정 값, \(\mathbf{\hat{X}_s^j}(t_c+\hat{b_c})\)는 추정된 현재 시간에서의 위성 위치 벡터, 그리고 \(\mathbf{\hat{X}_u}\)는 추정된 사용자의 위치 벡터이다. 개략 시간 측위 기법의 전체적인 기하학적 구조를 Fig. 2에 도시하였다.

f2.png 이미지
Fig. 2. Geometric structure for coarse time positioning (Yoo et al. 2020).

재구성된 의사거리와 추정된 의사거리는 각각 식 (5), (6)과 같이 비선형이나, 의사거리의 잔차 형태로 식 (7)과 같이 선형화 할 수 있다 (van Diggelen 2009, Yoo et al. 2020).

\(\mathbf{z}=\boldsymbol{\tilde{\rho}}-\boldsymbol{\hat{\rho}}= \left[ \begin{matrix} -\mathbf{e}^1&1&\nu^1 \\ -\mathbf{e}^2&1&\nu^2 \\\vdots&\vdots&\vdots \\ -\mathbf{e}^N&1&\nu^N \end{matrix} \right] \left[ \begin{matrix} \boldsymbol{\delta}\mathbf{X_u} \\ \delta b_r \\ \delta b_c \end{matrix} \right]+\boldsymbol{\varepsilon}\)                                                   (7)

여기에서, \(\mathbf{z}=\{z^j\}_{j=1,2,\cdots,N}\)는 모든 위성에 대한 의사거리 잔차 벡터, \(\tilde{\boldsymbol{\rho}}\)는 재구성된 의사거리 벡터, \(\hat{\boldsymbol{\rho}}\)는 추정된 의사거리 벡터이며, \(\mathbf{e}^j\)는 사용자 초기 위치에서 j번째 위성으로의 시선각 (Line-Of-Sight) 벡터, \(\boldsymbol{\delta}\mathbf{X_u}=[\delta x_u ~~\delta y_u ~~\delta z_u]^T\)는 수신기 위치 오차 벡터, \(\delta b_r\cong b_r-\hat{b}_r\)는 수신기 시계 오차 추정 오차, \(\delta b_c\cong b_c-\hat{b}_c\)는 개략 시간 추정 오차, \(\boldsymbol{\varepsilon}\)는 측정치 오차 벡터이다.

식 (7)로부터 사용자 위치와 함께 수신기 시계 오차와 개략 시간 오차의 5개의 추정 변수는 선형화에 의해 추정이 가능하다. 그러나, 위성의 가속도가 시간에 따라 계속 변화하므로 60 sec가 넘는 개략 시간 오차에서는 큰 오차를 야기하므로 유효하지 않다. 따라서, 약 60 sec 이내의 개략 시간 오차에서만 선형화를 통한 개략 시간 측위가 가능하다 (van Diggelen 2009). 코드 위상을 활용한 개략 시간 측위 기법에 대한 3가지의 제약 조건을 Table 1에 도시하였다.

Table 1. Constraint conditions of coarse time positioning (van Diggelen 2009).

Number Constraint
1
2
3
Initial user position error should be less than tens of kilometers \(||X_u-\hat{X}_u|| \leq 100\) km
Coarse-time error should be less than 60 seconds \(|b_c|\leq 60\) sec
At least 5 visible satellites are Required \(N \geq 5\)

 

2.2 앙각과 C/N0에 의한 가중치 행렬의 구성

앞서 설명된 코드 위상 기반의 개략 시간 측위 기법은 별도의 가중 행렬이 적용되지 않았다. GNSS 신호 획득 과정에서 앙각 (elevation angle)이 낮은 신호일수록 사용자 수신기와의 거리가 멀기 때문에 신호 감도가 낮으며, 신호가 획득되기 보다 어려운 특성을 가지고 있으므로 획득되더라도 측정되는 코드 위상의 오차가 포함되어 있을 확률이 높다. 따라서, 신호 처리 과정에서 계산되는 반송파 대 잡음 밀도 비율인 C/N0와 위성들의 앙각 을 동시에 고려함으로써 가중치를 부여하는 별도의 가중 행렬을 구성할 수 있다. 가중 행렬에는 높은 고도일수록 또한 C/N0가 높을수록 잡음의 분산이 작아지도록 대각 행렬을 구성한다. 이는 앙각에 따라 가중치가 부여되는 sine 함수 기반의 모델과 위성 전체 신호 감도 분포에 대해 가중치를 상이하게 부여하는 기법이 결합된 형태이다 (Tay & Marais 2013, Kim 2015). 따라서, 식 (8)에 의해 계산된 잡음의 분산을 통해 구성할 수 있는 대각 행렬 형태의 가중 행렬 \(\mathbf{W}\)를 식 (9)와 같이 구성할 수 있다.

\(\sigma_i^2=k\times{10^{-0.1×C/N_0} \over \sin^2⁡( el_i)}|_{i=1,2,\cdots,N}\)                                                                         (8)

\(\mathbf{W}= \left[ \begin{matrix} 1\over \sigma_1^2 & 0 & \cdots & \\ 0 & 1\over \sigma_2^2 & & \vdots \\ \vdots & & \ddots & 0 \\ & \dots & 0 & 1\over \sigma_N^2 \end{matrix} \right]\)                                                                          (9)

식 (8)에서 \(k\)는 모델 파라미터로서, 시선각에 따라 다르게 설정이 가능하나 별도의 다중 경로 오차 환경이 아닌 개활지에서는 이를 1로 설정하며, \(el_i\)은 위성의 앙각이며, degree 단위의 값이다. 선형화 된 식 (7)에 대하여 가중치 행렬이 적용된 사용자 위치해는 식 (10)과 같이 추정 가능하다.

\(\mathbf{X_{\rm w}}=(\mathbf{H}^{\rm T} \mathbf{WH})^{-1}\cdot \mathbf{HW\cdot z}\)                                                                     (10)

\(\mathbf{H}= \left[ \begin{matrix} -\mathbf{e}^1&1&\nu^1 \\ -\mathbf{e}^2&1&\nu^2 \\\vdots&\vdots&\vdots \\ -\mathbf{e}^N&1&\nu^N \end{matrix} \right],~~~ \mathbf{X}_{\rm w}=\left[ \begin{matrix} \boldsymbol{\delta}\mathbf{X_{u,w}} \\ \delta b_{r,w} \\ \delta b_{c,w} \end{matrix} \right]\)                                                            

여기에서 \(\boldsymbol{\delta}\mathbf{X_{u,w}}\), \(\delta b_{r,w}\), 그리고 \(\delta b_{c,w}\)는 각각 기존 수신기 위치 오차 벡터, 수신기 시계 추정 오차, 개략 시간 추정 오차로 이루어진 상태 변수의 가중치가 적용된 형태이다.

3. SDR 기반 A-GNSS의 설계

본 논문에서는 현재 전세계적으로 운용하는 모든 L 밴드 주파수 대역의 내 GNSS 및 RNSS 신호들을 다수의 SDR 장비를 통해 수집하여 가용성 극대화 및 전력 소모 최소화가 가능한 SDR 기반의 A-GNSS를 설계 및 구현하였다. 다중 GNSS 및 RNSS/다중 주파수 신호들을 모두 포괄한 SDR 기반의 MS-Based A-GNSS 서버를 활용하여 사용자 위치 해를 획득하는 전반적인 작동 과정을 Fig. 3에 도시하였다.

f3.png 이미지
Fig. 3. Operational configuration of multi-GNSS/multi-frequency MS-based A-GNSS.

3.1 SDR A-GNSS 서버의 설계와 구현

SDR A-GNSS 서버는 자체적으로 GNSS 데이터를 수신 또는 수집하여 온라인으로 SDR-AGNSS 사용자가 접속하게 되면, 현재 방송되어지는 GNSS 천체력 데이터가 포함된 ASCII 형태의 RINEX 포맷, 실시간 항법 메시지가 포함된 Raw Binary 형태의 BINEX 형태, 수신기에서 자체 제공하는 Binary 포맷으로 전달한다. 서버는 사용자의 현재 수신 환경과 근접 지역의 유사한 수신 환경에서 데이터를 수집하여 제공할수록 가시 위성이 동일할 확률이 높아지므로, 사용자 또한 이를 기반으로 획득할 수 있는 GNSS 측정치 개수가 증가하게 된다. 또한, 가급적 최대의 가용성을 위해 GNSS 데이터를 안정적으로 수신할 수 있는 별도의 목적으로도 A-GNSS 서버를 구동하는 것은 도움이 된다.

SDR A-GNSS 서버는 TCP/IP 소켓 프로그래밍을 통해 구현되었으며, 고정된 IP 주소 및 포트번호를 지정하여 서버 소켓을 기 오픈한 뒤에 사용자가 접속을 하기 이전에는 지속적으로 접속 및 보조 정보 전달 요청을 감시 중에 있다가 접속 시에 보조 정보들이 기존에 저장되어 있는 폴더에 접근하여 파일 생성 일자 및 파일 최종 수정 일자 등을 모든 파일에 대하여 검사를 수행한다. 현재의 GNSS 천체력 데이터 보조 정보가 필요하므로 이들 중 사용자가 요구한 포맷으로 가장 최근에 저장된 보조 정보 파일을 서버에 접속한 클라이언트 소켓을 통해 A-GNSS 사용자로 전송하기 시작한다. 전송이 완료된 이후에는 다음 A-GNSS 사용자 언제든지 접속할 수 있도록 대기 상태로 돌아간다. 설계한 SDR A-GNSS 서버 소프트웨어의 전반적인 구동 개형을 Fig. 4에 도시하였다.

f4.png 이미지
Fig. 4. Operational configuration of server software for multi-GNSS/multi-frequency MS-based A-GNSS.

설계된 SDR A-GNSS 서버와 연동하여 끊임없이 BINEX 데이터를 제공해 줄 수신기로 Septentrio 사의 PolaRx5 수신기를 활용하였다. 해당 수신기는 본 논문에서 타겟으로 하는 모든 L 밴드 내의 GNSS 및 RNSS OS 신호를 수신 가능한 기준국용 수신기이다 (Septentrio 2021). 수신기를 동시켜 지속적으로 서버에게 BINEX 데이터를 전송하기 위해서 별도의 configuration 페이지에 접속하여 BINEX 데이터 중 “Record ID: 0x01” 및 “Subrecord ID: 0x41~47” 메시지를 매 15분 마다 수신할 수 있도록 설정하였다. 수신기에서 A-GNSS 서버로 BINEX 데이터를 주기적으로 전송하는 방식은 A-GNSS 서버의 고정 IP 주소로 File Transfer Protocol (FTP) push를 통해 전송하도록 하였다. 실제로 PolaRx5 수신기가 구동되어 작동 중인 모습과 더불어 BINEX 데이터가 설정된 주기의 간격으로 저장되는 화면을 Fig. 5에 도시하였으며 서버로 BINEX 데이터가 주기적으로 전송됨을 확인하였다.

f5.png 이미지
Fig. 5. Screenshot of operational setup for Septentrio PolaRx5 and periodic data logging in BINEX format.

A-GNSS 서버를 오픈하여 A-GNSS 사용자의 접속 대기 및 BINEX 항법 메시지를 전송 기능을 운용하기 위한 별도의 A-GNSS 서버용 소프트웨어를 Visual C++을 통해 구현하였다. 별도의 설정 및 로그 파일을 생성하여 서버의 감시를 가능하도록 하였다. 서버용 소프트웨어는 단일 thread로 구동되며, A-GNSS 사용자가 연결할 때까지 계속 대기 상태로 작동된다. 사용자가 접속하게 되면 대기 상태에서 해제되어 가장 최근에 저장된 BINEX 항법 메시지를 전송한 후 다음 연결을 위해 다시 대기 상태로 전환된다. 구현 및 구축되어 운용 중인 A-GNSS 서버용 소프트웨어의 모습을 Fig. 6에 도시하였다.

f6.png 이미지
Fig. 6. Screenshot of operational setup for SDR A-GNSS server software coded which is constructed in C/C++.

3.2 A-GNSS 사용자 모듈의 설계

SDR A-GNSS 사용자는 구동과 동시에 별도로 구축된 A-GNSS 서버로 접속하여 신호 획득 보조 정보 및 GNSS 천체력 데이터가 포함된 BINEX 형태의 raw 항법 메시지를 전달받은 후 최단 시간 내에 위치해를 산출해낼 수 있어야 한다. 사용자는 수신 받은 BINEX 항법 메시지를 해독하여 천체력 데이터인 Keplerian parameter와 더불어 전리층 지연 오차 보정 관련 변수 또한 획득할 수 있게 하였다. BINEX 해독 수행 중, 어떠한 GNSS 및 PRN의 subframe 데이터인지 여부를 판단 가능하므로 GNSS와 PRN들을 각 채널에 할당한다. 타겟으로 하는 GNSS 선택에 따라 최대 수백 개의 채널이 할당될 수 있으며, 이를 실시간으로 처리하기 위해서는 CPU 만을 사용해서는 처리가 불가능하다. 따라서, 반복 연산에 매우 강점이 있는 GPGPU를 활용함으로써 실시간으로 신호 처리를 가능하게 하였고 신호 처리 결과를 통해 획득되는 측정치들을 활용하여 사용자 위치해를 산출하도록 구현하였다.

SDR A-GNSS 사용자 소프트웨어는 크게 Main thread, Data Grab thread, Channel thread, Processing thread 및 Positioning thread로서 총 5개 파트로 나눌 수 있으며, 각 thread에서의 결과 값 및 상태를 기록할 수 있는 로그 부분이 별도로 존재한다. SDR A-GNSS 사용자는 Ettus Research 사의 USRP N210을 단일 또는 다수 사용하여 신호를 수집하도록 하였다. GPGPU를 활용하여 실시간으로 SDR A-GNSS 사용자의 위치해를 산출하는 소프트웨어의 작동 개형도를 Fig. 7에 도시하였으며, 각 파트의 작동 내용을 순차적으로 설명하였다. 구현된 SDR A-GNSS 사용자 소프트웨어의 실행 모습과 신호 처리 설정 (1), USRP RF 설정 (2), A-GNSS 서버 연결 설정 (3), 소프트웨어 구동 (4)에 대한 각각의 화면을 Fig. 8에 도시하였다.

f7.png 이미지
Fig. 7. Operational configuration of SDR A-GNSS user receiver software utilizing GPGPU.


f8.png 이미지
Fig. 8. Screenshot of setting up SDR A-GNSS user receiver software implemented on GPGPU.

3.2.1 Main thread

Main thread에서는 소프트웨어 실행과 동시에 구동되어 별도로 저장된 설정 파일을 읽어 들인다. 이와 동시에 사용자가 소프트웨어를 구동하였을 때 User Interface를 통해 직접 설정을 수행할 수 있도록 구현하였다.

신호 처리 관련 설정으로는 타겟 신호 선택, 신호 획득 수행 시 동기/비동기 누적 및 시간 관련 선택, GPGPU 병렬 신호 처리 여부, 사용자 위치해를 포함한 전체적인 작동 결과 및 status 기록을 로깅할 지에 대한 부분을 선택할 수 있도록 하였다. USRP RF 관련 설정으로는 몇 개의 USRP를 작동할 지와 각 USRP에서의 타켓 샘플링 주파수 및 중심 주파수, ADC 양자화 수준과 샘플 포맷을 선택 가능하다. 또한, A-GNSS 서버와 연결하는 부분의 설정에서는 서버에서 개방해 놓은 TCP/IP 소켓에 접속할 수 있도록 A-GNSS 서버의 기 알려진 IP 주소 및 포트 번호를 입력 가능하도록 하고 보조 정보 요청 시 BINEX raw 항법 메시지의 요청이 가능하다.

사용자 설정이 완료되면 즉시 A-GNSS 서버와 연결하여 요청한 BINEX raw 항법 메시지를 수신한 후, BINEX 형태의 항법 메시지의 해독을 수행한다. 해독이 정상 수행되면 현재 A-GNSS 서버 주위에 어떤 GNSS와 어떤 PRN에 대한 정보가 있는 지에 대한 판단이 가능하므로 수신기 내부에서는 각 GNSS 및 RNSS들의 PRN을 특정하여 수신하기 위한 Channel thread를 각각 생성하고 동시에 이들에 대한 PRN 코드를 GNSS ICD 기반으로 생성하여 각 채널에 할당한다. 채널에 할당할 때, 할당되는 신호가 어떤 USRP에서 수신되는 샘플을 사용해야 하는지, 해당 USRP의 샘플링 주파수 및 수집 중심 주파수, 해당 PRN 코드의 chipping rate 등이 동시에 전달되고 데이터 획득을 위해 USRP로 동작 관련 설정의 지령이 전달되며, Processing/Positioning thread로 GPGPU 사용 여부와 위치해 출력 주기 등이 전달된다.

3.2.2 Data grab thread

Data grab thread에서는 SDR-AGNSS 사용자가 다수의 SDR 장비를 직접 구동하여 주위의 GNSS 신호들을 샘플링하여 디지털화 된 샘플을 획득하고, 이를 Processing thread로 안정적으로 전달해주는 기능을 하는 역할을 수행한다. SDR A-GNSS 사용자는 USRP로부터 지속적으로 디지털 샘플들을 전달받기 위해 직접 USRP에 접근할 수 있어야 한다. C++ API 또는 Python API를 통해 USRP를 사용자가 직접 원하는 대로 구동하기 위해 USRP Hardware Driver 드라이버를 별도로 설치해야 한다 (Zitouni et al. 2015, USRP 2021).

Main thread에서는 몇 대의 USRP를 사용할 것인지, USRP 장비 주소는 어떻게 되는지, 어떤 샘플링 주파수를 사용할 것인지 및 수집 중심 주파수를 얼마로 할 것인지부터 USRP 내부의 신호 처리 Daughterboard 보드 관련 설정까지의 모든 USRP RF 관련 설정을 수행할 수 있다. USRP 구동 과정에서 Wire format이라고 불리는 양자화 비트 수를 얼마로 해서 디지털화를 수행할지에 대한 부분도 고려해야 하는 데, 연산 부담을 감소시켜 실시간 SDR A-GNSS 구동을 하기 위해 비교적 높은 양자화 잡음이 포함되어 있지만 8 비트로 선택하여 연속적으로 {Quadrature (Q) / Inphase (I)} 형태의 복소 샘플들을 연속적으로 수신하도록 하였다. Wire format이 확정되면 양자화 된 샘플을 실제로 사용자에게 어떠한 포맷으로 변환해서 전송할 것인지에 대한 CPU format 부분도 지정 해야하며, 가장 연산 부담량이 적은 sc16 complex을 선택하였다.

이처럼 USRP N210에서 ADC를 통해 사용자로부터 입력 받은 중간주파수 대역으로 하향 변환되어 사용자로 전송될 샘플 규격까지 지정되었다. USRP N210은 위에서 설정한 “Wire format = sc8” 및 “CPU format = sc16”으로 사용자에게 전송되는 과정에서 다수의 샘플들이 묶여서 하나의 패킷 형태로 전송되며, 전송 단위는 Samples Per Packet (SPP)이다. 기본 설정으로는 200 SPP로 전송되는데 타 USRP 모델에서는 2000 SPP까지 전송 가능한 모델도 있다. USRP N210에서는 최대 10 Gb Ethernet 케이블을 사용해도 위의 설정으로 최대 700 SPP 정도까지 가능했다. 사용자 측에서는 USRP로부터 패킷 형태로 샘플들을 수신 받아 원하는 샘플링 주파수의 1 ms 길이 만큼의 메모리 버퍼들을 미리 선언해 놓고 해당 메모리에 샘플을 순차적으로 저장해 놓는다. 이후, 사용자 측에서 신호 획득에 있어서 사용할 누적 시간만큼의 ms 길이 데이터가 요구되면 1 ms 길이 만큼 저장해 놓은 메모리들을 순차적으로 누적 시간 길이의 메모리에 복사하는 버퍼 시스템으로 USRP에서 실시간으로 수신되는 매우 많은 량의 샘플들을 관리할 수 있도록 하였다. 1 ms 길이의 버퍼들이 SDR A-GNSS 사용자가 설정한 누적 시간 길이의 메모리 버퍼 시간 순서 별 순차적으로 저장되는 모습을 Fig. 9에 도시하였다.

f9.png 이미지
Fig. 9. Configuration of storing sampled packets to a memory buffer with desired data length.

3.2.3 Channel thread

Main thread로부터 생성된 다수의 Channel thread는 각각 GNSS 및 PRN에 대한 정보가 할당된다. 이들은 직접 신호 처리를 수행하지는 않지만 현재 어떤 GNSS와 PRN을 타겟으로 신호를 수신하려는 지 혹은 현재 어떤 신호 처리 state에 있는 지를 확인하기 위한 목적으로 활용된다. 신호 탐색 및 획득을 Cold, Initial, Coarse, Fine의 총 4개 state로 구분 지었으며, 신호 탐색 및 획득 state transition diagram을 Fig. 10과 같이 도시하였다.

f10.png 이미지
Fig. 10. State transition diagram of signal acquisition and tracking in each channel.

우선 SDR A-GNSS 사용자가 초기 구동 시에는 A-GNSS 서버로부터 수신되는 BINEX 항법 메시지를 통해 채널에는 GNSS 와 PRN이 할당된다. 대략적인 도플러 주파수를 계산 가능하다면 주파수 탐색 범위를 대폭 감소시킬 수 있지만 사용자 초기 위치 정보는 모르는 상태이고, USRP에서 데이터를 획득한 시간과 천체력 데이터 정보만 알고 있으므로 USRP 내 frequency offset까지 고려했을 때 어느 주파수 빈에서 탐색이 될 지 전혀 알 수 없는 상태이다. 따라서, 모든 주파수 빈에 대한 FFT 상관을 수행하는 단계를 Cold state (1)로 명명하였다. 해당 state에서는 주파수 빈 간격에 따라 수백 개에 달하는 탐색 영역 개수가 생길 수 있기 때문에 신호 처리 과정 중 많은 시간이 소요되는 state이다.

만약, Cold state에서 신호가 획득이 되었다면 바로 Coarse state (3) 단계로 천이한다. Cold state들에서 획득된 도플러 측정치를 통해 수~수십 km 이내의 사용자 초기 위치와 frequency offset을 추정 가능하다. 추정된 사용자 초기 위치와 천체력 데이터들을 통해 GNSS 위성들의 앙각을 계산 가능하다. 반면, 사용자 초기 위치와 실제 위치와는 큰 차이가 있으므로 계산된 앙각이 정확하다고 볼 수 없으나 천정 부근 혹은 50도 이상의 앙각을 가지는 신호는 사용자 초기 위치 및 사용자 실제 위치에서도 측정이 가능할 것이다.

Cold state에서 신호가 획득이 되지 않았으나 앙각 제한이 되지 않은 PRN에 대해서는 도플러 추정 값과 frequency offset을 통한 주파수 빈 개수의 대폭 감소가 가능하다. 이와 같이 GNSS 신호가 획득되지 않았으나 사용자 초기 위치 및 frequency offset 추정 값에 의하여 주파수 빈의 탐색 범위가 대폭 감소된 단계를 Initial state (2)로 명명하였다. Channel thread에 할당된 PRN 일지라도 앙각이 제한되었다면 해당 채널의 작동을 중지시킨 후, 앙각을 지속 감시한다.

Cold 및 Initial state에서 GNSS 신호가 획득이 된 경우, Coarse state (3)으로 state transition이 이루어지는데 해당 state에서는 실제 측정된 도플러를 기준으로 주파수 빈 간격을 감소시켜서 해상도를 증가시키고, 주파수 빈 개수를 감소시켜 전체적으로 동작 시간 감소와 신호 획득 감도를 증가시키는 state이다. 이후, Coarse state에서 신호 획득을 수행하여 높은 감도가 측정되면 Fine state (4)로 state transition 되어 보다 도플러 주파수의 해상도를 증가시키고 동작 시간이 감소된다. 만약 Fine state로 state transition 되었다가 GNSS 신호 획득 감도가 낮아진다면 다시 Coarse state로 돌아와서 이전의 신호 획득 정보를 기반으로 주파수 빈을 할당한다. 또한, 만약 USRP에서 overflow가 발생하여 작동이 멈추는 경우에는 모든 채널 전부 Cold state로 전환되도록 설계하였다.

3.2.4 Processing/Positioning thread

Processing thread에서는 각 Channel thread에서 타겟으로 하는 GNSS/RNSS의 데이터 채널 및 파일럿 채널의 PRN 코드 및 샘플링 주파수, 하향 변환된 주파수, 주파수 탐색 범위 등을 입력 받아 실제 신호 획득이 실시간으로 수행되는 부분이다.

SDR 기반의 신호 상관이 수행되나 FFT 기반의 상관기는 한 주파수 빈에 대하여 FFT를 반복적으로 총 주파수 빈 개수 만큼을 반복해야 하므로, 직렬 처리에 최적화된 소수의 코어로 구동되는 CPU로만 신호 처리를 수행하게 되면 굉장히 많은 시간이 소요된다. 따라서, 실시간에서 신호 획득부를 처리하기 위해서는 CPU에 비해 수백 배 혹은 약 천 배의 코어 개수를 가지어 특화된 연산을 병렬 처리로 매우 신속하게 처리 가능한 GPGPU를 도입하게 되었다 (Owens et al. 2008, Asano et al. 2009).

SDR A-GNSS 수신기에 탑재될 GPGPU는 NVIDIA 사의 GPGPU에서 수행할 수 있도록 CUDA 프로그래밍을 통해 신호 획득부가 구현되었다. GPGPU를 활용해서 FFT 뿐만 아니라 시간 축에서는 상관 (correlation)이지만 주파수 축에서는 곱 (multiplication)인 특성을 활용해서 모든 샘플들에 대한 반복 연산 또한 GPGPU에서 처리 가능하도록 CUDA를 활용하였으며, 코드 위상과 도플러 측정치를 A-GNSS 사용자 위치해 산출을 위하여 Positioning thread로 전달하도록 설계하였다. GPGPU를 기반으로 구현된 신호 획득부를 Fig. 11에 도시하였다.

f11.png 이미지
Fig. 11. Signal acquisition module by GPGPU-based parallel processing.

Positioning thread는 Processing thread에서 측정된 코드 위상 및 도플러와 Data grab thread에서 측정된 데이터 수집 시간인 개략 시간을 통해 A-GNSS 사용자의 위치를 추정하게 된다. 코드 위상을 거리 측정치로 환산한 의사거리에는 위성 시계 오차뿐만 아니라 전리층 및 대류권 지연 오차가 포함되어 있다. Positioning thread는 Main thread로부터 위성 시계 오차 및 전리층 지연 오차 보정을 위한 변수들을 전달받는다. 데이터 수집 시간에서의 위성 시계 오차를 계산할 수 있고 Klobuchar 모델을 사용하여 전리층 지연 오차 값을 계산하며, Saastamoinen 모델을 사용하여 대류권 지연 오차를 계산하여 이들을 의사거리에 보정해준다 (Saastamoinen 1972, Klobuchar 1987).

신호 획득 부에서 측정된 코드 위상과 도플러 주파수를 기반으로 이들을 GPGPU를 활용한 병렬 추적을 통해 지속적으로 측정치를 획득하기 위한 신호 추적부를 선택적으로 사용 가능하도록 설계하였다. 신호 추적부에서는 Main thread로부터 입력되는 DLL, PLL (FLL) 판별기 종류 및 잡음 대역폭과 더불어 DLL에서 코드의 시작 지점을 지속적으로 추적하기 위해 Prompt 코드보다 이전 코드인 Early 및 Very Early 코드와 이후 코드인 Late 및 Very Late 코드를 생성하는 데 요구되는 칩 간격을 입력 받을 수 있도록 하였다.

신호 추적부에서 사용되는 DLL 판별기는 EML 및 VEML을 사용하도록 하였으며, PLL 판별기는 costas loop으로 불리는 four-quadrant 판별기 및 two-quadrant 판별기를 사용하도록 하였다. 시간 및 주파수 성분의 추적이 수행되면 Numerical Controlled Oscillator를 통해 지속적으로 코드 위상 및 반송파 위상과 주파수가 추적된다. GPGPU를 활용하여 병렬 처리를 수행하는 신호 추적부를 Fig. 12에 도시하였다.

f12.png 이미지
Fig. 12. Signal tracking module by GPGPU-based parallel processing.

설계한 A-GNSS 수신기에서는 BINEX 데이터를 A-GNSS 서버로부터 수신하여, 신호 추적 과정에서 Inphase-prompt 기반 항법데이터 해독이 필요 없이 추적되는 코드 위상만을 통해 사용자 위치해를 실시간으로 산출할 수 있도록 하였다. 위치해 산출에는 A-GNSS 서버로부터 수신 받은 천체력 데이터를 통한 위성 위치, 속도와 계산된 C/N0가 사용되며 도플러를 통해 계산된 초기 위치를 통해 위성의 고도각을 계산한 후 가중 행렬을 적용한 개략 시간 측위를 수행한다. 최종 추정된 SDR A-GNSS 사용자의 위치해와 더불어 각 채널들의 신호 획득 및 추적 상세 정보를 별도의 로그 파일에 각각 저장할 수 있도록 설계하였으며, 다음 시점의 측정치가 획득되기 전까지 대기 상태에 있다가 Processing thread로부터 전달받게 되면 지속적으로 사용자의 위치 해를 산출한다.

4. 실험

설계한 실시간 SDR A-GNSS 수신기의 측정치 획득 기능과 유효성을 검증하고, 이를 기반으로 한 실시간 A-GNSS 구동의 성능 평가를 위해 다수의 실험이 수행되었다. 실험에서는 USRP N210을 활용함으로써, 모든 GNSS 및 RNSS OS 신호들을 수신하여 다양한 신호 조합을 구성하였다.

실험은 크게 10 ms 길이의 매우 짧은 신호 만을 활용한 실시간 snapshot 위치해 산출 실험, 수 백 ms 길이의 신호 추적 및 10 sec 길이의 신호 추적을 통한 실시간 사용자 위치해 산출 실험으로 나누어서 진행하였다. 먼저, 단일 SDR 장비만을 사용한 다중 GNSS/단일 주파수 대역들 각각에 대한 실시간 SDR A-GNSS 수신기 성능 평가 실험을 수행하였다. 다음으로는 다중 SDR 장비를 동시에 작동시켜 다중 GNSS/다중 주파수 대역들에 대한 실시간 SDR A-GNSS 수신기 성능 평가 실험을 순차적으로 진행하였다. 마지막으로, 다중 GNSS/다중 주파수 대역에 대한 수백 ms 길이의 신호 추적 실험과 다중 GNSS/단일 주파수 L1 대역에 대한 10 sec 길이의 신호 추적 실험을 진행하였다.

A-GNSS 서버와 사용자는 동일한 안테나를 사용하여 실험 시간 중 A-GNSS 사용자에게 요구되는 GNSS 및 RNSS 천체력 데이터 보조 정보는 사용자가 실험 시간에서 획득 가능한 모든 천체력 데이터를 제공할 수 있게 하였다. A-GNSS 서버는 타겟으로 하는 다중 GNSS 및 RNSS/다중 주파수 신호들을 수집하기 위해 Septentrio 사의 PolaRx5 수신기를 활용하였다. 또한, 고정 IP가 할당된 PC에서 설계한 A-GNSS 서버 소프트웨어를 구동하였으며, 고정 IP 주소와 포트번호를 사용하여 TCP/IP 서버 소켓을 생성하여 A-GNSS 사용자로부터의 연결을 대기 및 보조 정보로서 “0x01” 형태의 레코드를 가진 BINEX Raw 항법 데이터 (GPS, GLONASS, Galileo, BeiDou, QZSS, IRNSS, SBAS 천체력 데이터 및 전리층 관련 변수가 모두 포함된 Subframe bit 형태)의 전달을 수행하였다.

A-GNSS 사용자에서 활용한 장비로는 실시간으로 신호를 수집하기 위해 단일 USRP/단일 주파수 실험에서는 1대의 USRP N210가 활용되었으며, 다중 USRP/다중 주파수 실험에서는 4대의 USRP N210가 활용되었다. A-GNSS 알고리즘을 실시간으로 동작 시키기 위해 설계한 SDR A-GNSS 수신기 소프트웨어를 활용하였다, CPU는 인텔 사의 i9-10980XE 모델을 활용하였다. 실험에서 USRP N210에서는 25 MHz의 샘플링 주파수로 매 샘플 당 short 타입 (2 바이트)의 Inphase, Quadrature 샘플을 연속적으로 제공해준다. 따라서, 1 sec 당 계산되는 샘플의 총 량은 100 MB로 이를 실시간으로 병렬 처리하기 위해서는 매우 고성능의 GPGPU 장비가 필요하다. 따라서, 총 8704개의 CUDA core 및 10 GB의 GDDR 메모리를 가진 NVIDIA 사의 Geforce RTX 3080 모델을 GPGPU 장비로 활용하였다. USRP N210는 타 고성능 USRP에 비해 샘플 전달 병목 현상이 빈번히 발생한다. USRP N210은 RJ45 케이블로 데이터를 전달하기 때문에 Ethernet 케이블로 사용자 측 PC와 연결되고, 사용자에서는 최대한 안정적으로 샘플을 수신하기 위해 NETmate 사의 CAT.7 STP 10 Gb Ethernet 케이블을 사용하였다. A-GNSS 사용자 PC에서는 10 Gb Ethernet 케이블로 실시간 샘플을 수신 받기 위해 PCI-Express 3.0 x 8 레인으로 연결되는 Intel 사의 10 Gb Ethernet Network Adapter X710-T4 (최대 4 포트)를 별도의 유선랜카드로 활용하였다.

USRP는 범용 SDR 장비이므로 설치된 안테나로부터 수신되는 GNSS 신호를 약 13 dB 증폭 및 분배해주는 GPS Networking 사의 ALDCBS1x8 GNSS 신호 분배기를 별도로 사용하였다. Fig. 13은 안테나로부터 GNSS 신호 증폭 분배기에 연결되어 A-GNSS 서버/사용자 수신기들에 분배되는 사진이며, Fig. 14는 A-GNSS 사용자에서 구동하는 PC 내부의 CPU, GPGPU 및 USRP와 연결되는 유선랜카드와 케이블을 나타낸 사진이다.

f13.png 이미지
Fig. 13. Real-time A-GNSS experiment setup 1 (an A-GNSS server receiver, four SDR modules, an RF signal splitter).

f14.png 이미지
Fig. 14. Real-time A-GNSS experiment setup 2 (an A-GNSS user computer connected up to four SDR modules by Ethernet cables).

4.1 단일 USRP/단일 주파수 실시간 A-GNSS 실험

L1, L2, L3, L5, L6 단일 주파수 대역 내의 모든 GNSS 신호들에 대한 수집 및 수집된 측정치의 유효성 및 A-GNSS 사용자 위치 추정 성능 검증을 위하여 실험을 진행하였다. 각 단일 주파수 대역 내에도 각 GNSS 신호들의 중심 주파수와 대역폭 간격이 수십 MHz 이상 차이가 발생하기 때문에, 단일 SDR 장비인 USRP의 샘플링 성능에 따라 단일 주파수 대역 전체를 수집할 수 없는 구간이 발생한다.

실험에 활용된 USRP N210의 실시간용 실험에서 정상적으로 획득 가능한 샘플링 주파수가 25 MHz이기 때문에 총 수 백 MHz에 달하는 L 밴드를 세부적으로 주파수 대역을 구간 별로 나누어 수신할 수밖에 없다. 이와 같은 이유로 상위/하위 L 밴드를 포함한 L 밴드 전체를 총 6개의 구간으로 나누어서 해당 구간 내의 GNSS 신호들을 단일 USRP를 통하여 수집하였다.

Fig. 15는 단일 USRP를 활용하여 수행한 실시간 SDR A-GNSS 실험에 대한 6가지 시나리오를 도시화한 그림이며, Table 2는 총 6가지의 시나리오에 대한 사용한 USRP의 샘플링 주파수 및 수집 중심 주파수, 해당 대역 내에서의 타겟으로 하는 신호들에 대해 정리하였고 각 시나리오 번호 옆의 ID 부분은 실험 내 타겟으로 하는 대역을 가칭으로 할당한 결과이다.

f15.png 이미지
Fig. 15. Frequency bands considered in single-USRP/single-frequency real-time A-GNSS experiment.

Table 2. Six scenarios of single-USRP/single-frequency real-time A-GNSS experiment.

Scenario
(ID)
Sampling
frequency
(MHz)
Center frequency
(MHz)
Target GNSS/RNSS signal
1 (L1-1)
2 (L1-2)
3 (L2-1)
4 (L2-2)
5 (L5)
6 (L3L6)
25 1570 (1557.5~1582.5)
1597 (1584.5~1609.5)
1237 (1224.5~1249.5)
1204.87 (1192.37~1217.37)
1176 (1163.5~1188.5)
1271.365 (1258.865~1283.865)
GPS L1C/A, Galileo E1B/C, BeiDou B1I, QZSS L1C/A, SBAS L1
GLONASS G1
GPS L2C, GLONASS G2, QZSS L2C
Galileo E5bI/Q, BeiDou B2I, GLONASS G3
GPS L5I/Q, Galileo E5aI/Q, QZSS L5I/Q, IRNSS L5
Galileo E6B/C, BeiDou B3I

 

단일 USRP/단일 주파수 실시간 A-GNSS 수신기 실험은 5개 이상의 GNSS 가시 위성이 항상 확보된 옥상 개활지에 위치한 Trimble ChokeRing 기준국용 안테나를 통해 GNSS 신호를 수집하였다. 해당 안테나의 ECEF 좌표는 장기간 GNSS 신호를 수신하여 RTK 측위를 통해 정밀 측정하여 미리 알려져 있는 지점을 기준 좌표로 설정하였다 (Kim et al. 2007). 실험은 2021년 4월 20일 14시 17분 11초 (UTC) 부터 각 시나리오 별로 약 60 sec 가량 진행되었다.

신호 처리 과정으로는 다중 thread를 생성 후, 실시간으로 USRP N210의 샘플들을 저장하기 위한 메모리 버퍼를 활용하였으며, 실시간 신호 처리를 위해 CUFFT Library를 활용하여 GPGPU CUDA 병렬 신호 처리를 수행하였다. 상위 L 밴드인 L1 주파수 대역에서 발생 가능한 도플러 주파수 최대 범위를 5000 Hz, 하위 L 밴드인 L2, L3, L5, L6 주파수 대역에서는 4000 Hz로 가정하여 20 ms 길이의 샘플들을 동기 누적 기법으로 신호 획득을 수행하였고, C/N0 threshold를 40 dB-Hz으로 하여 threshold 이상의 신호만을 유효하게 획득되었다고 판단하였다. 실시간 신호 처리 시간 감소와 더불어 도플러 주파수 탐색 범위 감소를 위해 각 Channel thread에서는 총 4개 (Cold/Initial/Coarse/Fine)의 state로 신호 획득을 수행하였는데, 각각 도플러 탐색 범위를 100/100/50/25 Hz로 설정하였다. 또한, 실시간 신호처리에서 중요하게 고려해야 할 사항인 USRP로부터 데이터가 획득되는 시간, 실제 총 데이터가 처리되는 시간 등을 guard time까지 고려하여 위치해 제공 주기를 2 sec (0.5 Hz)로 설정하였다.

Figs. 16~19에 총 6 가지의 시나리오 중 대표로 시나리오 1에서 도플러를 통해 계산된 사용자 초기 위치 추정 결과, 사용자 위치해 추정 결과, GNSS 및 RNSS 신호 측정치 개수와 DOP 비교, C/N0 계산 값을 순서대로 도시하였다. Table 3은 단일 USRP/단일 주파수 실시간 A-GNSS 실험 내 모든 시나리오에서 계산된 NED 방향의 사용자 위치 오차 및 Circular Error Probability (CEP)를 정리하여 도시하였다.

f16.png 이미지
Fig. 16. Doppler-based positioning errors by scenario 1 of single-USRP/single-frequency real-time A-GNSS experiment.

f17.png 이미지
Fig. 17. Positioning results (horizontal error, vertical error, power spectral density, coarse-time error) by scenario 1 of single-USRP/single-frequency real-time A-GNSS experiment.

f18.png 이미지
Fig. 18. Comparison of number of visible satellites (left) and dilution of precisions (right) by scenario 1 of single-USRP/single-frequency real-time A-GNSS experiment.

f19.png 이미지
Fig. 19. Carrier-to-noise density ratio by scenario 1 of single-USRP/single-frequency real-time A-GNSS experiment.

Table 3. User position errors (RMSEs in NED directions / CEP) by scenario 1~6 of single-USRP/single-frequency real-time A-GNSS experiment.

Scenario (ID) 1 (L1-1) 2 (L1-2) 3 (L2-1) 4 (L2-2) 5 (L5) 6 (L3L6)
RMSE (m) N-direction
E-direction
D-direction
5.363
8.038
13.607
10.751
22.121
11.077
20.481
20.495
24.913
7.786
18.203
28.162
7.291
14.985
25.574
4.132
27.384
54.036
CEP (m)   8.033 24.038 27.142 20.271 11.531 25.732

 

이 실험의 시나리오 1~6에서는 A-GNSS 사용자의 초기 위치에 대한 정보가 없으므로 각각 초기 신호 획득을 통해 획득된 도플러 측정치, 해당 수집 시간 및 A-GNSS 서버로부터 전달받은 천체력 데이터를 이용하여 각 시나리오에서의 GNSS 사용자 초기 위치를 계산한 결과, 도플러 측정치의 정확도에 따라 차이가 발생하지만 대부분 약 10~20 km 이내의 오차가 발생하였으며 시나리오 4의 경우는 N 방향으로 약 42 km, E 방향으로 약 77 km의 위치 오차가 발생했다. 도플러 측정치를 통해 계산된 A-GNSS 사용자의 초기 위치가 실제 사용자의 위치와 비록 수십 km의 오차가 발생하더라도 개략 시간 측위 기법을 통해 코드 위상만을 활용한 사용자 위치해를 충분히 계산해 냄을 모든 시나리오에서 확인할 수 있었다.

총 6개의 시나리오 중 모든 GNSS 및 RNSS들의 상위 L 밴드 신호인 L1-1 대역과 L1-2 대역인 L1 주파수 대역의 신호들이 코드 칩률 또한 하위 L 밴드 대역의 신호들보다 낮은 특성을 가지고 있기 때문에 반송파 복원율이 뛰어난 특징을 가진다. 따라서, 주위의 잡음들과 대비하여 C/N0가 높기 때문에 타 시나리오들의 결과보다 다수의 측정치 확보할 수 있으며 A-GNSS 사용자 위치 추정 성능 또한 가장 뛰어난 결과가 산출되었다. 시나리오 3의 GPS, GLONASS, QZSS의 L2 주파수 대역 신호의 경우 L1 신호보다 약 3~6 dBW 낮은 세기로 위성에서 송출되기 때문에 시나리오 1과 2의 칩률과 유사하게 샘플링 되지만 획득되는 측정치 개수와 품질이 낮은 이유로 위치 추정 성능 또한 저하된 것을 확인하였다.

시나리오 4~6의 하위 L 밴드들은 GNSS 현대화에 의해 10 MHz 이상의 코드 칩률을 사용하므로 최소 20 MHz 이상의 대역폭이 요구된다. 해당 신호들을 완벽히 복원해내기 위해 Nyquist rate 보다는 높은 샘플링 주파수로 디지털화하지만 샘플링 주파수와 Nyquist rate 간 차이가 크지 않기 때문에 반송파와 열 잡음 간 구분히 명확치 않다. L5 및 L3, L6 신호는 상위 L 밴드 신호와 유사한 신호 세기로 송출됨에도 불구하고 data 채널 신호뿐만 아니라 pilot 채널 신호까지 결합하여 20 ms의 동기 누적을 수행하여도 높은 세기의 신호만 획득할 수 있었다. 위의 이유로 측정되는 코드 위상의 정확도 또한 감소되는 특징을 확인하였다.

4.2 다중 USRP/다중 주파수 실시간 A-GNSS 실험

4.2절에서는 6개로 나누었던 시나리오를 총 4 대의 USRP를 동시에 작동시켜 이들의 조합으로 다양한 종류의 GNSS 데이터를 동시에 수집하여 결과적으로는 모든 GNSS 및 RNSS의 OS 신호를 활용하여 A-GNSS 사용자의 위치해를 계산해내기 위한 3개의 시나리오를 Fig. 20과 Table 4와 같이 수립하였다. Table 4에는 샘플링 주파수 및 수집 중심 주파수, 해당 대역 내 타겟 신호들에 대한 총 조합 등이 기술되어 있다.

f20.png 이미지
Fig. 20. Frequency bands considered in multi-USRP/multi-frequency real-time A-GNSS experiment.

Table 4. Three scenarios of multi-USRP/multi-frequency real-time A-GNSS experiment.

Scenario (ID) Sampling
frequency
(MHz)
Center frequency (MHz) Target GNSS/RNSS signal
1 (L1-1 / L1-2 /
 L2-1 / L2-2)
25 USRP 1: 1570 (1557.5~1582.5)
USRP 2: 1597 (1584.5~1609.5)
USRP 3: 1237 (1224.5~1249.5)
USRP 4: 1204.87 (1192.37~1217.37)
GPS L1C/A, L2C
GLONASS G1, G2
Galileo E1B, E5bI/Q
BeiDou B1I, B2I
QZSS L1C/A, L2C
SBAS L1
2 (L1-1 / L2-1 /
L2-2 / L5)
USRP 1: 1570 (1557.5~1582.5)
USRP 2: 1237 (1224.5~1249.5)
USRP 3: 1204.87 (1192.37~1217.37)
USRP 4: 1176 (1163.5~1188.5)
GPS L1C/A, L2C, L5I/Q
GLONASS G2, G3
Galileo E1B, E5bI/Q, E5aI/Q
BeiDou B1I, B2I
QZSS L1C/A, L2C, L5I/Q
IRNSS L5
SBAS L1
3 (L1-1 / L2-2 /
L5 / L3L6)
USRP 1: 1570 (1557.5~1582.5)
USRP 2: 1204.87 (1192.37~1217.37)
USRP 3: 1176 (1163.5~1188.5)
USRP 4: 1271.365 (1258.865~1283.865)
GPS L1C/A, L5I/Q
GLONASS G3
Galileo E1B, E5bI/Q, E5aI/Q, E6B/C
BeiDou B1I, B2I, B3I
QZSS L1C/A, L5I/Q
IRNSS L5
SBAS L1

 

총 4대 사용되는 USRP N210의 샘플링 주파수는 25 MHz로 동일하고 한 개의 샘플 당 4 Byte의 데이터가 전송되므로 단일 USRP를 사용했을 때보다 4배가 증가하였다. 총 3개의 acquisition state 및 해당 state에서의 도플러 주파수 탐색범위, 앙각 제한과 동기 누적 시간과 같은 신호 처리 관련 설정은 4.1절의 내용과 동일하나, 총 4대의 USRP로부터 수신되는 실시간 신호 처리에서 중요 고려 사항인 USRP로부터 데이터가 획득되는 시간, 실제 총 데이터가 처리되는 시간 등을 guard time까지 고려하여 위치해 제공 주기를 3 sec (0.33 Hz)로 설정하였다.

총 4대의 USRP N210을 실시간으로 작동시켜 샘플을 획득함으로 인하여, 4대의 장비 중 1대의 장비에서 간헐적인 Overflow 발생 후 Timeout 단계 전환이 발생할 경우 전체적인 샘플 수신의 깨짐 현상이 발생한다. 따라서, 총 3개의 시나리오 실험 시간으로는 해당 4대의 장비의 Timeout이 발생하기 이전 최대로 수신 가능한 시간으로 실험을 진행하였다. 시나리오 1은 2021년 6월 17일 17시 17분 41초 (UTC) 부터 17시 27분 2초까지 약 9분간 진행되었다. 시나리오 2는 2021년 6월 17일 17시 34분 36초 (UTC)부터 17시 48분 1초까지 약 13분간 진행되었다. 마지막 시나리오 3은 2021년 6월 17일 17시 51분 14초 (UTC) 부터 18시 3분 18초까지 약 12분간 진행되었다.

Figs. 21~24에 다중 USRP/다중 주파수 실시간 A-GNSS 실험의 3가지 시나리오 중 대표로 시나리오 1에서의 결과를 도시하였다. Fig. 21에서는 계산된 수평 및 수직 위치 오차, 추정된 수신기 시계 오차 및 개략 시간 오차를 도시하였다. Fig. 22에는 GNSS 및 RNSS 측정치 개수, DOP, 서버 수신기와의 C/N0 계산 값 차이를 도시하였으며, Fig. 23에는 수평 위치 추정 결과를 구글 어스로 도시하였다. Fig. 24는 실제 각 thread에서의 작동 시간 비교 결과를 도시하였다. Table 5에는 다중 USRP/다중 주파수 실시간 A-GNSS 실험 내 모든 시나리오에서 계산된 위치 오차 및 TTFF 등의 결과를 정리하여 A-GNSS로서의 실제 활용 가능성을 도시하였다.

f21.png 이미지
Fig. 21. Positioning results (scatter plot of horizontal error, trends in NED directions, receiver clock bias, coarse-time errors) by scenario 1 of multi-USRP/multi-frequency real-time A-GNSS experiment.

f22.png 이미지
Fig. 22. Comparison of number of visible satellites (left) and dilution of precisions/carrier-to-noise density ratio (right) by scenario 1 of multi-USRP/multi-frequency real-time A-GNSS experiment.

f23.png 이미지
Fig. 23. Estimated user positions marked in Google Earth by scenario 1 of multi-USRP/multi-frequency real-time A-GNSS experiment.

f24.png 이미지
Fig. 24. Comparison of processing time of three different threads (Grab, Acquisition, Positioning) by scenario 1 of multi-USRP/multi-frequency real-time A-GNSS experiment.

Table 5. Error statistics of user position errors, total number of channel (number), and TTFF by scenario 1~3 of multi-USRP/multi-frequency real-time A-GNSS experiment.

Error analysis 1 (L1-1 / L1-2 L2-1 / L2-2) 2 (L1-1 / L2-1 / L2-2 L5) 3 (L1-1 / L2-2 / L5 / L3L6)
RMSE (m) N-direction
E-direction
D-direction
2.397
7.756
10.639
4.084
10.436
9.653
4.179
11.941
9.716
CEP (50%) (m)
1.5 σ (67%) (m)
2.54 σ (95%) (m)
Total number of channel (number)
TTFF (sec)
7.201
8.407
13.339
127
11.415
8.229
11.992
20.928
142
12.850
12.015
14.226
18.685
137
12.361

 

총 4개의 USRP를 통해 수신기 시계 오차와 개략 시간 오차들을 각각 추정하기 위해서는 각 RF 당 최소 2개의 측정치가 확보되어야 하며, 총 측정치 개수가 11개 이상이어야 한다. 이러한 제약 조건이 있음에도 불구하고, 단일 주파수 대역 만을 사용하는 것 보다 다른 주파수 대역을 활용하여 측정치 개수를 가급적 많이 확보하는 것이 A-GNSS 사용자의 신속하고 가용성 높은 위치해 산출 관점에 있어서 큰 도움이 된다. 또한, 단일 USRP 만을 사용하였을 때보다 다수의 측정치들을 확보하기 용이하므로 단일 USRP 실험과 비교하여 안정적인 DOP 값이 계산되었으며 이는 직접적인 위치해 산출 시에도 가용성을 증가시키는 이점과 더불어 추정되는 A-GNSS 사용자 위치해의 오차 변화율에도 안정성 측면에서 크게 작용한다.

수신기 시계 오차는 모든 시나리오의 경우에서 정상적인 범위인 최소 오차와 최대 오차 사이 간 간격이 1 ms 이내로 추정됨을 확인하였으며, 개략 시간 오차는 모든 시나리오에서 대체적으로 안정적인 시간 오차를 추정해 내지만 L2-1 대역이 타 대역에 비해 다중 SDR을 활용하여도 추정 정확도 및 안정도가 낮음을 확인하였다. 이는 앞서서 4.1절에서 실험한 L2-1 단일 주파수 대역 결과와 유사하게, L2 주파수 대역의 낮은 신호 세기로 인한 측정치 정확도 및 신뢰성으로부터 발생한 부분으로 판단된다.

보다 높은 샘플링 주파수를 사용하고 더 긴 샘플 길이를 활용한 동기 누적 등을 통해 지속 추적되고 있는 A-GNSS 서버 수신기와 비교하여 20 ms 길이의 샘플 만을 사용한 A-GNSS 사용자 수신기는 C/N0 값에서 대체적으로 최대 약 8 dB의 차이를 보임을 확인하였다. 이는 A-GNSS 사용자 수신기에서의 신호 유효 획득 threshold인 45 dB-Hz 부근의 신호들이 미세한 신호 환경 및 상관 결과 변화에 따라서도 신호가 획득 성공과 실패를 반복함을 실험에서 계산된 측정치 개수 및 DOP 계산 값을 통해 확인하였다. 설계한 실시간 SDR A-GNSS이 실제 A-GNSS으로의 유효성 판단을 위한 A-GNSS 정확도 및 TTFF 요구 조건을 만족도를 분석해본 결과 3 가지 시나리오 모두 해당 요구 조건들을 만족함으로써 실시간 A-GNSS로서의 충분한 활용 가능성을 확인하였다.

4.3 다중 GNSS/다중 주파수 단기간 신호 추적 실험

단일 USRP 및 다중 USRP를 통해 실시간으로 수집 및 측정되는 유효한 코드 위상과 도플러 주파수를 가지고 기존의 GNSS 수신기와 동일하게 신호 추적을 수행하는 동안에, 추적되는 코드 위상과 데이터 채널 및 파일럿 채널 상관 결과 값 등의 유효성 판단을 위해 실험을 수행하였다. 본 실험과 다음 실험은 A-GNSS 수신기를 더 확장하여 추후 완결한 GNSS 수신기를 구현하기 위해서 반드시 추가되어야 할 기능들 중에서 가장 중요한 신호추적 기능을 확인하는 목적으로 수행되었다.

설계한 A-GNSS 수신기 모듈 중 신호 처리 부 내의 신호 추적 부가 신호 획득 부 종료 후에 곧바로 수행되는데, Table 4의 시나리오 3으로 총 240 ms 길이의 샘플을 수집하여 신호 획득은 4.2절과 동일하게 20 ms 길이를 사용한 이후 뒤쪽 220 ms 길이를 모든 채널들의 실시간 신호 추적에 사용하였다. 일반적으로 신호들을 지연 루프에서 초기에 추적하게 되면, 넓은 잡음 대역폭을 통해 DLL, PLL, FLL에 큰 잡음을 허용하며 추적하는 wide tracking을 수행한다. 각 GNSS 신호들의 비트 동기를 맞춘 이후, subframe 또는 page 등의 preamble과 정확히 상관이 이루어지어 프레임 동기까지 이루어지면 협대역의 잡음 폭을 사용함으로써 보다 정밀하게 추적 가능한 narrow tracking을 수행하지만 4.3절과 4.4절의 실험에서는 wide tracking 만을 통한 신호 추적을 수행하였다. 신호 추적에 사용될 변수로서, wide tracking에 사용될 DLL과 PLL의 잡음 대역폭은 각각 5 Hz / 40 Hz이며, Early-Prompt-Late 생성 신호 간 칩 간격은 0.5 칩으로 입력하였다. DLL은 EML 판별기, PLL은 costas loop 판별기를 사용하였고, DLL/PLL 모두 2차 LPF를 통해 업데이트를 수행하였다.

신호 획득을 통해 4개의 GPS L1 신호 (G12, G15, G18, G32), 2개의 GPS L5 신호 (G23, G24), 1개의 Galileo E5a 신호 (E07), 1개의 Galileo E6 신호 (E07), 4개의 BeiDou B1 신호 (C06, C13, C23, C32), 1개의 BeiDou B3 신호 (C23), 1개의 QZSS L1 신호 (J04), 2개의 QZSS L5 신호 (J01, J04), 1개의 IRNSS L5 신호 (I05), 1개의 SBAS L1 신호 (S137)의 총 18개의 신호가 획득되었다. 정상적으로 신호 추적이 수행되었는지를 확인하기 위해, 위 신호들 중 대표로 BPSK 변조를 사용하는 SBAS L1 신호 (S137)와 데이터 채널/파일럿 채널을 동시에 추적하는 Galileo E5a 신호 (E07)에 대한 추적 결과를 Figs. 25와 26에 각각 도시하였다.

f25.png 이미지
Fig. 25. Short-period tracking results of SBAS L1 S137 signal (left upper: code discriminator, left middle: tracked code frequency, left lower: tracked code phase, left upper: carrier discriminator, left middle: tracked carrier frequency, left lower: tracked carrier phase).

f26.png 이미지
Fig. 26. Short-period tracking results of Galileo E5aI/aQ E07 signal (left upper: code discriminator, left middle: tracked code frequency, left lower: tracked code phase, left upper: carrier discriminator, left middle: tracked carrier frequency, left lower: tracked carrier phase).

SBAS L1 신호의 항법데이터가 담긴 데이터 채널 및 Galileo E5a 신호의 데이터 채널 및 파일럿 채널의 Prompt 상관 결과값에 대한 I-Q plot 결과를 Fig. 27에 도시하였다. 데이터 채널뿐만 아니라 90도의 위상 차이를 가지는 파일럿 채널 또한 정상 추적됨을 확인할 수 있으며, I-Q 분리 또한 정상적으로 이루어졌다. 두 신호들의 데이터 채널 Early-Prompt-Late 추적 결과 값을 Fig. 28에 도시하였으며, 두 경우 모두 Auto-Correlation Function (ACF)과 유사한 값으로 Early 및 Late 신호가 상관됨을 확인하였다. Fig. 29는 지속 추적된 코드 위상 기반의 개략 시간 측위 기법을 적용하여 A-GNSS 사용자 위치해를 매 추적 시점마다 추정한 위치해 결과이다. 초기 코드 위상으로부터 산출한 위치해의 수직 오차가 약 20 m 발생하나, 신호 추적을 통해 사용자 위치해가 수렴해가는 과정을 보여주며 신호 추적 기간 동안 계산된 사용자 위치 오차의 결과를 Table 6에 도시하였다.

f27.png 이미지
Fig. 27. Comparison of I-Q plots (left: SBAS L1 S137 data channel, right: Galileo E5aI data channel/aQ pilot channel of E07).

f28.png 이미지
Fig. 28. Comparison of correlator outputs of data channel signal tracked during short period (upper: SBAS L1 S137, lower: Galileo E5aI E07).

f29.png 이미지
Fig. 29. Trends of estimated user position by short-period tracking (left: horizontal position, right: positioning errors in NED directions).

Table 6. Error statistics of user position errors by short-period tracking.

Error analysis Error
RMSE (m) N-direction
E-direction
D-direction
1.948
2.589
11.343
CEP (50%) (m)
1.5 σ (67%) (m)
2.54 σ (95%) (m)
2.767
3.145
5.328

 

4.4 다중 GNSS/단일 주파수 장기간 신호 추적 실험

4.4절에서는 4.3절에서 확인한 단기간의 신호 추적 가능성을 통해 보다 장기간의 신호 추적을 위한 실시간 실험을 수행하였다. 장기간의 신호 추적은 USRP N210에서 안정적 및 지속적인 샘플 수신을 위해 25 MHz 샘플링 주파수로 총 4대의 USRP N210가 동시에 샘플링 되면 400 MB/sec 속도로 데이터가 전송되는 데, Ethernet 케이블 기반 USRP N210은 약 300 ms의 데이터를 수신 중에 timeout 상태에 빠지므로 장기간 신호 추적을 위해 단일 USRP만을 사용 및 샘플링 주파수를 대폭 감소시켜 실험을 수행하였다.

실험 개형으로는 1대의 USRP N210을 사용하여 L1 주파수 대역의 GPS, Galileo, QZSS, SBAS 신호를 5 MHz의 샘플링 주파수로 10 sec 간 수집함으로써 실시간 신호 추적하도록 하였다. 4.3절과 마찬가지로 wide tracking을 통해 추적을 수행하였으며, 신호 추적에 사용될 변수로서, BPSK 신호인 GPS, QZSS, SBAS 신호의 wide tracking에 사용될 DLL과 PLL의 잡음 대역폭은 각각 5 Hz / 40 Hz이며, EPL 신호간 칩 간격은 0.5 칩으로 입력하였다. DLL은 EML 판별기, PLL은 costas loop 판별기를 사용하였다. Galileo 신호는 BOC 변조되어 wide tracking 시 DLL 및 PLL 잡음 대역폭을 각각 5 Hz/10 Hz로 설정하였으며, EPL 신호간 칩 간격은 0.2 칩, Very Early/Very Late 신호간 칩 간격은 0.6 칩으로 설정하였다. DLL은 VEML 판별기, PLL은 two-quadrant 판별기를 사용하였고, DLL/PLL 모두 2차 LPF를 통해 업데이트를 수행하였다.

신호 획득을 통해 3개의 GPS L1 신호 (G08, G14, G22), 3개의 Galileo E1 신호 (E02, E30, E36), 1개의 QZSS L1 신호 (J03), 1개의 SBAS L1 신호 (S137)의 총 8개의 신호가 획득되었다. 정상적으로 신호 추적이 수행되었는지를 확인하기 위해, 위 신호들 중 대표로 BPSK 변조를 사용하는 QZSS L1 신호 (J03)과 BOC 변조되어 Very Early 및 Very Late 코드를 사용하여 추적하는 Galileo E1 신호 (E30)에 대한 추적 결과를 Figs. 30과 31에 각각 도시하였다.

f30.png 이미지
Fig. 30. Tracking results of QZSS L1 J03 signal during 10 seconds (left upper: code discriminator, left middle: tracked code frequency, left lower: tracked code phase, left upper: carrier discriminator, left middle: tracked carrier frequency, left lower: tracked carrier phase).

f31.png 이미지
Fig. 31. Tracking results of Galileo E1B+C E30 signal during 10 seconds (left upper: code discriminator, left middle: tracked code frequency, left lower: tracked code phase, left upper: carrier discriminator, left middle: tracked carrier frequency, left lower: tracked carrier phase).

QZSS L1 신호의 항법데이터가 담긴 데이터 채널 및 Galileo E1 신호의 데이터 채널의 Prompt 상관 결과값에 대한 I-Q plot 결과를 아래 Fig. 32에 도시하였으며, I-Q 분리 또한 정상적으로 이루어진 것을 확인하였다. QZSS L1 신호의 데이터 채널 EPL 및 Galileo E1 EPL+VEVL 추적 결과 값을 Fig. 33에 도시하였으며, 두 경우 모두 ACF와 유사한 값으로 생성된 신호가 상관됨을 확인하였다. Fig. 34는 지속 추적된 코드 위상 기반의 개략 시간 측위 기법을 적용하여 A-GNSS 사용자 위치해를 매 추적 시점마다 추정한 위치해 결과이다. 초기 코드 위상으로부터 산출한 위치해의 N 방향 및 D 방향 오차가 약 20 m 발생하나, 신호 추적을 통해 사용자 위치해가 수렴해가는 과정을 보여주며 신호 추적 기간 동안 계산된 사용자 위치 오차의 결과를 Table 7에 도시하였다.

f32.png 이미지
Fig. 32. Comparison of I-Q plots (left: QZSS L1 J03, right: Galileo E1B+C E30).

f33.png 이미지
Fig. 33. Comparison of correlator outputs of data channel signal tracked during 10 seconds (upper: QZSS L1 J03, lower: Galileo E1B+C E30).

f34.png 이미지
Fig. 34. Trends of estimated user position by 10-second tracking experiment (left: horizontal position, right: positioning errors in NED directions).

Table 7. Error statistics of user position errors by 10-second tracking.

Error analysis Error
RMSE (m) N-direction
E-direction
D-direction
6.146
5.080
6.833
CEP (50%) (m)
1.5 σ (67%) (m)
2.54 σ (95%) (m)
7.451
7.544
8.645

 

장기간 신호 추적 실험 결과로부터, 5 MHz의 샘플링 주파수를 통해 10 sec 간의 실시간 신호 추적을 수행함으로써 유효하게 획득된 코드 위상과 도플러를 통해 수백 ms의 단기간 신호 추적뿐만 아니라 10 sec 급의 보다 장기간의 신호 추적 또한 정상적으로 수행할 수 있음을 확인하였다. 만약 USRP를 보다 높은 사양의 모듈로 교체하고, USRP와 PC 사이의 데이터 전달 방식을 개선하여 전달속도를 향상시킨다면, 수십 분 또는 수 시간에 걸쳐 안정적인 신호 추적이 가능할 것으로 판단된다.

5. 결론

본 논문에서는 현재 운용 중인 GNSS 및 RNSS들에서 송출하는 모든 L 밴드 주파수 신호 처리가 가능한 A-GNSS 수신기를 제안 및 설계하고 구현하였다. 또한, 실시간으로 운용을 고려하여 A-GNSS 서버 소프트웨어를 설계하고 사용자의 요구에 따라 GNSS 천체력 데이터를 실시간으로 전송하도록 하였다. A-GNSS 사용자는 이를 전달받아 단일 혹은 다수의 SDR 수신기를 통해 수 ms 길이의 샘플만을 이용하여 순간적으로 유효한 사용자 위치 해를 획득 가능하도록 설계하였다. 실시간 구현을 위하여 직렬 처리에 유리한 CPU에 덧붙여 병렬 처리를 위한 GPGPU CUDA를 추가 활용하여 신호 처리가 가능하도록 설계하였다.

본 논문에서는 미래지향적이며 유연한 SDR 개념을 기반으로 지상의 GNSS 사용자들이 수신 가능한 모든 GNSS 및 RNSS의 L 밴드 내 Open Service 신호를 미래 지향적인 SDR 장비인 USRP를 통해 수신 가능하도록 설계하였다. L 밴드 내에 분포하는 GNSS 및 RNSS 신호들을 주파수 대역과 샘플링 주파수를 변화시키면서 제안된 SDR로 L 밴드 내의 어떠한 신호도 수신할 수 있음을 확인하였다. 모든 GNSS 및 RNSS OS 신호들에 대한 처리 및 획득이 가능하므로 대폭 증가한 가용성을 통해 상관기 출력 값인 코드 위상과 도플러 측정치 만을 활용하여 사용자의 위치를 신속하고 정확하게 산출해 낼 수 있는 SDR A-GNSS 수신기를 제안 및 설계하였다.

A-GNSS를 실시간으로 구동 시키기 위해서 기존 A-GNSS와 동일하게 별도의 A-GNSS 서버 소프트웨어를 구현하여 구축하였으며, SDR A-GNSS 사용자는 서버로부터 보조 정보인 BINEX 형태의 천체력 데이터를 제공받아 신호 획득 보조 정보로 활용한 후, 자체 SDR 수신기를 통해 샘플링을 수행 후 사용자 측에서 위치를 계산하는 MS-based A-GNSS 방식으로 구현하였다. 25 MHz의 샘플링 주파수로 실시간 구동되는 총 4대의 USRP를 완벽하게 제어하기 위한 C++ API인 USRP Hardware Driver 및 이로부터 안정적인 샘플들을 수신 받기 위한 ms 단위의 메모리 버퍼 관리 기법과 A-GNSS 사용자 측에서 최대 약 150개로 할당된 채널을 실시간으로 구동하기 위해 반드시 요구되는 GPGPU 기반의 NVIDIA CUDA 프로그래밍을 통한 병렬 처리 기법으로 실시간 신호 처리를 구현하였다.

실시간으로 A-GNSS 서버와 수신기를 동시에 구동하는 다수의 실험을 통해 총 4대의 USRP들을 활용해서 동시에 다중 GNSS/다중 주파수 대역 내 수 십 ms 길이의 샘플 상관 또는 10 sec 단위의 샘플을 상관 및 추적하여 사용자 위치해를 산출한 결과, 수행한 모든 실험에서 A-GNSS 정확도 및 20초 이내의 TTFF 요구 조건을 모두 만족하여 실제 A-GNSS 로도 충분히 활용될 수 있는 가능성을 확인하였다.

본 논문에서 설계한 신호 획득 상관기는 GNSS 신호의 존재 여부를 확인하고 탐색을 통한 코드 위상과 도플러 측정치를 획득하는 데에 그 목적이 있으며, 모든 GNSS 및 RNSS OS 신호에 대하여 실시간 신호 획득에 대한 검증이 완료되었다. 반면, 장기간의 신호 추적 기능을 완결하게 구현하기 위해서는 수신기의 안정적인 실시간 운용을 위해 SDR 장비에서 사용자 수신기로 데이터 전송하는 방식을 보완할 필요가 있다. 안정적인 데이터 전송이 보장되지 않으면 신호 추적이 지속적으로 중단되며, 이로 인하여 연속적인 항법 데이터의 수신이 어렵게 된다. 또한, 주요기능인 신호 획득과 신호 추적에 추가하여 SDR 장비 간 시각 동기, 비트 동기, 프레임 동기 그리고 실시간 항법메시지 해독 등을 실시간 구현하는 연구가 추가적으로 요구된다.

ACKNOWLEDGMENTS

본 연구는 한국연구재단의 기초연구사업 (NRF2016R1D1A1B01009881)에 의하여 수행되었음.

AUTHOR CONTRIBUTIONS

Conceptualization, W. J. Yoo; methodology, W. J. Yoo, L. Kim; software, W. J. Yoo, Y. D. Lee; validation, W. J. Yoo, T. G. Lee; formal analysis, W. J. Yoo, H. K. Lee; investigation, W. J. Yoo, Y. D. Lee; resources, H. K. Lee; data curation, W. J. Yoo, L. Kim; writing, W. J. Yoo; review and editing, H. K. Lee; supervision, H. K. Lee.

CONFLICTS OF INTEREST

The authors declare no conflict of interest.

References

  1. Akopian, D. & Syrjarinne, J. 2009, A fast-positioning method without navigation data decoding for assisted GPS receivers, IEEE transactions on vehicular technology, 58, 4640-4645. https://doi.org/10.1109/TVT.2009.2019073
  2. Arslan, H. 2007, Cognitive radio, software defined radio, and adaptive wireless systems (Dordreicht: Springer Science & Business Media)
  3. Asano, S., Maruyama, T., & Yamaguchi, Y. 2009, Performance compar is on of FPGA , GPU and CPU in image processing, In 2009 international conference on field programmable logic and applications, 31 Aug.-2 Sept. 2009, Prague, Czech Republic, pp.126-131. https://doi.org/10.1109/FPL.2009.5272532
  4. Bartolome, J. P., Maufroid, X., Hernandez, I. F., Salcedo, J. A. L., & Granados, G. S. 2015, Overview of Galileo system, In GALILEO Positioning Technology (Dordrecht: Springer), pp.9-33. https://doi.org/10.1007/978-94-007-1830-2_2
  5. Gong, S. H. 2011, Standard trend of A-GNSS (Global Navigation Satellite System), TTA Journal, 138, 85-89.
  6. Hatfield, D. N. 2003, A report on technical and operational issues impacting the provision of wireless enhanced 911 services, Federal Communications Commission (Washington DC: Joint Program Office for Intelligent Transportation Systems).
  7. Idrees, R. & Butt, S. A. 2018, Design and hardware implementation of the code and carrier tracking block for an inter-operable GNSS receiver, In 2018 Annual IEEE International Systems Conference (SysCon), 23-26 April 2018, Vancouver, BC, Canada, pp.1-7. https://doi.org/10.1109/SYSCON.2018.8369543
  8. Jeong, H., Jang, H., Kim, K., Lee, J., & Lee, B. 2021, SAT#1 (Preliminary Integration) Test Results of KASS System, Journal of Positioning, Navigation, and Timing, 10, 145-151. https://doi.org/10.11003/JPNT.2021.10.2.145
  9. Kaplan, E. D. & Hegarty, C. J. 2017, Understanding GPS/GNSS: Principles and applications (Boston; London: Artech House)
  10. Kim, G., Park, C., & Lim, D. W. 2020, Space Service Volume Augmented with Korean Positioning System at Geosynchronous Orbit, Journal of Positioning, Navigation, and Timing, 9, 327-336. https://doi.org/10.11003/JPNT.2020.9.4.327
  11. Kim, H. I. 2015, Improvement of the real-time positioning accuracy in urban canyons through development of a new weight model based on GNSS signal strength, PhD Dissertation, Inha University.
  12. Kim, H. S., Shim, J. Y., & Lee, H. K. 2007, Designing a GPS receiver network with GNSS algorithm for accuracy and safety, paper # 135, In Proceedings of IGNSS 2007, 4-6 Dec, 2007, Sydney, Australia
  13. Klobuchar, J. A. 1987, Ionospheric time-delay algorithm for single-frequency GPS users, IEEE Transactions on aerospace and electronic systems, AES-23, 325-331. https://doi.org/10.1109/TAES.1987.310829
  14. Lin, H., Tang, X., & Ou, G. 2017, An open loop with Kalman filter for intermittent GNSS signal tracking, IEEE Communications Letters, 21, 2634-2637. https://doi.org/10.1109/LCOMM.2017.2757488
  15. Misra, P. & Enge, P. 2006, Global positioning system: signals, measurements, and performance (New York: Ganga-Jamuna Press).
  16. Morton, Y. J., van Diggelen, F., Spilker Jr, J. J., Parkinson, B. W., Lo, S., et al. 2021, Position, Navigation, and Timing Technologies in the 21st Century: Integrated Satellite Navigation, Sensor Systems, and Civil Applications (Wiley-IEEE Press)
  17. Owens, J. D., Houston, M., Luebke, D., Green, S., Stone, J. E., et al. 2008, GPU computing, In Proceedings of the IEEE, 96, 879-899. https://doi.org/10.1109/JPROC.2008.917757
  18. Saastamoinen, J. 1972, Atmospheric correction for the troposphere and stratosphere in radio ranging satellites, The use of artificial satellites for geodesy, 15, 247-251. https://doi.org/10.1029/GM015p0247
  19. Septentrio, PolaRx5 [Internet], cited 2021 June 1, available from: https://www.septentrio.com/en/products/gnss-receivers/reference-receivers/polarx-5
  20. Strode, P. R. & Groves, P. D. 2016, GNSS multipath detection using three-frequency signal-to-noise measurements, GPS Solutions, 20, 399-412. https://doi.org/10.1007/s10291-015-0449-1
  21. Tay, S. & Marais, J. 2013, Weighting models for GPS Pseudorange observations for land transportation in urban canyons, In 6th European workshop on GNSS signals and signal processing, p.4. https://hal.archives-ouvertes.fr/hal-00942180
  22. Ulversoy, T. 2010, Software defined radio: Challenges and opportunities, IEEE Communications Surveys & Tutorials, 12, 531-550. https://doi.org/10.1109/SURV.2010.032910.00019
  23. USRP Hardware Driver and USRP Manual [Internet], cited 2021 June 1, available from: https://files.ettus.com/manual/index.html
  24. van Diggelen, F. 2009, A-GPS: Assisted GPS, GNSS, and SBAS (Boston: London: Artech House)
  25. Won, J. H., Pany, T., & HeiN, G. W. 2006, GNSS software defined radio, Inside GNSS, 1, 48-56.
  26. Yoo, W. J., Kim, L., Lee, Y. D., & Lee, H. K. 2020, A coarse-time positioning method for improved availability, GPS Solutions, 24, 1-14. https://doi.org/10.1007/s10291-019-0919-y
  27. Zitouni, R., Ataman, S., Mathian, M., & George, L. 2015, Radio frequency measurements on a SBX daughter board using GNU radio and USRP N-210, In 2015 IEEE International Workshop on Measurements & Networking (M&N), 12-13 Oct. 2015, Coimbra, Portugal, pp.1-5. https://doi.org/10.1109/IWMN.2015.7322969