ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BNC(BKG Ntrip Client) 메뉴얼 - 2.13.6/CentOS/GUI ver
    항법연구실/GPS와 데이터 2026. 7. 1. 19:49

     

    BNC를 사용하기 위해 이것저것 찾아봤지만 생각보다 문서가 많이 없었다. 특히 한국어로된 자료는 희귀하더라... 

    그래서 이번에 BNC를 사용하면서 마주한 오류들과 어려웠던 사용법에 대해서 작성해본다. 

     

    2.13.6버전을 Linux CentOS에서 설치하고 GUI/CLI환경에서 실행하는 방법에 대해 다루어본다. 

     

    1. BKG Ntrip client 

    BKG(독일 연방측량지리청)에서 개발한 고정밀 위성 항법 데이터 수신 및 처리 프로그램,
    인터넷을 통해 실시간으로 위성 보정 데이터를 받아와서 GPS/GNSS의 오차를 ~mm, ~cm단위로 줄여주는 역할을 한다. 

     

    BNC가 뭔가 하면 BKG에서 만든 Ntrip Client프로그램이다. 우리나라에서도 만든 Ntrip Client가 있다. BNC를 이해하기 위해서는 Ntrip Client에 대한 개념을 꼭 알아야한다. Ntrip Client가 뭔지에 대해서는 이전 자료를 보고 오면 좋다.

     

    Ntrip은 프로토콜의 일종으로, 기지국(기준점)에서 관측한 위성 오차 보정 데이터를 인터넷을 통해 실시간으로 전송하는 프로토콜이다. 이 시스템은 세가지로 구성되며, Ntrip Client는 그 중 데이터를 최종적으로 받는 수신자 역할을 의미한다. 

    • Ntrip Sever(위성 → 기지국): 전 세계에 퍼져있는 수많은 GNSS위성 기준점(기지국)은 각자 위치에서 위성 신호를 받아 오차 보정 데이터를 실시간으로 찍어서 보냄  
    • Ntrip Caster (위성 → 인터넷): 모든 방송을 모아서 틀어주는 종합 방송 플랫폼 개념(ex. igs-ip.net), GPS/GLONASS중심의 보정정보가 모이는 곳 
    • Ntrip Client(인터넷 → 사용자): 우리가 사용하는 BNC프로그램, 인터넷에 올라온 데이터를 다운로드하여 최종 사용자가 쓸 수 있도록 해주는 프로그램

     

    BNC 관련 정보 (2.13.6) 


     

    2. BKG Ntrip Client 설치

    설치 사이트: https://igs.bkg.bund.de/ntrip/bnc

    * 2.13.6 버전 기준, shared 빌드를 사용, Qt5라이브러리 설치 필요

     

    2.1. Windows PC에서 다운로드 후 서버로 옮기는 방법

    Windows PC에서 서버 버전과 동일한 .zip파일을 다운로드 후, scp명령어를 통해 서버로 전송할 수 있다.

    • 내 컴퓨터(Windows) → 서버
    scp -P [port] [send path] [ID]@[server ip]:[receive path]

     

     

    2.2. 서버에서 바로 다운로드 하는 방법(CentOS 9기준)

     

    다운로드 사이트에서 [다운로드 파일(ex. v2.13.6-el9)을 우클릭 > 링크 주소 복사]를 통해 다운로드 링크를 복사하여 Linux wget명령어를 이용하여 서버에서 바로 다운로드 받을 수 있다.

    wget https://igs.bkg.bund.de/root_ftp/NTRIP/software/BNC/bnc-2.13.6-rocky9.zip

     

    서버에서 다운받은 파일을 압축해제한다

    unzip bnc-2.13.6-rocky9.zip

     

     

    2.3. 설정 파일(Configuration)의 위치

    BNC GUI CLI 모두 동일한 설정 파일을 사용한다. Linux 시스템에서 기본 설정 파일 경로는 다음과 같다.

    home/user/.config/BKG/BNC.bnc

     

    3. BNC GUI 초기 설정

    3.1. bnc GUI 실행하기

    설정을 마친 뒤, 터미널에서 bnc실행 파일이 있는 폴더에서 bnc를 실행시킨다. (실행파일명 그대로 입력)

     

     

    3.2. Stream 추가하기

    Caster 주소 입력 후 사용할 마운트포인트(Stream)를 선택하기 위해 [좌측 하단 ‘Add Stream’ 선택 > ‘Caster’선택] 과정을 거치면 다음과 같은 창이 나온다.

     

     

    ① Stream사용을 위한 사용자 등록

    관측소와 연결하여 실시간으로 데이터를 받을 수 있도록 사용자 등록을 진행해야한다.

    Ntrip Broadcasters 사용자등록 사이트: https://register.rtcm-ntrip.org/cgi-bin/registration.cgi

    사용자 정보를 입력하고 동의 항목에 체크하여 Send Registration을 통해 사용자 등록 신청을 한다. 1~3일 뒤, 사용자 등록 확인 메일을 수신할 수 있으며 추가 메일을 통해 사용자 등록을 완료할 수 있다. 해당 과정을 통해 euref-ip.net, igs-ip.net,  products.igs-ip.net Caster의 권한을 얻을 수 있다.

     

     

    ② BNC에서 Stream 추가

     

    Caster host에서 host/port/User/Password 정보를 입력한 뒤, 우측 하단 Get table버튼을 누르면 사용 가능한 Mount Point가 뜬다. 원하는 Stream을 선택하고 Select하면 메인 화면에 해당 Stream이 추가된 것을 확인할 수 있다. Stream을 모두 추가한 뒤, 옵션을 선택하여 여러 기능을 수행할 수 있다.

     

     

    위 도메인에서 mount point, RTCM format message를 통하여 해당 Stream에 어떤 데이터가 담겨있는지 확인할 수 있다.

    -         RTCM message List: https://www.use-snip.com/kb/knowledge-base/rtcm-3-message-list/

    해당 메시지 번호를 확인하여 위성 궤도를 다운로드 하기 위해서는 1019 또는 1020 Ephemeris 정보를 포함하고 있는 Stream을 선택한다. 궤도/시계 보정정보를 다운로드하려면 1060, 1062 메시지를 포함한 Stream을 선택한다. 더 자세한 RTCM메시지는 위 링크를 참고한다.

     

    메시지 번호 내용
    1004 GPS L1/L2 통합 관측값(RTK)
    1012 GLONASS 통합 관측값(RTK)
    1019 GPS Ephemeris
    1020 GLONASS Ephemeris
    1045 Galileo Ephemeris
    1060 GPS 궤도/시계 보정
    1061 GPS URA(예상 오차 범위)
    1062 GPS 시계 보정(high-rate)

     

    다음은 스트림을 추가한 화면이다. decoder, lat. lon, nmea, ntrip버전, 현재 수신받은 bytes의 정보를 담고 있다.

     

     

     

     


    4. 각 옵션별 사용 방법 

     

    다음은 상단 탭을 선택하여 설정할 수 있는 옵션들이다.

    Network부터 PPP를 수행하는 기능까지 있지만, 일단 필자가 PPP를 잘 몰라서 .. Rinex Ephemeris, Observation, 그리고 Corrections 위주로 작성해보겠다. 

     

     


    4.1. Network

     

     

    네트워크는 보안 네트워크의 프록시 및 SSL 인증을 위한 설정이다. 보통 BNC프로그램을 사용하는 환경의 내부 망 보안이 강력해

    서 외부 인터넷과 직접 연결이 되지 않거나 SSL(보안 인증서)가 필요한 상황에서 사용하는 옵션이다.

     

     

     

    4.2. General


    4.3. RINEX Observations

     

    RTCM 바이너리스트림을 RINEX obs포맷으로 변환하여 파일로 저장하는 옵션을 다룬다. Skeleton extension은 뼈대 파일로, 헤더에 들어갈 수 있는 정보를 설정하는 것이다. 실시간 RTCM데이터를 RINEX로 변환할 때 안테나 모델명이나 수신기의 위치(실제 위치는 아니지만 대략적인 위치)정보를 채우기 위해 사용하므로 필수적이지 않다. Version 2에서는 Signal Priorty 옵션을 설정할 수 있다.


    4.4. RINEX Ephemeris

    Directory정보를 입력하면 해당 디렉토리에 GPS brdc파일(.N) GLONASS brdc(.G)파일이 생성된다. Port는 옵션 사항이다. Port Linux환경에서 nc localhost [Port번호] 명령어로 조회할 수 있다. nc(Netcat) TCP(or UDP)연결 시 데이터를 읽고 쓰는 명령어이다.


     

    4.5.Broadcast Correction

     

    SSR보정정보를 제공하는 옵션으로 ASCII텍스트 포맷으로 보정 데이터를 저장한다. .ssr포맷을 사용하며 데이터 블록은 >로 시작하는 헤더를 사용한다.

     

     

    헤더에는 [SSR보정정보 종류 / epoch / 업데이터 간격 코드(3=10) / 데이터라인 개수 / Mountpoint]의 정보가 담겨 있으며, ORB에서 Body IOD와 위성별 RAC성분의 보정치(단위: m)와 각 성분의 속도(단위: m/s)를 제공한다. CLK에서는 IOD와 위성 시계 오차 보정식의 0,1차, 2차 다항식 계수를 나타낸다.

     

    CODE_BIAS에서는 위성이 쏘는 다양한 주파수 신호 간의 하드웨어적 시간 지연 오차를 담고 있다. 신호 종류별 고유의 지연값을 m단위로 나열하였고, 이는 다중 주파수를 사용할 때 신호간 동기화 설정 시 필요한 데이터이다.

     


     

    4.6. Feed Engine

     

    BNC가 받은 실시간 RTCM 스트림들을 GNSS Network Engine가 실시간으로 사용할 수 있도록 동기화 또는 비동기화 된 ASCII 관측치 데이터로 변환하여 실시간으로 데이터를 제공하는 Feeding을 해주는 옵션이다. Port에 포트 번호를 작성하고 Linux에서 nc 명령어를 활용하여 관측치 데이터를 실시간으로 조회할 수 있다.

     


    4.7. Serial Output

     

    • 가상 포트를 활용하여 Serial Output 이용하기

    Window에서는 COM포트 조작이 어렵기 때문에 Linux 환경에서 가상 포트를 만들어 실행한다. Linux socat을 명령어를 이용하여 RTCM 데이터를 실시간으로 받을 수 있다.

     

     

     

    (1) 데이터를 보내고 받을 가상 Serial Port생성하기(Linux socat)

     

    socat PTY,link=/tmp/vtty0,raw,echo=0 PTY,link=/tmp/vtty1,raw,echo=0 &

     

     

    (2) MountPoint를 설정하고 Port name/tmp/vtty0로 설정

    Mount Point는 현재 실행중인 SSR정보를 담은 Stream을 사용하였다. vtty0 포트는 데이터를 수신받고 /tmp/vtty1로 송신하는 역할을 한다. Baud rate 115200을 사용하고 나머지는 Default값을 사용하였다.

    cat /tmp/vtty1

     

     

    (3) 수신 포트 확인(/tmp/vtty1)

    cat /tmp/vtty1

     

    우선 cat 명령어를 사용하여 Serial Port에서 RTCM데이터로 데이터를 수신 받는 것을 확인할 수 있다.

     


    우선 지금까지 익힌 내용을 토대로 작성해보았다. 앞으로 더 알게되면 추가해야지 .. 

    그리고 GUI가 아닌 CLI환경에서도 실행할 수 있다. 해당 내용에 대해서는 필자가 조금 더 익히고 자세히 작성해보겠다. 

     

     

Designed by Tistory.