環境
デバイス: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が認識されているか確認する。
$ 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以下でシリアルポートとして認識されていることを確認する。
$ 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ファイルを生成してログを出力する。
$ roscore
$ rosrun nmea_navsat_driver nmea_serial_driver
$ 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での位置情報をプロットできる。
その他
ロギング中のコンピュータシャットダウンとログデータの復元方法