自作 Turtlebot3 自律走行に向けたプログラム。#14
--- 自作 Turtlebot3 (foxbot_core3) で、GPS( gysfdmaxb ) を使ってみる。 ---
手持ちに、gysfdmaxb があったので、これを使って、自作 Turtlebot3 (foxbot_core3) の GPS として試してみました。
みちびき(QZSS) の受信ができると言うので、ずっと前に買って、少し試して、そのままだったのですが、
自作 Turtlebot3 自律走行に向けたプログラム。#13 で、Gazbo Trutlebot3 で、GPSプラグインを試したので、こんどは、
実機でどうなのかと試してみました。
ただ、測位確度:2m の様なので、期待は、していませんが、robot_localization/ekf_localization_node で、
Fusionしたらどうなのか、試してみました。
結論から言えば、部屋の中で、2[M] 行って、元の位置へ帰ってくるテストでは、なぜかうまく動いているようです。
次は、屋外で、100[M] 位プログラムで自動走行させてみたくなりました。
さて、ROSでの使用方法ですが、インターネットで、ros gysfdmaxb で検索しても出てこないので、結局自分で作る事にしました。
GPSデータをrostopicとして取り扱う 辺りを参考に github.com/KumarRobotics/ublox をベースに作ってみました。
でも、却って、結構大変でした。
callback ルーチンの使い方と、boost::asio::io_service、boost::asio::serial_port を使った Serial I/O が初めてだったので、
それを真似して、C++ の勉強にはなりました。
開発環境
Remote PC:
Ubuntu Mate 20.04
ros noetic
SBC:
Jetson Nano 2G
Ubuntu 20.04 and Jetpack 4.0
ros noetic
Moter Controll : ESP32
IMU、USB Serial Stereo Camera
rtabmap_ros、move_base、ebnad_local_planner
1. gaysfdmaxb ros node の作成
構成としては、SBC の JetsonNano 2G に、USB-Serial で gaysfdmaxb を繋げて、C++ から、Serial 通信でデータを、
NMEA 形式で取り込んで、$GPGGA を、ros の GPS (sensor_msgs/NavSatFix) メッセージとして、Publish するだけです。
参照
みちびき対応のGPS受信機(GYSFDMAXB)の使い方 [Arduino]
GPS(AE-GYSFDMAXB)について
github にアップロードしました。
tosa-no-onchan/gysfdmaxb_gps
1) build 方法。
$ cd ~/catokin_ws/src
$ git clone https://github.com/tosa-no-onchan/gysfdmaxb_gps.git
$ cd ..
$ catkin build gysfdmaxb_gps
2) 実行方法。
i) PC に USB-Serial で、gysfdmaxb を接続する。
ii) $ sudo chmod 777 /dev/ttyUSB0
iii) $ roscore
iv) $ roslaunch gysfdmaxb_gps gysfdmaxb_gps.launch
v) $ rostopic list
vi) $rostopic echo /gps_link
難点。
デフォルトのままなので、Publish Rate 1[Hz] と、遅いです。
gaysfdmaxb へコマンドを送って、設定を変えられようなので、それで変更しないといけないぞね。
GYSFDMAXB_spec_ae.pdf の NMEA Packet Format の箇所の、251PMTK_SET_NMEA_BAUDRATE 等
のコマンドを送って gysfdmaxb デバイスを設定するようです。
最大 10[hz] のようです。
下記ページとそのリンクページに、設定方法が載っています。
ArduinoでGPSセンサーの設定変更、情報取得、精度確認してみる
check sum は、此処とのことです。
check sum
2. ratbmap_ros with Single Stero Camera の Launch ファイルへの組み込み。
rtabmap-nishi_stereo_outdoor2_bz3_navi_gps.launch として作成しました。
後日、github にアップロードしちょきます。
後、自作Turtlebot3(foxbot_core3) の機能に、TF base_footprint 出力の抑止の有無、IMUの出力の有無のパラメータ指定が
できるようにしましたが、この記事も後日、掲載します。