• 无人驾驶(二)---室外导航之RTK配置与接入及GPS与UTM坐标转换


    1. RTK 概述

    RTK 载波相位差分技术,是实时处理两个测量站载波相位观测量的差分方法,将基准站采集的载波相位发给用户接收机,进行求差解算坐标。一般包含流动站 (移动站) 和基准站 (基站) 。本文中RTK定位采用千寻定位, 参考的也是千寻CORS基站的坐标,所以需要先登入千寻cors账号。

    2. RTK配置千寻账号

    (1) RTK 输入差分源设置为 Ntrip Client,因为GNSS接收机放在车子上,所以选择流动站
    在这里插入图片描述
    (2)填写千寻服务参数
    在这里插入图片描述
    地址:填写千寻IP, 端口:国内一般是用8003(CGCS2000坐标),挂载点一般选择接入点: AUTO(五星十六频)

    3. RTK接入ROS系统

    nmea_navsat_driver是一套用于获取并解析GPS数据的ROS驱动包,使用Python语言实现。GPS设备使用此包的条件是:遵守或者兼容NMEA0183协议。

    (1)环境配置

    系统:Ubuntu18.04
    ros: melodic
    RTK :GNSS接收机 + 2个蘑菇天线  (串口转usb)
    
    • 1
    • 2
    • 3

    (2)nmea_navsat_driver源码安装

    cd catkin_ws/src
    git clone https://github.com/ros-drivers/nmea_navsat_driver/
    cd ..
    catkin_make -DCATKIN_WHITELIST_PACKAGES='nmea_navsat_driver'
    
    • 1
    • 2
    • 3
    • 4

    (3) launch 文件

    
    
      
          
           
           
      
      
      
    
      
        
        
        
        
        
        
      
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    (4) 代码解析
    nmea_navsat_driver提供四个节点:nmea_topic_driver,nmea_serial_driver,nmea_topic_serial_reader和nmea_socket_driver ;

    nmea_topic_serial_reader节点:此节点从串口读入GPS数据,然后封装为nmea_msgs/Sentence数据格式,发布话题nmea_sentence。

    nmea_topic_driver节点:此节点订阅话题nmea_sentence,然后根据NMEA0184协议解析,并发布解析后的数据,发布话题为:经纬度/fix,速度/vel,gps时间/time_reference和航向角/heading.

    nmea_serial_driver节点:此节点从串口读数据,直接解析发布数据,相当于nmea_topic_driver节点和nmea_topic_serial_reader节点的结合体。

    发布话题为
    /fix : gps经纬度
    /vel : gps速度
    /time_reference : gps时间
    /heading : 航向角
    /extend_fix : GPSFix消息包含GPS卫星状态和定位信息

    4. GPS坐标转换UTM坐标

    UTM坐标系——Universal Transverse Mercator, 统一横轴墨卡托投影系统,UTM是一种投影坐标,使用基于网格的方法表示坐标,是将球面经纬度坐标经过投影算法转换成的平面坐标,即通常所说的XY坐标。坐标原点位于本初子午线与赤道交点,以正东方向为x轴正方向(UTM Easting),正北方向为y轴正方向,建立坐标系。

    cd catkin_ws/src
    git clone https://github.com/swri-robotics/gps_umd
    cd ..
    catkin_make
    
    • 1
    • 2
    • 3
    • 4

    创建launch文件 :GPS坐标转换为UTM坐标

    gps2utm.launch

    
    
      
      
      
      
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    utm_odometry_node:将gps经纬度转换为utm坐标
    utm_odometry_to_navsatfix_node: 将UTM坐标转换为GPS坐标
    订阅的话题:/fix (经纬度)
    发布的话题:/odom (UTM坐标)
    参数:
    ~rot_covariance (double, default: 99999)
    Variance (in meters) to specify for rotational measurements

    ~frame_id (string, default: Copy frame_id from fix message)
    Frame to specify in header of outgoing Odometry message

    ~child_frame_id (string)
    Child frame to specify in header of outgoing Odometry message

    5.运行结果

    roslaunch nmea_navsat_driver nmea_serial_driver.launch
    roslaunch gps_commom gps2utm.launch
    
    • 1
    • 2

    在这里插入图片描述
    坐标转换工具:http://www.whoi.edu/marine/ndsf/utility/NDSFutility.html

    参考链接:ROS WIKI:gps_common
    参考: ROS WIKI:nmea_navsat_driver

  • 相关阅读:
    【知网检索征稿】第四届大数据经济与信息化管理国际学术会议(BDEIM2023)
    TensorRT C# API 项目更新 (1):支持动态Bath输入模型推理
    Java中Xml4j的使用
    gitlab cicd问题整理
    微信小程序实现删除功能
    SQL中LIKE和REGEXP简单对比
    TrOCR——基于transformer模型的OCR手写文字识别
    编译和链接
    Redis缓存——快速入门
    Vue父子传值子组件接收的6种方式
  • 原文地址:https://blog.csdn.net/weixin_51157015/article/details/127921916