GNSS受信機UM982の制御コマンド

categories: gnss
tags: rtk um982

はじめに

Unicore CommunicationsのGNSS(global navigation satellite system)受信機UM982は、2アンテナ入力により静止時でも進行方向(heading)を推定でき、同時に1408チャネルの衛星信号を受信できながらも、比較的安価です。

しかしながら、受信機制御コマンドに関する公式資料がほとんどなく、サポートソフトウェアuSTARもこのUM982の機能を充分に生かすものではなかったため、あまり楽しめませんでした

偶然、他のUnicore受信機の制御コマンドマニュアルを発見しましたので、このUM982への適用を試してみます。

UM4B0受信機などの制御コマンド

インターネット上にHigh precision commands and logsなる資料を見つけました。この資料の6ページに、その対象受信機としてUM4B0、UM847、UB4B0などが挙げられています。これらは、UM982受信機よりも2世代前の受信機ですが、UM982でも利用できるかもしれないと思いました。

実験は、UM982受信機とマイコン(Raspberry PiやLatte Panda)をUSB接続して行います。そして、RTKLIB 2.4.3b34のCLI(command line interface)コマンドstr2strをマイコン上で実行して、他のパソコンからネットワーク経由でこの受信機を制御します。UM982には2つのアンテナ(Beitian BT-200とBN-345AJ)を接続しています。

UM982受信機を接続したマイコン

このマイコン上で、いつでも同じデバイス名(ttyUM982)にてアクセスできるようにします(参考:Linux上でのUSBデバイスのポート識別)。以下の作業をマイコン上で行います。

はじめに、rootユーザにて、ディレクトリ/etc/udev/rules.d/の中に、例えば00-um982.rulesなどのファイル名にて次の内容を書き込みます。

# Unicore Communications UM982 (Prolific Technology)
KERNEL=="ttyUSB*",\
    ATTRS{idVendor}=="067b", ATTRS{idProduct}=="23a3",\
    SYMLINK+="ttyUM982"

UM982受信機をUSBポートに接続し、rootユーザにてudevadm control --reload-rules && udevadm triggerを実行すると、/dev/ttyUSB0などのエイリアスとして/dev/ttyUM982が自動作成されます。

screenコマンドをマイコンにインストールしていれば、次のコマンドを実行することにより、受信機のNMEA-0183テキストメッセージを見ることができます。ボーレートの初期値は、115200 bpsです。

screen /dev/ttyUM982 115200

screenコマンド終了するには、キーボードからCTRL+A(コントロールキーを押しながらAキーを押す)、K(大文字)の順に入力します。

制御コマンドを入力するためには、行末にCR(キャレッジリターン)、LF(ラインフィード)の順に入力しなければならないのですが、screenコマンド上でリターンキーをおしただけではCRしか送信されません。リターンキーを押した後に、CTRL+Jを入力して、LFを送信することになりますが、とても面倒です。

そこで、ネットワーク経由にてこの受信機にリモート接続できるようにし、その接続ソフトウェアでCR LFを自動入力するようにします。RTKLIB 2.4.3b34のstr2strアプリケーションをコンパイルして、次のようにします。

str2str -in serial://ttyUM982:115200 -out tcpsvr://:2001 -b 1

これで、TCPポート2001番にて、この受信機にアクセスできます。netcatのncコマンドにてアクセスするには、次のようにします。

nc -c localhost 2001

-c(cは小文字)オプションは、リターンキーを押したときに、行末をCR LFにするものです。netcatのバージョンにより-C(Cは大文字)としなければいけない可能性があります。

これで、ローカルからもリモートからも、TCP/IP接続にてこのUM982受信機にアクセスできるようになりました。

UM982受信機の制御

上述の”High precision commands and logs”にあるコマンドを片っ端から試してみます。

受信機に接続したコンソール画面には、受信機から大量のNMEA-0183テキストメッセージが表示され、そのままでは制御コマンド応答を判別できません。はじめに、unlogコマンドにて、すべての受信機メッセージ出力をオフにします。制御コマンドは、大文字・小文字を区別しません。

unlog
$command,unlog,response: OK*21

UM982受信機にはイーサネットインターフェースがありませんが、イーサネット関係のコマンド(例えばconfig eth1 dhcpなど)も受け付けてしまいました。

config eth1 dhcp
$command,config eth1 dhcp,response: OK*03

受信機設定はconfigコマンドを使います。残念ながら、NovAtel受信機のlog rxconfig onceのような、全設定を確認するコマンドはありません。

config
$command,config,response: OK*54
$CONFIG,HEADING2,CONFIG HEADING2 FIXLENGTH*6F
$CONFIG,HEADING,CONFIG HEADING FIXLENGTH*6F
$CONFIG,UNDULATION,CONFIG UNDULATION AUTO*2B
$CONFIG,DGPS,CONFIG DGPS TIMEOUT 300*6C
$CONFIG,PPS,CONFIG PPS ENABLE GPS POSITIVE 500000 1000 0 0*6E
$CONFIG,COM1,CONFIG COM1 115200*23
$CONFIG,COM2,CONFIG COM2 115200*23
$CONFIG,COM3,CONFIG COM3 115200*23

特定のNMEA-0183メッセージを表示させるには、そのメッセージ名と、秒単位の表示時間をスペースで区切って与えます。例えば、GNGGA(GNSS multi-system positioning output)メッセージを10秒に1度の頻度で表示するには、gngga 10を送信します。

gngga 10
$command,gngga 10,response: OK*17
$GNGGA,073852.00,34xx.xxxxxxxx,N,13226.xxxxxxxx,E,1,28,0.7,77.4388,M,33.5804,M,,*46

gngga 0.05にて、1秒間に20回(20 Hz)のレートにて測位結果を出力できました。

ここで、カンマ区切りで7番目の値(GPS quality)が1になっていて、これは単独測位(single point)の結果であることを示します。

そこで、みちびき3号機(静止衛星)が放送する、航空向けの補強情報SBAS(エスバス、satellite based augmentation service)の利用をオンにしてみます。

config sbas enable msas
$command,config sbas enable msas,response: OK*7A
...
$GNGGA,074342.00,34xx.xxxxxxxx,N,13226.xxxxxxxx,E,2,28,0.7,76.0264,M,33.5804,M,00,0*7D

しばらくすると、GPS qualityが2になり、擬似距離・SBAS補強(pseudorange differential / SBAS position)が有効になりました。ここで、MSAS(エムサス、MTSAT satellite-based augmentation system)とは、気象衛星ひまわりの後継機の運輸多目的衛星(MTSAT: multi-functional transport satellite、エムティーサット)が放送していた補強信号のことです。この補強信号の運用は、2020年4月にみちびき3号機に移行しました

さらに、RTK(realtime kinematic)基準局のRTCM 3メッセージを、このマイコン上のstr2strコマンドにて、このUM982に注入してみます。

str2str -in ntrip://ntrip.phys.info.hiroshima-cu.ac.jp/OEM7 -out tcpcli://localhost:2001

すぐにGPS qualityが4になり、RTK fixed ambiguity solution(センチメートルオーダ測位)表示になりました。UM982基板上のRTK刻印のある青色LEDが点灯して、嬉しいです。

$GNGGA,101432.00,3424.xxxxxxxx,N,13226.xxxxxxxx,E,4,38,0.5,80.2697,M,33.5804,M,02,0*7A

UM982 RTK positioning

このGNGGAメッセージ表示を抑制するためにはunlog gnggaコマンドを与えます。

unlog gngga
$command,unlog gngga,response: OK*69

他のNMEA-0183メッセージ(例えば進行速度GPVTGや、進行方向GPHDTなど)も同様の方法で出力できます。しかし、進行方向についてgphdt 1は受け付けるのに、gphdt2 1は受け付けずに、gphdt2 onchangedとしなければなりませんでした。いくつかの点で、このマニュアルの記述と、UM982の動作との間で、異なる動作をするようです。

このマニュアルには、受信機生データ(Unicore mode data output command)に関する記述もありました。例えば、versionaは末尾がaなのでアスキー形式のバージョン表示で、versionbは末尾がbなのでバイナリー形式のバージョン表示です(後者はコンソールに非表示文字が出力されるために文字化けしています)。

versiona
$command,versiona,response: OK*45
#VERSIONA,61,GPS,FINE,2242,374462000,0,0,18,187;"UM982","R4.10Build5251","HRPT00-S10C-P","2310415000002-LR21B3223211894","ff2706a52d661a3d","2021/11/26"*8f89b0b8
versionb
$command,versionb,response: OK*46
�D�O%4���Q5251HRPT00-S10C-P2310415000002-LR21B3223211894ff2706a52d661a3d2021/11/26B��I

RTCM 3メッセージも出力できます。RTCMメッセージタイプ(MT)1005(アンテナ情報と座標)、1006(アンテナ情報、座標、オフセット)、1033(受信機情報)、1077(GPS MSM7擬似距離)、1087(GLONASS MSM7擬似距離)、1097(Galileo MSM7擬似距離)、1104(SBAS MSM4擬似距離、MSM7のものは受け付けませんでした)、1117(みちびきMSM7擬似距離)、1127(北斗MSM7擬似距離)、1019(GPSエフェメリス)、1020(GLONASSエフェメリス)、1042(北斗エフェメリス)、1044(みちびきエフェメリス)、1045(Galileo F/NAVエフェメリス)、1046(Galileo I/NAVエフェメリス)が受け付けられました。RTCMメッセージはバイナリー形式なので、コンソール画面上では文字化けしています。

rtcm1077 10
$command,rtcm1077 10,response: OK*76
Q!=���6� ��0  o6T0O~k�o���8:ك�z����Ig���q�3 ��c�p��BT��@x�B��E>������'��R�R_|�3<�p�g��Y�X�i�Ω�@��f�<����=:��B*@��;�����O�

一方、RTCM MT1230(GLONASS L1-L2コードバイアス)出力の設定は受け付けられませんでした。

rtcm1230 10
$command,rtcm1230 10,response: PARSING FAILD NO MATCHING FUNC  RTCM1230*61

obsvmコマンドにて、擬似距離も出力できます。周波数(GLONASSのみ)、PRN、擬似距離、搬送波位相、擬似距離の標準偏差、搬送波位相の標準偏差、ドップラ周波数、電波強度に比例する値C/N0、継続追尾秒数(lock time)、追尾状態、CRC(cyclic redundancy check)がメインアンテナで受信できた分だけ並びます。サブアンテナのものは obsvhで出力できます。

obsvma
$command,obsvma,response: OK*5A
#OBSVMA,89,GPS,FINE,2242,374528000,0,0,18,24;117,0,16,20627902.319,-108400481.008366,27,135,-304.449,4189,0,10579.010,00181c23,0,16,20627902.188,-84467930.848227,25,205,-237.229,3755,0,10190.010,01301c23,0,9,23439471.649,-123175254.644476,577,1400,879.645,2562,0,0.000,00181043,0,9,23439480.285,...

GPSの電離層パラメータを出力するコマンドはgpsionです。

gpsiona onchanged
$command,gpsiona onchanged,response: OK*70
#GPSIONA,90,GPS,FINE,2242,375034000,0,0,18,25;2.048909664154053e-08,0.000000000000000e+00,-5.960464477539062e-08,1.192092895507812e-07,1.413120000000000e+05,-1.966080000000000e+05,0.000000000000000e+00,1.966080000000000e+05,27,0,0,0*e2747736

他の電離層パラメータとして、北斗(BeiDou)のものbdsionと、Galileoのものgalionはありますが、その他の電離層パラメータはないようです。

また、航法メッセージそのままを出力するものはないようですが(Galileoの航法メッセージF/NAVに含まれるOSNMAやSSPが観測できなくて残念)、エフェメリスを解読したものはあります。GPSのものはgpsephemeris、GLONASSのものはgloephem、北斗のものはbdsephem、Galileoのものはgalephemです。Galileoについては、F/NAV(エフナブ、free navigation)、I/NAV(アイナブ、integrity navigation)ともに解読しているようです。

gpsephemerisa 10
$command,gpsephemerisa 10,response: OK*02
#GPSEPHEMERISA,92,GPS,FINE,2242,380880000,0,0,18,1;1,380580.0,0,43,43,2242,2242,381600.0,2.656016327e+07,3.851231848e-09,-1.314587003e+00,1.2153033516e-02,9.386...

マニュアルにはありませんが、これまでの類推で、みちびきのエフェメリスを出力するコマンドを見つけました。qzssephemerisです。

qzssephemerisa 10
$command,qzssephemerisa 10,response: OK*6D
#QZSSEPHEMERISA,COM1,0,90.0,FINE,2242,381050.000,2364033,0,18;194,378690.0,0,197,197,2242,2242,381600.0,...

NavICのエフェメリスを出力するコマンドは見つけられませんでした。

navicephema 10
$command,navicephema 10,response: PARSING FAILD NO MATCHING FUNC  NAVICEPHEMA*41
navicephemerisa 10
$command,navicephemerisa 10,response: PARSING FAILD NO MATCHING FUNC  NAVICEPHEMERISA*41
irnssephema 10
$command,irnssephema 10,response: PARSING FAILD NO MATCHING FUNC  IRNSSEPHEMA*41
irnssephemerisa 10
$command,irnssephemerisa 10,response: PARSING FAILD NO MATCHING FUNC  IRNSSEPHEMERISA*41

2アンテナの位置関係は、config headingにて設定できます。いろいろと操作して、元に戻したくなったときにはresetコマンドを用います。設定はsaveconfigで保存でき、工場出荷時の設定に戻すときにはfresetコマンドを用います。受信機機能の一部を削除する恐ろしい制御コマンドはこのUM982にはないようですので、色々と試してみようと思います。

まとめ

Unicore CommunicationsのUM982受信機の制御コマンドを試してみました。擬似距離については受信できるすべての衛星について出力されていそうです。一方、航法データについてはGPS、GLONASS、Galileo、北斗(BeiDou)、そしてマニュアルにはありませんが、みちびきのものが出力できました。RTCM3メッセージも出力できました。Unicore Communicationsからの公式ドキュメント公開を楽しみにしています。

CQ出版社が、Septentrioのmosaic-CLAS受信機の販売予約を受け付けています。2023年3月10日発売予定だそうです。これは、測位の信頼性が高いうえに、Galileo航法メッセージ認証OSNMAによる判定や、航法メッセージの生データ出力もできるそうです。私もこの受信機を1台、予約申込みしました。この数年の間に、楽しいGNSS受信機が市場に多く現れて、嬉しいです。


関連記事