JetsonTX2でROSを使ったGPSセンシング


環境

デバイス:JetsonTX2
Jetpackバージョン:3.2
ROS:Kinetic
OS:Ubuntu16.04
加速度センサ:BU-353-S4(https://www.ida-japan.co.jp/GPS/BU353-S4(USB).pdf)

GPSの接続

JetsonにGPSを接続する。USBポートに差し込むだけ。
接続したら以下のコマンドでGPSが認識されているか確認する。

bash

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 17ef:6047 Lenovo 
Bus 001 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Tecnnology, Inc. PL2303 Serial Portが表示されればOK。
次に/dev以下でシリアルポートとして認識されていることを確認する。

bash
$ ls /dev/ttyUSB*
/dev/ttyUSB0

この場合USB0として認識されていることが確認できる。

GPSからの信号を確認

シリアルポートでの送受信を行うためのコマンドで確認する。インストールされいなければ以下のコマンドでインストールする。

$ sudo apt-get install cu 

以下のコマンドで受信データを確認できる。引数には、先程調べたUSBのシリアルポートを指定し、ボーレートはGPSモジュールの仕様に合わせて4800とする。

$ cu -s 4800 -l /dev/ttyUSB0
Connected.
$GPGGA,052923.037,,,,,0,00,,,M,0.0,M,,0000*5D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,052923.037,V,,,,,,,301119,,,N*4D
$GPGGA,052924.037,,,,,0,00,,,M,0.0,M,,0000*5A
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,08,24,75,007,32,57,79,173,22,01,62,020,,11,58,045,*72
$GPGSV,2,2,08,25,26,185,,04,19,064,,23,13,054,,16,01,328,*7D
$GPRMC,052924.037,V,,,,,,,301119,,,N*4A
$GPGGA,052925.037,,,,,0,00,,,M,0.0,M,,0000*5B

上記のようなデータが受信できればOK。
停止するためには”~”(チルダ)を打つ。

ROSパッケージの導入

GPSデータを受信するROSパッケージの中でROS推奨のnmea_navsat_driverを利用する。またこのパッケージを利用するためには、nmea_msgsも必要となる。
インストールには以下のコマンドを実行する。

$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/nmea_msgs.git
$ git clone https://github.com/ros-drivers/nmea_navsat_driver.git
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash

GPSロギング

センサー値のロギングにはrosbagを使う。
参考:https://qiita.com/srs/items/f6e2c36996e34bcc4d73

実行方法

1つ目のターミナルでroscoreを立ち上げ、2つ目のターミナルでnmea_navsat_driverを立ち上げる。3つ目のターミナルではrosbagファイルを生成してログを出力する。

Tearminal1
$ roscore
Tearminal2
$ rosrun nmea_navsat_driver nmea_serial_driver
Tearminal3
$ cd catkin_ws
$ mkdir rosbag
$ cd rosbag
$ rosbag record -a -O test-gps

出力結果を確認する

$ rosbag info test-gps.bag 
path:        test-gps.bag
version:     2.0
duration:    2:27s (147s)
start:       Nov 30 2019 10:59:23.44 (1575079163.44)
end:         Nov 30 2019 11:01:50.50 (1575079310.50)
size:        80.2 KB
messages:    447
compression: none [1/1 chunks]
types:       geometry_msgs/TwistStamped [98d34b0043a2093cf9d9345ab6eef12e]
             rosgraph_msgs/Log          [acffd30cd6b6de30f120938c17c593fb]
             sensor_msgs/NavSatFix      [2d3a8cd499b9b4a0249fb98fd05cfa48]
             sensor_msgs/TimeReference  [fded64a0265108ba86c3d38fb11c0c16]
topics:      /fix              147 msgs    : sensor_msgs/NavSatFix     
             /rosout             6 msgs    : rosgraph_msgs/Log          (2 connections)
             /time_reference   147 msgs    : sensor_msgs/TimeReference 
             /vel              147 msgs    : geometry_msgs/TwistStamped

/fixが位置情報である。

データの可視化

以下のコマンドを実行すると以下のようなウィンドウが出てきる。縦にrosbagに入っているROSトピックがならなんでいて、青い縦線はその時間にpublishされたことを示している。

$ rqt_bag test-gps.bag


各トピックを右クリックしてview-> plotを選択するとグラフの表示ができる。これで各データを見比べたりできる。

CSV出力

以下のコマンド実行することで、加速度データ、速度、回転角度などのログをCSVファイルとして出力
できる。

rostopic echo -b test-gps.bag -p /fix > test-gps-data-raw.csv

CSVからグラフを作成してみた。以下のようにGPSでの位置情報をプロットできる。

その他

ロギング中のコンピュータシャットダウンとログデータの復元方法