はじめに
私が学生の頃研究の一環で船舶の位置情報を無線機で受信して、そのデータを収集するシステムの開発を行っていました。
最近は得られた技術的知見を広めてないと感じたので、船舶の位置情報を取得する方法を紹介したいと思います。
注意:本資料は昔研究ノートにメモしたことをベースに書いたものです。最新の環境で検証していないのでご注意ください。
概要
本資料では低予算・簡単構築の2点を重視した船の位置情報を取得するシステムの構築方法について説明します。
船舶の無線について
航行する船同士の衝突を回避するために位置情報・船名等のデータをVHS帯の電波で送受信するAISというシステムがあります。
AISの電波をデコードすると以下のようなNMEA形式の文字列で取得できます。
!AIVDM,1,1,,A,13u?etPv2;0n:dDPwUM1U1Cb069D,0*24
使用機器
以下の機器一覧は当時の私が所属していた機器を用いたものです。
海外サイトから機器を安く仕入れる、アンテナの自作等をすればもっと安くなると思います。
- Mac Book Air(OS:Sierra)
一応Raspberry Pi 3 Model3(OS:Raspbian)で動作することも確認しています。
高スペックなマシンは必要いらないので、もしかしたら初期のRaspberry Piでも動作するかもしれません。 - シェイクスピア - 5101センテニアルホワイト8' VHFマリンアンテナ
マリン用のアンテナを扱っているメーカのAISアンテナをAmazonで購入しました。
当時の価格は15,247円と使用機器の中で一番高額でした。
AISの利用周波数はCH87Bの161.975MHzとCH88Bの162.025MHzなので、それに対応したアンテナであること、耐塩仕様であることを満たせば自作して安くすませるのも手です。 - R820T2 & SDR+TCXO(温度補償型水晶発信器±0.5PPM)実装カスタムチューナー単品Blue[RTL2832U+R820T][広帯域受信用][High quality USB-CN][RTL-SDR専用]
電波を受信をPCの取り込めるように、RTL-SDRに対応したUSBドングルをAmazonで購入しました。
当時の価格は5,850円でした。
受信中はUSBドングルの温度が上がってAISの周波数からズレてしまう現象が発生するので、TCXO(温度補償型の水晶発振器)があるものを選んでいます。
TCXOが搭載していない方のUSBドングルは安く販売していますが、性能が悪すぎで使いもになりませんでした。 - uxcell アダプタコネクタ 同軸ケーブル MCXライトアングル オスメス RG316 20cm
AISアンテナとUSBドングルを繋ぐ変換ケーブルをAmazonで購入しました。
当時の価格は734円でした。
PC以外の機器で総額約2200円となります。
マリン用で販売しているAIS受信機の値段はだいたい2万円ほどなので、それと比べるとかなり安く構築することができます。
構成図
環境構築
USBドングルで受信した電波から船舶の情報が取得できるようにrtl_ais
コマンドが使えるようにします。
# USBドングルに
$ brew update
$ brew install libusb
# rtl_aisコマンドを打てるようにする
$ git clone https://github.com/dgiardini/rtl-ais
$ cd rtl-ais
$ make
$ sudo cp rtl_ais /usr/local/bin
コマンドを実行してコンソール上にNMEAを表示してみましょう。
# デフォルトはローカルホストの10110ポートで送信ます。
sudo rtl_ais -R -n -S 1
地図上に表示させましょう。
NMEAだと船舶がどこにいるのか分かりませんので、OpenCPNを使って表示させてみましょう。
以下のサイトからダウンロードしてください。
https://opencpn.org/OpenCPN/info/downloadopencpn.html
OpenCPNの起動後、「preferences.. > Connections 」を選択して、以下のように設定します。
Enable | Type | DataPort | Priority | Parameters | Connection |
---|---|---|---|---|---|
true | Network | 127.0.0.0:10110 | 1 | UDP | Input |
rtl_aisから出力したNMEAがOpenCPNで上手く入力することができれば、地図上に船舶を表示することができます。
最後に
今回は研究ノートのメモを引っ張り出して、AISの受信環境の構築についてまとめてみました。
次回は、AISのNMEAの読み方について紹介したいと思います。