1. 서론
선박자동식별시스템(automatic identification system, AIS)은 선박의 선명, 제원 등의 선박 정보와 운항 정보, 보안 정보 등을 VHF(very high frequency) 통신으로 선박 또는 육상에 자동으로 송수신하는 장치이다. 2002년 이후로 국제해사기구(International Maritime Organization, IMO)에서는 이 AIS 정보를 활용하여 해상관제 수단으로 사용하고, 선박 정보 수집 및 선박 간의 항해안전, 연안 해역의 선박 운항 모니터링에 활용하기 위해 AIS를 채택하였다[1]. 이후 AIS를 활용하여 타선의 정보를 이용한 선박간 충돌방지 및 선박사고 발생시 수색/구조와 같은 긴급상황에 활용하고 있다[2–5].
AIS는 해양 물류 감시를 위한 경우, 선박-선박 또는 선박-육지 간 통신을 사용하는데, VHF 밴드 영역의 주파수를 사용하며, 이에 따라 LOS(line of sight) 방향의 최대 40 NM(nautical mile)의 통신범위를 갖는다[6]. 따라서 AIS는 선박이 지평선을 넘어 해상을 이동할 때 지구의 곡률로 인하여 전파가 수신되지 않는 거리에 위치하기 때문에 통신 문제가 발생한다. 이에 따라 육지 근처의 선박 AIS 정보는 수신할 수 있으나, 선박의 거리가 멀어지게 되면 통신이 되지 않는다. 이를 해결하기 위해 UAV(unmanned aerial vehicle)를 활용한 연안의 AIS 통신범위를 넓히는 시스템이 제안되었다[7].
부산의 항만은 우리나라의 물류 요충지로서 우리나라의 빼놓을 수 없는 기간 산업이다. 국내에도 최근 빈번하게 발생하는 해양 사고와 해상안전의 중요성이 확대되면서 AIS 수요가 증가하고 있기에 위성을 활용한 선박의 탐지 및 AIS 정보 확보 등을 고려할 필요가 있다. 이러한 수요를 고려하여 부산대학교 항공우주공학과 학생들을 바탕으로 큐브위성 경연대회 참가를 위한 조직이 구성되었고, 초소형 위성에 대하여 선행연구를 진행하였다. 이를 계기로 2020년 초 부산시 및 부산테크노파크 미래해양도시 관련 사업으로서 초소형 위성 개발 협약이 완료되었으며, 선박 정보를 지상으로 전달하는 임무를 수행하는 큐브위성을 개발하고자 하였다. 본 논문에서는 큐브위성에 적용할 예정인 탑재체 장비의 시험을 목적으로 소프트웨어 정의 라디오(software-defined radio, SDR)를 활용하여 위성용 AIS 수신기 모듈을 지상시험 하였던 내용을 다루고자 한다.
2. PNUSAT-1
부산대 초소형 위성 PNUSAT-1(Pusan National University Satellite No. 1)은 기존 AIS 통신 거리 한계를 우주상에서 인공위성 운영을 통해 해결하고, 여러 대의 선박 정보를 동시에 획득할 수 있는 큐브위성이다. 국제 선박의 해상 간 이동 시 선박-육지 간 통신이 불가할 경우 Fig. 1과 같이 위성을 이용하여 AIS 정보를 획득할 수 있으며, 약 100 kg에 달하는 기존 인공위성의 1/25에 해당하는 4 kg 미만의 큐브위성을 이용하여 저비용, AIS 위성 실현을 목표로 한다[8].
Fig. 2와 같이 선박에서 송출하는 AIS 신호를 위성이 우주 공간상에서 수집하기 위해 QubeAIS 모듈을 선정하였다. 이는 1U+ 크기의 큐브위성에 탑재 가능한 크기이며, Satlab 社에서 제작하였다.
QubeAIS 모듈이 수집하게 되는 AIS 신호의 Raw Data는 NMEA(Nation Marine Electronics Association) 표준을 따르며, 예시로 Fig. 3과 같다. 콤마 단위로 구분되며 첫 세그먼트부터 차례로 의미를 분석하면 다음과 같다[9].
-
① AIS VDM message
-
② 전체 문장의 수
-
③ 전체 문장중의 문장번호
-
④ 서로 다른 문장으로 구분할 수 있는 순서번호
-
⑤ “A” or “B”로 나타내어지는 AIS Channel
-
⑥ 선박 정보 데이터
-
⑦ CRC Checksum
⑥은 우리가 원하는 선박에 대한 정보를 나타내며 ASCII 6비트 바이너리 형식으로 표현되며, 이를 부호화(encode)되었다고 말한다. 이를 해석하는 방법은 먼저 2진수 형식으로 변환한다. 그 후 만들어진 2진수를 Table 1에 맞게 파싱(parsing)하는 과정을 거치고 각각의 세그먼트들을 10진수로 변환하면 세그먼트에 대응되는 각각의 선박 정보를 구할 수 있다.
QubeAIS 모듈의 제원에 기술된 데이터 처리 과정은 Fig. 4와 같다. 수신기 실행 파일의 주요 부분은 복조기(demodulator)와 복호화(decoder)이며, 샘플링된 데이터를 유효한 AIS 메시지로 변환하는 역할을 맡는다. QubeAIS 모듈 내부 설정에 따라 두 개의 AIS 채널(채널 1 및 2 또는 채널 3 및 4)을 분리하기 위해 채널 필터에 의해 필터링된다. 그런 다음 필터링된 데이터에서 패킷 탐지기가 실행되어 채널에서 가능한 패킷을 검색한다. 우주에서 수신된 AIS 메시지는 최대 ±4 kHz의 도플러 편이를 받을 수 있으므로 복조 알고리즘의 후속 단계를 조정하는 데 중심 주파수 추정기가 사용된다. 패킷 필터의 출력은 GMSK 복조기에 의해 처리되고, 9,600 bps 비트 스트림의 재구성을 위해 시간 및 데이터 복구 블록으로 전달된다. 마지막으로 패킷 검증 과정에 의해 비트 스트림이 올바른 HDLC 프레임 구조와 CRC CheckSum을 검사한다. 이와 같은 과정을 거치면 Table 2와 같은 40 byte의 크기를 가진다. 그 후 SD 카드에 저장된 데이터는 선택적으로 외부로 출력시킬 수 있다[9].
Fig. 5는 QubeAIS 모듈에 전력을 공급하기 위해 자체 제작한 전력 보드를 보여주고 있다. 전력 보드에 공급된 전압은 AIS 리시버 구동에 필요한 3.3 V, 5 V로 분리되어 출력된다. P1 커넥터를 통하여 전력을 공급하고, P2 커넥터를 통하여 AIS 리시버 내부에 진입할 수 있다. 그 후 우분투 운영 체제에서 미니컴(Minicom, 시리얼 통신용 터미널)을 사용하여 연결한다.
Fig. 6은 미니컴을 통해 입력한 명령어를 보여주고 있다. UART 통신을 사용할 것이기 때문에 일반적인 속도인 115,200 bps를 설정해주고, CSP 패킷을 받기 위해 주소와 게이트웨이 값을 각각 지정해 준다.
QubeAIS Receiver와 마더보드 간에 명령 및 데이터를 송수신할 수 있도록 Satctl을 사용한다. Satctl이란 Satlab control의 약자이며 QubeAIS Receiver의 제조사에서 제작한 c언어 소스코드이다. 이를 컴파일하기 위해선 Waf를 사용하는 것이 권장되며, 이는 서로 다른 기종의 운영체제에 대한 Cross-Development Tool로써 빌드 자동화 도구이다. Fig. 7에 실행파일이 도출되는 과정을 나타내었다. 결과적으로 이 실행파일을 통해 QubeAIS Receiver와 명령 및 데이터를 송수신할 수 있다.
3. SDR 기반 위성용 AIS 부품 시험
항구 근처는 습도가 높으며 컨테이너를 다루는 운송 장비로 인하여 먼지가 많은 편이다. 따라서 위성용 부품을 항구에서 직접 수신시험을 한다면 부품을 오염시킬 위험요인이 다분하다. 또한 일반적으로 위성용 부품에 대한 시험은 클린 룸에서 진행되기에 이러한 점을 고려하여 실내에서 선박정보신호를 발생시킬 수 있는 환경을 만들고자 한다.
이를 위한 SDR 송수신기를 활용한 AIS 부품 시험의 구성을 Fig. 8과 같이 구성하였다. 첫 번째 단계로 R820T2 SDR을 활용해 항구 근처에서 AIS 신호를 수집할 수 있고, 두 번째 단계로 수집된 신호를 가지고 실험실 내에서 Adalm-Pluto SDR을 활용하여 송신할 수 있다. 마지막으로 AIS 신호가 위성까지 긴 거리를 나아가며 감쇄되는 신호를 모사하기 위해 감쇄기(attenuator)를 사용하여 구현하였다. 이러한 상황일 때 QubeAIS 모듈에서 AIS 신호 수신이 제대로 되는지에 대한 실험을 진행하였다.
기존의 라디오가 각종 전자부품을 납땜하여 고정적인 기능이었다면 SDR은 디바이스에 범용 전자부품을 탑재해 소프트웨어만 바꾸면 라디오 기능이 바뀌는 장치이다. 따라서, 하나의 장비로 다양한 응용이 가능하다는 장점이 있다. 이러한 SDR 수신기를 적용함으로써 얻는 장점은 가격이 상대적으로 저렴하며, 크기가 소형이기에 야외에서 데이터를 수집하기에 용이하다. 또한 MATALB의 Support Package를 활용할 수 있어 진입 장벽이 낮기에 쉽게 이용이 가능하며, 이에 적합한 SDR 수신기로서 R820T2 SDR을 선정하였으며, Fig. 9에 나타내었다.
Fig. 10과 같이 노트북에 설치하는 과정을 먼저 진행하였다. 첫 번째 단계로 연안의 선박으로부터 실제 AIS 신호를 저장하고자 한다. 이를 도식화하면 Fig. 11과 같다.
또한 Fig. 12와 같은 MATLAB 에드온(Add-on)에서 제공하는 ‘Communication Tool Box package for RTL-SDR‘를 활용할 수 있도록 진행한다.
툴박스 내 ‘Ship Tracking Using AIS Signal Example.m’ 코드를 사용하며, AIS 신호의 주파수는 주로 161.975 MHz, 162.025 MHz이기 때문에 중심주파수(center frequency)를 162 MHz로 설정한다. 실험 장소는 Fig. 13과 같이 많은 선박들이 정박해 있는 ‘부산항 제 4부두’에서 진행하였다.
약 2분 동안 수신을 진행한 뒤, MATLAB 기능 중 BasebandFileWriter 함수를 이용하여 해당 데이터를 저장하였다. 이때, 지정 변수들은 Table 3과 같이 설정하였다. 이 함수를 통해 복소수 형태의 데이터를 bb 형식의 파일로 저장할 수 있다.
Fig. 14는 이에 대한 결과를 보여주며, AIS 실제 신호를 수집한 파일이다.
앞서 포착된 AIS 신호를 송신하기 위하여 Fig. 15와 같은 Adalm-Pluto SDR 모듈을 선정하였다. 해당 SDR 송신기는 SDR 송수신기 모듈 중 비교적 저가의 장비인 반면, R820T2 SDR 수신기가 갖지 못한 송신 기능을 제공하고 있다. 또한 관련 전문 지식이 부족하더라도 일반인들이 쉽게 배울 수 있도록 고안되어 있으므로 능동적으로 RF 및 무선 통신 기술에 대한 기초를 탄탄하게 닦을 수 있을 수 있는 장점뿐만 아니라, MATLAB Simulink 소프트웨어 패키지를 지원하기 때문에 그래픽 사용자 인터페이스(GUI)를 통해 친숙하고 빠르게 접근할 수 있는 특징을 갖는다.
또한 SDR 모듈을 쓴 이유는 실제 우주에서 위성이 선박을 향해 접근 및 멀어짐에 따라 발생하는 도플러 시프트 현상을 모사하기 위함이다. 현 논문에서는 적용하지 않았지만, 추후 위성의 움직임에 따른 도플러 시프트 현상의 재현이 가능할 것으로 사료되어 주파수 변경이 가능한 SDR 모듈을 적용하였다(Fig. 16).
두 번째 단계로 Fig. 17과 같이 앞서 포착된 실제 AIS 신호를 송출해 보고자 한다. MATLAB 내 Add-on 메뉴에서 ‘Communication Toolbox Support Package for Analog Devices ADALM-Pluto Radio’을 추가하면 Simulink 내에서 Adalm-Pluto 블록을 사용할 수 있다.
Fig. 18과 같이 MATLAB 시뮬링크에서 ‘baseband File Reader’ 블록과 ‘Transmitter’ 블록을 결합한다. Reader 블록에는 앞서 얻은 bb파일을, Transmitter 블록 내 지정변수에는 SDR 수신기를 사용했을 때와 똑같은 값으로 설정하여 실행을 하였을 때 결과를 살펴본다.
다음은 Spectral analysis로 살펴본 결과이다. Fig. 19는 AIS 신호를 송신하지 않고 있을 때, Fig. 20은 AIS 신호를 송신하고 있을 때의 결과를 보여준다. Fig. 20에서 AIS 신호의 주파수 영역대인 160 MHz 부근에서 전과 비교하여 변화가 생기는 것으로 볼 때 정상적으로 송출되고 있는 것으로 판단 가능하였다.
QubeAIS 모듈은 저궤도 500 km에서 운용된다. Fig. 21과 같이 선박에서 송출된 AIS 신호가 위성(최소 직선거리 500 km, 최대 직선거리 2,100 km)까지 전달되는 과정에서 신호 세기(dB)가 감소하게 되는데, 이러한 과정을 경로 손실(path loss)이라 한다. 이러한 환경을 감쇄기를 사용하여 구현하도록 할 것이다. 이때 신호 세기(dB) 감소량을 자유 공간 경로 손실(free space path loss, FSPL) 계산식을 사용하였으며, 수식은 아래와 같다[10].
λ: 신호의 파장(m)
f:신호의 주파수(Hz)
d:통신 거리(m)
c:빛의 속도(3× 108 m/s)
FSPL식 양변에 log를 취해 데시벨(dB) 단위로 표현할 수 있다.
선박 송신기의 게인 값(G transceiver)과 위성 수신기의 게인 값(G receiver)을 고려한다.
Class A 선박에 대하여 법률로 정해진 AIS 신호 송출 전력이 12.5 W이므로 dB 단위로 표 현하면 11 dB이다. 위성 수신기의 게인 값은 0에 근접하므로 0 dB로 가정한다.
AIS 주파수 162 MHz에 대하여 최소거리 500 km(위성이 선박 바로 위에 있을 때, 즉 위성 고도), 요구사항에 따른 최대 거리 2,100 km일 때에 계산해 보면 다음과 같다.
따라서 실제 신호 세기는 120–132 dB(w) (= 90–102 dBm) 정도의 감쇠가 일어난다고 볼 수 있다. 반면 실험에서 사용하는 Adalm-Pluto의 출력 파워는 7 dBm이므로 이를 고려해 127–139 dB(w) (= 97–109 dBm) 감쇄 환경을 만들어주면 실제 신호 세기 감소 환경을 모사할 수 있다.
Fig. 22는 0 dB부터 30 dB까지 10 dB 간격으로 감쇠시킬 수 있는 저가의 고정형 감쇠기이다. 이를 SMA 케이블을 사용해 일렬로 연결하여 120 dB 혹은 130 dB 감쇠 환경을 만들 수 있고, 10 dB 이하의의 수치는 Adalm-Pluto의 시뮬링크 환경에서 게인 값을 수 dB 단위로 입력할 수 있으므로 요구되는 감쇠 환경을 만들 수 있다. Fig. 23은 최종적으로 Adalm-Pluto SDR과 연결한 모습이다.
Fig. 24는 QubeAIS 모듈의 시험 모습을 보여주고 있다. 안테나의 경우, 저가의 VHH 대역의 제품을 사용하였다. 최대거리일 때 나타나는 감쇠량 132 dB를 모사하기 위하여 Fixed Attenuator로 140 dB을 연결하였다. 이러한 상황에서 Fig. 25는 QubeAIS 모듈에서의 수신 결과를 보여준다.
수신 결과로서 정상적으로 데이터를 출력하는 모습을 보여주고 있으며, Channel 1을 통하여 수신했다는 것을 알 수 있다. ‘04690ea74000000a42c3a094181068d899c601854f3ec7’는 QubeAIS 모듈의 출력 데이터로서 16진수의 형식으로 표현되었다. 이 데이터를 해석하는 방법은 2진수로 먼저 변환 후, 국제적으로 통용되는 ITU-R M.1371-5 부속서에 기술된 AIS 데이터 형식으로 2진수 값들을 파싱(parsing)한다. 그 후 각각의 파싱된 값들을 10진수로 변환하여 선박 정보들을 얻을 수 있다.
이러한 일련의 과정을 COSMOS라는 프로그램 내에서 루비(Ruby) 언어로 구현하였고 그에 따른 결과는 Fig. 26과 같다. 해상이동업무식별번호(MMSI)를 비교해 보니 서로 동일하였고, 정박해 있는 선박들로 실험을 진행하였기 때문에 선회율(rate of trun)과 실제속력(speed of ground)이 0임을 보여준다. 또한 경도/위도를 보면 각각 129.31251/35.18704로서 R820T2 SDR로 부산항에서 수집한 위치와 동일함을 알 수 있었다. 따라서 QubeAIS 모듈이 정상적으로 AIS 데이터를 수신한 것으로 판단하였다.