[ROS] Ublox C099-F9P, RTK, LLAtoUTM


INTRO
Ublox C 099-F 9 P GPSで方位情報を受信
RTK信号は正確な測定情報を提供しLLAからUTMへ変換する
u-centerを使用して受信サイクルを調整する
開発環境
Ubuntu 18.04 LTS/ROS Melodic
デバイスの操作
Ublox C099 - F9P

C 099-F 9 P取付と接続
せつぞくばん
  • に示すように、アンテナをZED-RFに接続し、5ピン端子に接続する.
  • USBをコンピュータに接続し、ボードが認識されていることを確認します.$ ls -l /dev/ttyACM*
  • 機械の運転許可$ sudo chmod 777 /dev/ttyACM0
  • ドライバのインストール
    ROS用ドライバのインストール
    https://github.com/ros-agriculture/ublox_f9p.git
    $ cd catkin_ws/src
    $ git clone https://github.com/ros-agriculture/ublox_f9p.git
    $ cd ..
    $ catkin_make
    起動ファイルの変更と実行
    launchファイルを変更する前に、configフォルダのzed_f9p.yamlファイルを変更する必要があります.
    他のyamlファイルを使っても構いません.
    $ cd ~/catkin_ws/src/ublox_f9p/ublox_gps/config
    또는
    $ roscd ublox_gps/config/
    $ gedit zed-f9p.yaml
    deviceが私が接続しているポートと同じであることを確認します.
    device: /dev/ttyACM0
    frame_id: gps
    ~/catkin_ws/src/ublox_f9p/ublox_gps/launchパスに移動して、ublox_device.launchファイルを変更します.
    ノード名とパラメータファイル名を追加するだけです.
      <arg name="node_name" value="ublox_gps"/>
      <arg name="param_file_name" value="zed-f9p" />
      <arg name="output" default="screen" />
      <arg name="respawn" default="true" />
      <arg name="respawn_delay" default="30" />
      <arg name="clear_params" default="true" />
    構築後に実行します.
    // 빌드
    $ cd
    $ cd catkin_ws
    $ catkin_make
    
    // 실행하기
    $ roslaunch ublox_gps ublox_device.launch
    現在の話題は$ rostopic list -vで確認できます.
    Published topics:
     * /ublox_gps/navrelposned [ublox_msgs/NavRELPOSNED] 1 publisher
     * /rosout [rosgraph_msgs/Log] 1 publisher
     * /ublox_gps/navsat [ublox_msgs/NavSAT] 1 publisher
     * /rosout_agg [rosgraph_msgs/Log] 1 publisher
     * /ublox_gps/fix_velocity [geometry_msgs/TwistWithCovarianceStamped] 1 publisher
     * /ublox_gps/fix [sensor_msgs/NavSatFix] 1 publisher
     * /ublox_gps/navclock [ublox_msgs/NavCLOCK] 1 publisher
     * /ublox_gps/navstatus [ublox_msgs/NavSTATUS] 1 publisher
     * /ublox_gps/navpvt [ublox_msgs/NavPVT] 1 publisher
     * /diagnostics [diagnostic_msgs/DiagnosticArray] 1 publisher
     * /ublox_gps/navposecef [ublox_msgs/NavPOSECEF] 1 publisher
    
    Subscribed topics:
     * /rtcm_topic [rtcm_msgs/Message] 1 subscriber
     * /rosout [rosgraph_msgs/Log] 1 subscriber
    
    $ rostopic echo /ublox_gps/fixで内容を確認します.
    ---
    header: 
      seq: 2319
      stamp: 
        secs: 1645864064
        nsecs: 625306652
      frame_id: "gps"
    status: 
      status: 0
      service: 0
    latitude: 35.859753
    longitude: 128.487405
    altitude: 87.067
    position_covariance: [0.45427600000000007, 0.0, 0.0, 0.0, 0.45427600000000007, 0.0, 0.0, 0.0, 0.4529290000000001]
    position_covariance_type: 2
    ---
    信号の受信が良好な様子が見られます.
    RTK信号受信
    RTKとは?
    RTK信号を用いて精密測定を行った.
    RTK信号により,近くの基地局から正確な方位情報を得ることができる.
    大まかな過程は以下の通りである.
  • 受信機および近隣基地局は、それぞれGPS信号を受信する.
  • 基地局は、自分の正確な位置情報を知っており、受信した情報と誤差比較することができる.
  • 受信機は、受信した誤差情報によって自分の位置を修正することができる.
  • 国土地理情報員に参加してRTKを取得できます.次のリンクを参照してください.
    http://koseco.co.kr/ngii_rtk/
    RTCM、NTRIPパッケージインストール
    まず、基地局から保護の精神を得るために、RTCMパッケージをインストールする.
    https://github.com/tilk/rtcm_msgs.git
    $ cd ~/catkin_ws/src/ublox_f9p/
    $ git clone https://github.com/tilk/rtcm_msgs.git
    次にNTRIPパッケージをインストールして構築します.
    https://github.com/ros-agriculture/ntrip_ros
    $ git clone https://github.com/ros-agriculture/ntrip_ros
    $ cd 
    $ cd catkin_ws
    $ catkin_make
    RTCM Subscribe
    インストールしたばかりのublox gpsパッケージでは、RTCM信号を購読できるように変更します./ublox_gps/src/node.cppの1861行を修正すればいいです.
      //param_nh.param("rtcm_topic", rtcm_topic, std::string("rtcm"));  수정 전
      param_nh.param("/ublox_gps/rtcm", rtcm_topic, std::string("rtcm")); 수정 후
    ntrip_ros.スタートアップファイルの変更$ rosed ntrip_ros ntrip_ros.launch以下のようにファイルを変更します.
    <launch>
      <include file="$(find ublox_gps)/launch/ublox_device.launch"/>
      <node pkg="ntrip_ros" type="ntripclient.py" name="ntrip_ros" output="screen">
     	 <param name="rtcm_topic" value="/ublox_gps/rtcm"/> //rtcm 토픽
     	 <param name="ntrip_server" value="vrs3.ngii.go.kr:2101"/> //접속경로:포트
     	 <param name="ntrip_user" value="-------"/> //개인별 아이디
     	 <param name="ntrip_pass" value="ngii"/> //비밀번호
     	 <param name="ntrip_stream" value="VRS-RTCM31"/> //마운트포인트
     	 <param name="nmea_gga" value="$GPGGA,132350.925,3551.588,N,12829.261,E,1,12,1.0,0.0,M,0.0,M,,*64"/>
      </node>
    </launch>
    nmea ggaのための$GPGGAメッセージは、ここです。から得ることができる.
    測定場所の近くを選択し、「Generate NMEA file」を実行し、メモ帳を開いてコピー/貼付けを行えばよい.
    やってみる
    $ roslaunch ublox_gps ublox_device.launch
    $ roslaunch ntrip_ros ntrip_ros.launch
    //터미널
    header: 
      seq: 148
      stamp: 
        secs: 1645867858
        nsecs: 249903283
      frame_id: "gps"
    status: 
      status: 0
      service: 0
    latitude: 35.8597985
    longitude: 128.4874035
    altitude: 80.26
    position_covariance: [0.020735999999999997, 0.0, 0.0, 0.0, 0.020735999999999997, 0.0, 0.0, 0.0, 0.054756000000000006]
    position_covariance_type: 2
    
    誤差(位置共分散)が著しく減少することが分かった.
    5ピン接続先のRTK LEDが黄色で点灯している場合は、RTK FIX状態を示します.
    次のRTK FIXステータスがGoogle USに表示されます.

    受信はほぼ完全に正しい.
    受信サイクルの調整
    u-centerインストール
    デフォルトの受信期間1 Hzからメニュー上の8 hzに変更します.
    メニューにおいて、ボーレートが460800の場合、8 hzの使用が推奨される.
    詳細なu-centerの使い方は後でアップロードされます
    まずublox社のソフトウェアu-centerをインストールします
    https://www.u-blox.com/en/product/u-center
    運転後GPSに接続します.
    左上隅のViewConfigure Rate(Rate)に移動し、Measurement Periodを125ミリ秒(=8 hz)に設定します.

    PRT(Ports)でbaudrateを460800に設定します.

    GPSの設定をCFGのFlash(またはEEPROM)に保存します.

    ubuntuに戻ってroslaunchを実行すると、受信サイクルがずっと速くなることがわかります.
    LLAからUTMへの変換
    8 hzのRTK信号を受信できるようになりました.
    緯度、経度、高さの地理的座標系で
    x、y、zと表示されるUTM座標系に変更します.

    LLATOUTMパッケージのインストール
    以下のパッケージをインストールします.
    https://github.com/arpg/ROS-UTM-LLA.git
    $ cd ~/catkin_ws/src/ublox_f9p/
    $ git clone https://github.com/arpg/ROS-UTM-LLA.git
    ソースファイルの変更~/catkin_ws/src/ublox_f9p/ROS-UTM-LLA/srcにあるconvert_ndt2lla.cppの41行を変更します.
    //ros::Subscriber  sub2 = n.subscribe("/gps/fix",1000,&ULConverter::GPSCallback, &con); //수정 전
    ros::Subscriber  sub2 = n.subscribe("/ublox_gps/fix",1000,&ULConverter::GPSCallback, &con); //수정 후
    coordinate_convertion.スタートアップファイルの変更
    実行する昼食ファイルのパラメータを変更します.
    <launch>
        <!-- The following is denver UTM zone. check your UTM zone at  https://mangomap.com/robertyoung/maps/69585/what-utm-zone-am-i-in-# -->
        <param name="utm_zone" type="int" value="52" />
        <param name="hemisphere" type="string" value="North" />
        <node type="utm_lla_converter" pkg="utm_lla" name="utm_lla_converter" output="screen"/>
    </launch>
    最初のパラメータutm_zoneを設定する以外は、触れる必要はありません.
    大韓民国のUTM-zone52だ.
    起動ファイルの実行
    ビルド後に実行
    $ cd 
    $ cd catkin_ws
    $ catkin_make
    $ roslaunch utm_lla coordinate_convertion.launch
    実行結果
    //터미널
    [ INFO] [1645872814.134544321]: Get data lagitude from GPS: [35.859773]
    [ INFO] [1645872814.134636071]: Get data longitude from GPS: [128.486988]
    [ INFO] [1645872814.134674136]: Get data altitude from GPS: [131.651000]
    [ INFO] [1645872814.134727536]: Convert to x: [453681.527447]
    [ INFO] [1645872814.134784539]: Convert to y: [3968516.897792]
    [ INFO] [1645872814.134827212]: Convert to z: [131.651000]
    [ INFO] [1645872814.261624609]: Get data lagitude from GPS: [35.859773]
    [ INFO] [1645872814.261719909]: Get data longitude from GPS: [128.486988]
    [ INFO] [1645872814.261786979]: Get data altitude from GPS: [131.660000]
    [ INFO] [1645872814.261871893]: Convert to x: [453681.527331]
    [ INFO] [1645872814.261932057]: Convert to y: [3968516.875609]
    [ INFO] [1645872814.261988610]: Convert to z: [131.660000]
    $ rostopic echo /utmで確認したら
    header: 
      seq: 1184
      stamp: 
        secs: 1645873041
        nsecs: 375128972
      frame_id: "gps"
    pose: 
      position: 
        x: 453689.848412
        y: 3968514.44726
        z: 123.625
      orientation: 
        x: 0.0
        y: 0.0
        z: 0.0
        w: 0.0
    LLAからUTMで変換の良さを確認できます.
    多くの不足点があるかもしれません.
    参考資料
  • ROSはUblox F 9 pモジュール、RTK(NTRIP、RTCM)を使用
  • [Ublox]C099-F9P(GNSS)&C94M8P(GPS)ROS build up
  • [GPS]ublox ZED-F 9 P GPS,RTK用法
  • [ublox] C099-F9P application board(ZED-F9P EVK) Spec.
  • U-BLOX GPS設定