GNSSを利用する

概要

EDGEPLANT T1には、GNSSモジュールとして、u-blox社の NEO-M8U が搭載されています。 NEO-M8Uは、複数のGNSSからの衛星測位に加え、UDR1 による位置情報の推定測位もサポートしており、精度の高い測位を行うことが可能です。

1

Untethered Dead Reckoningの略。モジュール内部の情報のみで位置情報を推定する技術。

仕様

モジュールの詳細な仕様については、u-blox社のマニュアルを参照してください。

通信設定

path

baudrate

GPS device

/dev/ttyTHS1

9600

PPS 2 device

/dev/pps0

-

2

https://en.wikipedia.org/wiki/Pulse-per-second_signal

モジュール設定

工場出荷時のモジュールの設定は、以下を除き全てモジュールの初期値です。

項目

設定値

UBX-CFG-NAVX5

minSVs

3 [#SVs]

minCNO

6 [dBHz]

アンテナ

衛星からの信号を受信するためには、アンテナを接続する必要があります。 アンテナの接続方法や詳細な仕様については、 取扱説明書 を参照してください。 標準ではTaoglas社のアンテナ AA.162.301111 が同梱されています。 使用実績のあるそれ以外のアンテナについては サポート窓口 にお問い合わせください。

利用方法

シリアル通信でデータを取得したい

/dev/ttyTHS1 でシリアルデバイスとしてGNSSモジュールにアクセスできるため、必要な設定を行うことでシリアル通信でデータを取得することができます。

  1. シリアル通信のオプションを設定します。

    $ stty -F /dev/ttyTHS1 -hupcl -icrnl -ixon -opost -isig -icanon iexten -echo -echoe -echok
    
  2. 任意のツールでシリアル通信を行います。 以下の例では cat コマンドを使うことにより、NMEAデータを文字列として表示させています。

    $ sudo cat /dev/ttyTHS1
    $GNRMC,,V,,,,,,,,,,N*4D
    $GNVTG,,,,,,,,,N*2E
    $GNGGA,,,,,,0,00,99.99,,,,,,*56
    $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
    $GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
    $GPGSV,1,1,00*79
    $GLGSV,1,1,00*65
    $GNGLL,,,,,,V,N*7A
    $GNRMC,,V,,,,,,,,,,N*4D
    

起動時にGNSS設定を行いたい

注釈

edgeplant-l4t-boot サービスを利用するには、以下のバージョンが必要です。

  • edgeplant-l4t-tools: 1.4.0 以上

edgeplant-l4t-boot サービスを有効化することで、起動時に以下の設定を行うことができます。

  • シリアル通信のオプション設定

  • GNSSの初期設定

    • UBX-CFG-PRT (ボーレートを57600に設定)

    • UBX-CFG-SBAS

    • UBX-CFG-RATE (測定周期を200msに設定)

以下のコマンドにより、 edgeplant-l4t-boot サービスを有効化します。

$ sudo systemctl enable edgeplant-l4t-boot
$ sudo systemctl start edgeplant-l4t-boot

デバイスを再起動します。

$ sudo systemctl reboot

起動時にGNSS設定が行われるため、コマンドによる設定を行わずにNMEAデータを取得することができます。

$ sudo cat /dev/ttyTHS1
$GNRMC,,V,,,,,,,,,,N*4D
$GNVTG,,,,,,,,,N*2E
$GNGGA,,,,,,0,00,99.99,,,,,,*56
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E
$GPGSV,1,1,00*79
$GLGSV,1,1,00*65
$GNGLL,,,,,,V,N*7A
$GNRMC,,V,,,,,,,,,,N*4D

GNSS設定内容の詳細については、以下のファイルをご確認ください。

/usr/bin/edgeplant-l4t/edgeplant-l4t-boot.sh
/usr/bin/edgeplant-l4t/ublox_init.py
/usr/bin/edgeplant-l4t/ublox_config.py

警告

設定内容を変更したい場合は、 edgeplant-l4t-boot サービスで利用しているファイルを変更するのではなく、 edgeplant-l4t-boot サービスを参考にして別のサービスを作成してください。

edgeplant-l4t-boot サービスで利用しているファイルは、 edgeplant-l4t-tools パッケージをアップデートしたときに上書きされる可能性があります。

gpsdを利用したい

EDGEPLANT T1の標準OSにはデフォルトで gpsd がインストールされています。 gpsdを利用したい場合は、以下の手順で設定してください。

  1. gpsdの設定ファイル(/etc/default/gpsd)に以下の内容を設定します。

    DEVICES="/dev/ttyTHS1 /dev/pps0"
    GPSD_OPTIONS="-n"
    
  2. gpsdを再起動します。

    $ sudo systemctl restart gpsd
    
  3. 位置情報が取得できることを確認します。

    $ gpsmon
    
    四谷オフィスでの計測画像

注釈

gpsd を自動起動したい

標準的なsystemdサービスであれば systemctl enable で自動起動の設定が可能ですが、gpsdはSysVのサービスであるため、これだけでは反映されません。

$ sudo systemctl enable gpsd
Synchronizing state of gpsd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable gpsd
$ systemctl is-enabled gpsd
indirect

gpsdを自動起動させたい場合は、サービスファイルを手動でリンクする必要があります。

$ sudo ln -s /lib/systemd/system/gpsd.service /etc/systemd/system/multi-user.target.wants/
$ systemctl is-enabled gpsd
enabled

設定や評価を行いたい

NEO-M8Uの設定や評価を行うには、Windows環境で u-center を利用します。

NEO-M8Uのシリアル通信を ser2net でTCP通信に変換することで、Windows上のu-centerからネットワーク越しにNEO-M8Uの設定や評価を行うことができます。

警告

ser2net を利用する場合、gpsdを無効にしてください。gpsdを有効にしている場合、データを正しく取得することができません。

EDGEPLANT T1での操作

  1. EDGEPLANT T1で ser2net をインストールします。

    $ sudo apt install ser2net
    
  2. ser2netの設定を行います。元の設定を削除し、以下の内容を設定します。

    edgeplant-l4t-boot サービスを有効にしている場合、ボーレートを 57600 に設定してください。

    $ sudo vi /etc/ser2net.conf
    
    <TCP_PORT>:raw:600:/dev/ttyTHS1:<BAUDRATE> 8DATABITS NONE 1STOPBIT banner
    

    以下は、TCPポートを 2000 、ボーレートを 57600 に設定する例です。

    2000:raw:600:/dev/ttyTHS1:57600 8DATABITS NONE 1STOPBIT banner
    

    注釈

    stateには raw を設定してください。 telnet の場合、正しく通信ができません。

  3. 再起動を行い、ser2net サービスが起動していることを確認します。

    $ sudo systemctl reboot
    
    $ systemctl status ser2net
    ● ser2net.service - LSB: Allows network connections to serial ports
       Loaded: loaded (/etc/init.d/ser2net; generated)
       Active: active (running) since Thu 2022-05-12 00:40:59 EDT; 25s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 5066 ExecStart=/etc/init.d/ser2net start (code=exited, status=0/SUCCESS)
       Tasks: 1 (limit: 3705)
       CGroup: /system.slice/ser2net.service
             └─5278 /usr/sbin/ser2net -c /etc/ser2net.conf -P /run/ser2net.pid
    
    May 12 00:40:58 linux systemd[1]: Starting LSB: Allows network connections to serial ports...
    May 12 00:40:59 linux ser2net[5066]:  * Starting Serial port to network proxy ser2net
    May 12 00:40:59 linux ser2net[5066]:    ...done.
    May 12 00:40:59 linux systemd[1]: Started LSB: Allows network connections to serial ports.
    

Windows環境での操作

  1. Windows環境で、u-centerをインストールし、起動します。

  2. Connect ボタンの横のドロップダウンリストで、 Network connection から New... を選択します。

    u-center起動画面
  3. EDGEPLANT T1のIPアドレスと、ser2netのTCPポート番号を入力して接続します。

    u-center接続設定
  1. 接続が完了し、NEO-M8Uの設定や評価を行うことができます。

    ViewMessages View を選択すると、受信したメッセージを確認することができます。

    ViewConfiguration View を選択すると、NEO-M8Uの設定内容の確認や変更ができます。

    u-center表示画面

注釈

edgeplant-l4t-boot サービスを有効化している場合、起動時にGNSSの設定が行なわれます。

起動時にGNSSの設定を変更せずに動作させたい場合は、以下のコマンドでedgeplant-l4t-boot サービスを無効化してください。

$ sudo systemctl stop edgeplant-l4t-boot
$ sudo systemctl disable edgeplant-l4t-boot

IMUデータを利用したい

NEO-M8Uは、UBXメッセージ 3 によるIMUデータ(角速度、加速度など)の取得をサポートしています。

IMUから正確な情報を取得するためにはキャリブレーションが必要です。 以下の手順を参考にあらかじめキャリブレーションを行ってから、データを取得してください。

手順

成功指標

1. IMUの初期化

GNSS信号の受信状態が良好な場所で、少なくとも3分間静止します。

  • IMU初期化ステータス UBX-ESF-STATUS initStatus2 imuInitStatus が 2 (初期化済)

2. INSの初期化 (位置と速度)

信頼できるGNSS固定が達成できるまで、良好なGNSS信号受信条件下で静止します。

  • GPS捕捉状態 UBX-HNR-PVT gpsFix が 3 (3D-fix)

3. IMUマウントアライメントの初期化

最低速度12km/hで走行を開始し、左右のカーブ(90度以上曲がる)を10回程度連続して行います。各ターンは、急なロータリーを走行するようなイメージで行います。

  • 自動IMUマウントアライメントのステータス UBX-ESF-STATUS initStatus1 mntAlgStatus が 2 (初期化済)

4. INSの初期化 (姿勢)

最低速度40km/hで100m以上直進します。

  • INS初期化ステータス UBX-ESF-STATUS initStatus1 insInitStatus が 2 (初期化済)

5. 初期化フェーズの完了 (キャリブレーションの開始)

  • フュージョンモードのステータス UBX-ESF-STATUS fusionMode が 1

6. キャリブレーションの完了

数分間、カーブや直線区間を走行し、それぞれ30秒以上の停車を数回行います。 良好なGNSS信号受信条件下で、少なくとも時速50km/hの走行期間を含むことが必要です。

  • キャリブレーションのステータス UBX-ESF-STATUS sensStatus2 calibStatus が 2または3 (キャリブレーション済)

注意

EDGEPLANT T1に電源が供給されている間は、キャリブレーション情報を保持します。 EDGEPLANT T1への電源供給を停止したり、設置位置を変更した場合は、正確なキャリブレーション情報が失われますので、キャリブレーションを再実施してください。

3

UBXメッセージの詳細については、 u-blox 8 / u-blox M8 Receiver description Including protocol specification を参照してください。

GNSSモジュール用ファームウェアのアップデート

ファームウェアアップデート用のツールは別途提供予定です。