无人驾驶(二)---室外导航之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)

(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'

(3) launch 文件

<launch>

  <!-- A simple launch file for the nmea_serial_driver node. -->
  <arg name="port" default="/dev/gps" />    <!--udev 规则映射, 查找gps设备-->
  <arg name="baud" default="115200" />     <!--波特率-->
  <arg name="frame_id" default="gps" />     <!--参考坐标系-->
  <arg name="use_GNSS_time" default="False" />
  <arg name="time_ref_source" default="gps" />
  <arg name="useRMC" default="False" />

  <node name="nmea_serial_driver" pkg="nmea_navsat_driver" type="nmea_serial_driver" output="screen">
    <param name="port" value="$(arg port)"/>
    <param name="baud" value="$(arg baud)" />
    <param name="frame_id" value="$(arg frame_id)" />
    <param name="use_GNSS_time" value="$(arg use_GNSS_time)" />
    <param name="time_ref_source" value="$(arg time_ref_source)" />
    <param name="useRMC" value="$(arg useRMC)" />
  </node>

</launch>

(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

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

gps2utm.launch

<launch>
<node name="gps2utm" pkg="gps_common" type="utm_odometry_node">
  <remap from="odom" to="YOUR_ODOM_TOPIC"/>
  <remap from="fix" to="YOUR_FIX_TOPIC" />
  <param name="rot_covariance" value="99999" />
  <param name="frame_id" value="base_link" />
</node>
</launch>

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_common gps2utm.launch

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

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

  • 7
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: GPS-RTK系统是指全球卫星定位系统(GPS)与实时运动定位技术(RTK)的结合。GPS是一种利用全球卫星定位系统的导航技术,通过接收来自多颗卫星发射的信号,计算接收器与卫星之间的距离,从而确定接收器的位置。然而,普通的GPS定位精度有限,通常在几米到几十米之间。 RTK技术是一种实时运动定位技术,通过同时接收多个基准站发射的信号,利用测量接收到的信号的时间延迟,计算出接收器的位置,并与已知位置的基准站进行比对和校正,实现高精度的定位。RTK技术的精度可以达到亚米甚至毫米级别,具有很高的精度和准确性。 GPS-RTK系统的基本原理是,在已知位置的几个基准站发射信号,接收器接收到这些信号后,通过测量信号的时间延迟计算出接收器与基准站之间的距离,然后利用三角定位法或其他定位算法,确定接收器的位置。由于基准站的位置已知,并且信号的传播速度是已知的,因此可以利用这些信息来计算接收器的位置。通过不断地接收和计算,接收器的位置可以实时更新,从而实现实时运动定位。 GPS-RTK系统具有高精度、实时性好、适用于室外环境和大范围测量等优点,广泛应用于测绘、地理信息系统、地质勘探、机械导航等领域。然而,由于信号的传播受到信号遮挡、多径效应等因素的影响,有时候会导致定位精度的降低,因此在使用GPS-RTK系统时需要注意选择合适的测量环境和采取适当的措施来提高精度和稳定性。 ### 回答2: GPS-RTK(Real-Time Kinematic)是一种实时动态差分定位技术,可以用来提高全球定位系统(GPS)的测量精度。它的基本原理是通过使用两个或多个接收器同时接收卫星信号,将它们之间的相位差异用于计算水平和垂直方向上的位置。 首先,需要在已知位置上设置一个参考站,该站点上的接收器将接收到的卫星信号的相位信息进行记录。然后,在待测站点附近放置一个或多个接收器,在实时接收卫星信号的同时,也接收来自参考站的校正数据。 接收器会测量从卫星到接收器的信号传播时间,并计算出这段时间内的信号相位差。然后,根据这些相位差和已知的参考站位置,可以对接收器的位置进行计算和修正。 GPS-RTK中最关键的是实时解算。接收器将接收到的原始数据经过确切的时序处理和快速运算,实时计算出待测站点的位置。根据由参考站提供的校正数据,将参考站与待测站的相位差异应用到实时解算的结果中,从而获得高精度的定位。 需要注意的是,GPS-RTK的精度受到许多因素的影响,例如大气延迟、多径效应和卫星几何。为了获得更高的精度,还可以使用更多的接收器并进行更复杂的算法处理。 总之,GPS-RTK利用接收器接收卫星信号的相位信息,并结合参考站的数据进行实时解算,从而提供高精度和实时动态差分定位。这项技术在土地测量、建筑施工和地质勘探等领域广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值