🌟
nmea_navsat_driverをROS2で動かしてみる
はじめに
ROSでGNSSを利用したくなったのでnmea_navsat_driverを使ってみたが、ドキュメントがほぼない状態なのでリポジトリを漁りながら動かしたのでログを残しておきます。
環境&材料
- Ubuntu 22.04 LTS
- ROS2 Humble
- SparkFun GNSS-RTK L1/L5 Breakout - NEO-F9P (Qwiic)
- nmea_navsat_driver (ros2 branch)
やってみた
アンテナを接続したNEO-F9PとPCをUSBケーブルでつなぐ。しばらくして以下のコマンドでNMEAデータが送信されてきているかを確認する。/dev/ttyACM0
は環境によっては/dev/ttyUSB0
とかかもしれないので環境に応じて確認する
sudo cat /dev/ttyACM0
nmea_navsat_driverをビルドする
cd ~/ros2_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver.git -b ros2
cd ~/ros2_ws
rosdep update && rosdep install --from-paths src --ignore-src -y
colcon build --packages-select nmea_navsat_driver
依存モジュールをインストールする
pip install src/nmea_navsat_driver/
pip install transforms3d
sudo apt-get install ros-humble-tf-transformations
実行する。そのままだと/dev/ttyACM0
がパーミッションエラーになるので権限を変更してからやる
sudo chmod 666 /dev/ttyACM0
cd ~/ros2_ws
source ~/ros2_ws/install/setup.bash
ros2 run nmea_navsat_driver nmea_serial_driver --ros-args -p port:=/dev/ttyACM0 -p baud:=9600
正常に起動したらターミナルの別タブを開いてトピックリストを確認してみる
ros2 topic list
/fix
/heading
/parameter_events
/rosout
/time_reference
/vel
/parameter_events
以外がnmea_navsat_driver関係のトピック
位置情報を読んでみる
ros2 topic echo fix
sensor_msgs/NavSatFix Messageが受信できた
header:
stamp:
sec: 1723801363
nanosec: 176435832
frame_id: gps
status:
status: 1
service: 1
latitude: 35.68948933333333
longitude: 139.69133083333333
altitude: 87.2
position_covariance:
- 0.0046240000000000005
- 0.0
- 0.0
- 0.0
- 0.0046240000000000005
- 0.0
- 0.0
- 0.0
- 0.07398400000000001
position_covariance_type: 1
---
header:
stamp:
sec: 1723801364
nanosec: 172798509
frame_id: gps
status:
status: 1
service: 1
latitude: 35.68948933333333
longitude: 139.691330
altitude: 87.2
position_covariance:
- 0.0046240000000000005
- 0.0
- 0.0
- 0.0
- 0.0046240000000000005
- 0.0
- 0.0
- 0.0
- 0.07398400000000001
position_covariance_type: 1
---
header:
stamp:
sec: 1723801365
nanosec: 180197950
frame_id: gps
status:
status: 1
service: 1
latitude: 35.689489166666665
longitude: 139.691330
altitude: 87.1
position_covariance:
- 0.004760999999999999
- 0.0
- 0.0
- 0.0
- 0.004760999999999999
- 0.0
- 0.0
- 0.0
- 0.07617599999999998
position_covariance_type: 1
---
おわりに
とりあえずROS2にGNSSの位置情報を流したかったので目的は達成できました。メッセージの内容はこれから精査していこうと思います。
Discussion