Ublox ZED-F9P RTK-GNSS 이동국을 ROS에서 사용

보통 Ublox의 RTK-GNSS가 u-center, RTKLIB에서 사용하고 있지만, 이번 ROS에서 사용하려고 시도했습니다.

사용환경


  • 우분투 18.04
  • Qt Creator 4.12.4
  • QT 5.12.5 GCC 64bit
  • RTKLIB 2.4.3 b33
  • ROS Melodic
  • Ublox ZED-F9P (GNSS 수신기)
  • Ntrip 서버 ( w w. RTK2 단어. 작은 m )

  • 사용 패키지


  • RTKLIB

  • Ntrip 서버로부터 기준국 정보를 취득하여 Ublox ZED-F9P의 이동국에 입력한다.
  • ublox ROS 패키지

  • Ublox ZED-F9P의 RTK-GNSS Fix 해를 시리얼 포트로부터 취득해 ROS Topic sensor_msgs/NavSatFix로 발신.

    1. RTKLIB를 사용하여 ULOX ZED-F9P의 이동국에 기준국 정보를 입력


  • RTKLIB에서 소스를 다운로드하여 빌드

  • RTKLIB 2.4.3 b33
    git clone -b rtklib_2.4.3 https://github.com/tomojitakasu/RTKLIB.git
    cd RTKLIB/lib/iers/gcc/
    make   
    cd RTKLIB/app/consapp
    make  
    

    참고: RKTLIB GUI 버전의 설치는 RTKLIB 2.4.3 CLI 버전 GUI 버전을 Ubuntu18.04에 설치 참고합니다.
  • Ntrip 서버에서 기지국 정보를 얻고 Ublox ZED-F9P 이동국의 직렬 포트에 입력

  • Ublox ZED-F9P는 RTK 측위 연산 엔진을 내장했기 때문에, 기준국 정보를 입력하면 RTK 측위를 실시합니다.
    cd str2str/gcc
    ./str2str -in ntrip://rtk2go.com:2101/[基準局のMountPoint] -out serial://ttyACM0:230400
    

    str2str 실행 로그
    stream server start
    2020/08/15 12:27:23 [WC---]          0 B       0 bps (0) connecting... (1) /dev/ttyACM0 
    2020/08/15 12:27:28 [CC---]       3297 B    6527 bps (0) rtk2go.com/[基準局のMountPoint] (1) /dev/ttyACM0
    

    ttyACM0 : PC에 꽂은 이동국 ZED-F9P의 시리얼 포트
    230400: u-center에서 이동국 ZED-F9P의 serial baud rate의 설정값

    (참고 : RTLLIB GUI 버전의 STSVR-QT에서도 동일한 기능을 수행 할 수 있습니다.)



    2. ublox ROS package로 이동국 RTK 연산 결과를 ROS Topic으로 발신


  • RTKLIB에서 소스를 다운로드하여 빌드

  • ublox ROS 패키지
    cd <catkin_ws>/src
    git clone https://github.com/KumarRobotics/ublox.git
    cd ../
    catkin_make
    
  • ublox ROS 패키지의 매개 변수 파일 생성

  • ublox/ublox_gps/config/zed_f9p_rover.yaml을 다음과 같이 생성합니다.
    # Configuration Settings for ZED-F9P device
    debug: 1                 # Range 0-4 (0 means no debug statements will print)
    
    device: /dev/ttyACM0     # ZED-F9P rover serial port
    frame_id: gps
    
    config_on_startup: false # use chip config
    
    uart1:
      baudrate: 230400       # serial port baudrate
      in: 32
      out: 3
    
    # Enable u-blox message publishers
    publish:
      all: false
      nav:
        all: true
        relposned: true
        posllh: true
        posecef: true
    
    

    config_on_startup을 true로 설정하면 ROS 패키지의 RTK-GNSS 설정에서 ZED-F9P 칩 설정을 덮어쓰므로 해석 Fix 솔루션을 얻지 못할 수 있습니다.
  • ublox ROS 패키지 시작
  • roslaunch ublox_gps ublox_device.launch node_name:=ublox param_file_name:=zed_f9p_rover
    

    roslaunch 실행 로그
    SUMMARY
    ========
    
    CLEAR PARAMETERS
     * /ublox/
    
    PARAMETERS
     * /rosdistro: melodic
     * /rosversion: 1.14.3
     * /ublox/config_on_startup: False
     * /ublox/debug: 1
     * /ublox/device: /dev/ttyACM0
     * /ublox/frame_id: gps
     * /ublox/publish/all: False
     * /ublox/publish/nav/all: True
     * /ublox/publish/nav/posecef: True
     * /ublox/publish/nav/posllh: True
     * /ublox/publish/nav/relposned: True
     * /ublox/uart1/baudrate: 230400
     * /ublox/uart1/in: 32
     * /ublox/uart1/out: 3
    
    NODES
      /
        ublox (ublox_gps/ublox_gps)
    
    auto-starting new master
    process[master]: started with pid [7994]
    ROS_MASTER_URI=http://localhost:11311
    
    setting /run_id to 9536ba60-def3-11ea-b404-60f81dc512a8
    process[rosout-1]: started with pid [8005]
    started core service [/rosout]
    process[ublox-2]: started with pid [8009]
    [ INFO] [1597494836.219074203]: U-Blox: Opened serial port /dev/ttyACM0
    [DEBUG] [1597494836.219916723]: U-Blox: current_baudrate 230400
    [DEBUG] [1597494836.220839605]: EXT CORE 1.00 (61b2dd), HW VER: 00190000
    [DEBUG] [1597494836.220867963]: ROM BASE 0x118B2060
    [DEBUG] [1597494836.220893785]: FWVER=HPG 1.12
    [DEBUG] [1597494836.220917198]: PROTVER=27.11
    [DEBUG] [1597494836.220937605]: MOD=ZED-F9P
    [DEBUG] [1597494836.220956464]: GPS;GLO;GAL;BDS
    [DEBUG] [1597494836.220976395]: QZSS
    [ INFO] [1597494836.221016654]: U-Blox Firmware Version: 9
    [ INFO] [1597494836.225839094]: U-Blox configured successfully.
    [DEBUG] [1597494836.225872645]: Subscribing to U-Blox messages
    [DEBUG] [1597494836.237840788]: Configuring INF messages
    [ WARN] [1597494837.616917996]: INF: DGNSS long baseline (62 km)
    
    

    Ros Topic /ublox/fix (sensor_msgs/NavSatFix) 로그
    $ rostopic echo /ublox/fix
    
    ---
    header: 
      seq: 250
      stamp: 
        secs: 1597544202
        nsecs:     13159
      frame_id: "gps"
    status: 
      status: 2
      service: 1
    latitude: XX.6383066
    longitude: XXX.0486526
    altitude: 46.18
    position_covariance: [0.002209, 0.0, 0.0, 0.0, 0.002209, 0.0, 0.0, 0.0, 0.0047610000000000005]
    position_covariance_type: 2
    ---
    
    

    status.status = 2는 기준국을 기반으로 해석 Fix 해를 얻습니다.

    sensor_msgs/NavSatStatus 정의:
    # fix is valid when status >= STATUS_FIX.
    
    int8 STATUS_NO_FIX =  -1        # unable to fix position
    int8 STATUS_FIX =      0        # unaugmented fix
    int8 STATUS_SBAS_FIX = 1        # with satellite-based augmentation
    int8 STATUS_GBAS_FIX = 2        # with ground-based augmentation
    

    GoogleMAP에서 /ublox/fix의 표시 확인은
    RTK-GNSS의 NavSatFix 데이터를 GoogleMAP에서 실시간으로 표시 를 참고합니다.

    좋은 웹페이지 즐겨찾기