GNSSを利用する¶
概要¶
EDGEPLANT T1には、GNSSモジュールとして、u-blox社の NEO-M8U が搭載されています。 NEO-M8Uは、複数のGNSSからの衛星測位に加え、UDR1 による位置情報の推定測位もサポートしており、精度の高い測位を行うことが可能です。
- 1
Untethered Dead Reckoningの略。モジュール内部の情報のみで位置情報を推定する技術。
仕様¶
モジュールの詳細な仕様については、u-blox社のマニュアルを参照してください。
アンテナ¶
衛星からの信号を受信するためには、アンテナを接続する必要があります。 アンテナの接続方法や詳細な仕様については、 取扱説明書 を参照してください。 標準ではTaoglas社のアンテナ AA.162.301111 が同梱されています。 使用実績のあるそれ以外のアンテナについては サポート窓口 にお問い合わせください。
利用方法¶
シリアル通信でデータを取得したい¶
/dev/ttyTHS1
でシリアルデバイスとしてGNSSモジュールにアクセスできるため、必要な設定を行うことでシリアル通信でデータを取得することができます。
シリアル通信のオプションを設定します。
$ stty -F /dev/ttyTHS1 -hupcl -icrnl -ixon -opost -isig -icanon iexten -echo -echoe -echok
任意のツールでシリアル通信を行います。 以下の例では
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を利用したい場合は、以下の手順で設定してください。
gpsdの設定ファイル(
/etc/default/gpsd
)に以下の内容を設定します。DEVICES="/dev/ttyTHS1 /dev/pps0" GPSD_OPTIONS="-n"
gpsdを再起動します。
$ sudo systemctl restart gpsd
位置情報が取得できることを確認します。
$ 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での操作¶
EDGEPLANT T1で
ser2net
をインストールします。$ sudo apt install ser2net
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
の場合、正しく通信ができません。再起動を行い、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環境での操作¶
Windows環境で、u-centerをインストールし、起動します。
Connect
ボタンの横のドロップダウンリストで、Network connection
からNew...
を選択します。EDGEPLANT T1のIPアドレスと、ser2netのTCPポート番号を入力して接続します。
接続が完了し、NEO-M8Uの設定や評価を行うことができます。
View
のMessages View
を選択すると、受信したメッセージを確認することができます。View
のConfiguration View
を選択すると、NEO-M8Uの設定内容の確認や変更ができます。
注釈
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分間静止します。 |
|
2. INSの初期化 (位置と速度) 信頼できるGNSS固定が達成できるまで、良好なGNSS信号受信条件下で静止します。 |
|
3. IMUマウントアライメントの初期化 最低速度12km/hで走行を開始し、左右のカーブ(90度以上曲がる)を10回程度連続して行います。各ターンは、急なロータリーを走行するようなイメージで行います。 |
|
4. INSの初期化 (姿勢) 最低速度40km/hで100m以上直進します。 |
|
5. 初期化フェーズの完了 (キャリブレーションの開始) |
|
6. キャリブレーションの完了 数分間、カーブや直線区間を走行し、それぞれ30秒以上の停車を数回行います。 良好なGNSS信号受信条件下で、少なくとも時速50km/hの走行期間を含むことが必要です。 |
|
注意
EDGEPLANT T1に電源が供給されている間は、キャリブレーション情報を保持します。 EDGEPLANT T1への電源供給を停止したり、設置位置を変更した場合は、正確なキャリブレーション情報が失われますので、キャリブレーションを再実施してください。
- 3
UBXメッセージの詳細については、 u-blox 8 / u-blox M8 Receiver description Including protocol specification を参照してください。
GNSSモジュール用ファームウェアのアップデート¶
ファームウェアアップデート用のツールは別途提供予定です。