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

2023-05-16

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • FreeRTOS入门——STM32下完成一个基于FreeRTOS的多任务程序

    文章目录 一 什么是FreeRTOS二 裸机系统与多任务系统1 裸机系统2 多任务系统3 系统之间的对比 三 实验要求四 实验准备五 在KEIL新建 FreeRTOS 工程1 新建本地工程文件夹2 使用 KEIL 新建工程3 在 KEIL
  • natnet/vrpn_cliernt环境配置

    vrpn sdk的频率上限就是60hz xff0c 想要提高频率可以使用natnet client进行话题接收 1 basalt vrpn client src下需要的其他package vrpn catkin glog catkin ca
  • 无人机集群学习

    natnet sdk4 0 学习 中文介绍 xff1a NatNet SDK Wiki 示例工程 xff1a NatNet Sample Projects NaturalPoint Product Documentation Ver 2 2
  • Nginx证书管理

    一 下载证书到本地 Nginx服务器上传 管理SSL证书 xff0c 将SSL证书压缩包下载到本地后 xff0c 加压Nginx服务器证书的压缩包文件 cert file name pem PEM格式的证书文件 xff0c PEM格式的证书
  • 【ESP32】arduino中的ESP32实时系统FreeRTOS使用教程(一)

    ESP32 FreeRTOS 任务的状态任务的优先级 创建任务传递给任务函数的参数结构体多参数传递互斥量MutexESP32的双核心固定频率运行任务软件定时器 简单的本节略过 xff0c 详细的可以看视频 xff1a 单片机ESP32上的F
  • Linux系统下GDB调试及opencv的使用

    Linux系统下GDB调试及opencv的使用 一 GDB的简介二 GDB的作用三 GDB的使用1 GDB调试举例2 段错误调试3 内存出错的gdb调试 四 安装opencv 3 4 11 下载opencv 3 4 12 解压3 编译4 配
  • Linux下vscode的配置与使用、proteus仿真运行stm32程序、Altium Designer18绘制STM32最小系统原理图

    Linux下vscode的配置与使用 proteus仿真运行stm32程序 Altium Designer18绘制STM32最小系统原理图 一 Linux下vscode的配置与使用1 安装vscode2 安装c 43 43 插件3 配置4
  • stm32f103核心板串口通信入门

    stm32f103核心板串口通信入门 一 基于寄存器与基于固件库编程方式的差异二 stm32串口通信1 前期准备硬件软件连接 2 编写程序并烧录设计程序烧录程序 三 总结 一 基于寄存器与基于固件库编程方式的差异 使用固件库 xff0c 目
  • Requirement already satisfied 的解决办法

    问题描述 xff1a 安装的时候出现Requirement already satisfied xff1a areadly exist 公司环境是需要dfmanager创建一个python36虚拟环境 xff0c 当在虚拟环境中使用pyth
  • 基于FreeRTOS的STM32多任务程序

    基于FreeRTOS的STM32多任务程序 一 材料准备二 FreeRTOS移植FreeRTOS是什么FreeRTOS移植到STM32上 MDK开发环境 1 下载FreeRTOS源代码2 前期准备3 手动移植RreeRTOS 程序的编写运行
  • STM32实现基于I2C的AHT20温湿度采集

    STM32实现基于I2C的AHT20温湿度采集 I2C通信协议软件I2C与 硬件I2C代码实现烧录硬件连接烧录并运行 参考 I2C通信协议 I2C协议简介 IC Inter Integrated Circuit xff09 总线是一种由 P
  • 计算机网络中Wireshark的简单使用与分析

    Wireshark应用实验 数据链路层网络层传输层TCP 和 UDP 段结构分析 TCP 建立和释放连接 应用层 数据链路层 熟悉 Ethernet 帧结构 其中 xff1a ff ff ff ff ff ff 接受计算机的MAC地址 xf
  • 计算机网络CPT简单应用

    计算机网络CPT简单应用 直接连接两台 PC 构建 LAN用交换机构建 LAN交换机接口地址列表生成树协议 xff08 Spanning Tree Protocol xff09 路由器配置初步 直接连接两台 PC 构建 LAN 将两台 PC
  • HTML入门学习

    HTML入门学习 一 软件准备及配置二 HTML入门学习1 HTML2 HTML文件结构及分析3 标题及文本格式4 超链接 图片与文件路径5 表格 列表及表单6 区块元素 内联元素 预设格式及特殊字符 三 总结与心得 一 软件准备及配置 所
  • CSS初步学习

    CSS初步学习 一 CSS二 CSS语法及生效方式三 三种样式 amp 颜色 尺寸与对齐四 BOX amp 边框与边距五 定位 amp 溢出六 浮动 amp 设置不透明度七 组合选择器 amp 伪类和伪元素八 总结 使用CSS需用到VS C
  • 《通信软件开发与应用》课程结业报告

    正在写 xff0c 12点之前肯定提交 xff0c 不要急 xff0c 老师 xff08 坚定的目光 xff09
  • printf函数的重定向

    为什么要重定向printf函数 xff1f printf函数是底层函数 xff0c 含于stdio h头文件 因为在C语言中printf函数已经定义为默认输出到显示器的 xff0c 若要想在串口上显示 xff0c 那就需要重定向printf
  • 利用蜂鸣器播放音乐

    我们知道 xff0c 蜂鸣器可分为有源蜂鸣器和无源蜂鸣器 xff0c 有源蜂鸣器内置了频率发生电路 xff0c 因此其通电就能够发出声音 xff0c 但是其频率是固定的 xff0c 而无源蜂鸣器内部没有频率发生电路 xff0c 需要外界给予
  • 关于Ubuntu18.04虚拟机连不上网的问题

    1 问题详情 尝试过桥接模式和NAT模式的设置但并没有解决问题 2 问题原因 网络设置过程有问题 3 解决问题 1 关闭当前虚拟机 xff0c 并按照下列截图在虚拟机设置里打开网络适配器 点击确认 2 选择编辑下的虚拟网络编辑器 3 重新开
  • WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.

    出现以下问题 解决办法 python m 会指定你当前使用的python版本 python m pip install pyreadline xff08 包名 xff09 安装成功 xff01

随机推荐

  • 大疆M3508电机分电板PCB及打板记录

    1 所需物品 已经完成的电路板4个xt30的航模公头接口1个xt60的航模母头接口1个xt60的航模公头接口5个GH1 25立贴母座 xff08 2Pin xff09 关于PCB文件转成G文件的方法 1 可以使用AD自带的转G文件的方法 x
  • ubuntu18.04下opencv的安装配置以及不同版本opencv的切换

    一 安装OpenCV3 4 1 如果是要跑ORB SLAM2 xff0c 建议用OpenCV 3 4 1 版本 xff0c 不然之后会很麻烦 xff0c 会出现不兼容问题 xff09 xff08 1 xff09 下载OpenCV 3 4 1
  • Docker基础使用篇

    一 什么是docker xff0c 项目中使用docker的目的是什么 xff1f 1 什么是docker xff1f 1 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff
  • 基于Python_opencv的车牌识别系统

    基于python opencv的车牌识别系统 一 说明 根据现有的车牌识别系统 xff0c 本人对代码进行了优化 xff0c 原有功能 xff1a 1 对图片中的车牌号进行识别 xff0c 并对车牌所属地可视化 2 将识别出的车牌号 车牌所
  • 【FreeRtos内部机制-韦东山(更新中)】

    1 任务的引入 ARM框架 任务 xff1a span class token operator span span class token operator span 一段代码 xff1b 运行位置 xff1b 运行环境 span cla
  • 【Deepsort-yolov5实现无人机视觉检测和跟踪】

    Deepsort yolov5无人机视觉检测和跟踪 1 YOLOv5无人机视觉检测1 1 训练无人机数据集1 2无人机检测结果 2 Deepsort跟踪2 1 算法原理2 2 无人机跟踪实现2 3 无人机运动轨迹可视化2 4 目标质心点保存
  • 关于Pycharm主题Darcula下使用jupyter显示图片的颜色错误

    关于Pycharm主题Darcula下使用jupyter显示图片的颜色错误 问题描述 在亮色主题下显示图片正确 xff0c 但在暗色主题下显示图片时 xff0c 图片的底色发生变化 解决方法 File gt Settings gt Lang
  • K8s 学习之路(一)---基本知识

    前段时间一直在学习K8s xff0c 但是一直没来得及做总结 xff0c 所以今天总结下 学习网站 xff1a https kuboard cn install v3 install html 官网 xff1a https kubernet
  • K8s学习之路(三)---制作镜像

    本文主要总结制作容器镜像的知识 一 镜像制作简介 1 镜像打包需要的配置文件 主要文件 xff1a Dockerfile 文件 其他文件 xff1a 工程的代码和运行工程所需要的环境列表 2 Dockerfile文件 Dockerfile文
  • K8s学习之路(四)--部署应用

    上篇文章已经讲解了如何制作镜像 xff0c 这节内容主要是讲在k8s上部署第一个应用 部署应用我们需要使用kubectl命令工具和yaml文件进行进行部署 xff1a 一 部署过程 xff08 1 xff09 创建YAML文件 xff08
  • apt update报错“Unsupported proxy configured“解决办法

    我在 etc apt apt conf d文件夹下已经添加了代理文件10proxy 内容如下 xff1a 为了解决上述问题 xff0c 我把10proxy里面的内容修改为如下 即增加了http xff0c 然后就正常了 以前不加http 没
  • ubuntu20.04搭建autoware开发环境

    ubuntu20 04搭建autoware开发环境 安装Ubuntu20 04系统 在网上下载Ubuntu20 04镜像 xff0c 创建虚拟机进行安装即可 Ubuntu 20 04官方下载网址 xff1a https cn ubuntu
  • 英伟达开发板学习系列----Ubuntu18.04 系统备份

    NX系统备份 xff08 Ubuntu18 04 xff09 备份前 xff0c 先确认 xff1a 1 你当前的存放镜像的位置空间大小足够备份 2 依赖环境为Ubuntu18 04 查看系统版本命令 xff1a lsb release a
  • ros入门(三)---编辑launch文件

    一 安装IDE环境 vscode vscode 下载 https code visualstudio com docs start 61 true 1 安装 sudo dpkg i xxxx deb 2 卸载 sudo dpkg purge
  • python 实现RFID串口数据读取

    学习python语言很久 xff0c 第一次用于实际工作需要 xff0c 记录一下 pyserial模块封装了对串口的访问 xff0c 安装 xff1a pip insatll pyserial 对象属性 name 设备名字 xff1b p
  • ros入门(四)--python实现话题订阅和发布及TCP数据转发

    机器人发布话题 xff0c 进行话题订阅 xff0c 并将话题通过TCP转发给PC端 这里主要是基本的消息订阅和socket 代码实现 1 发布方发布话题 xff08 1 xff09 相关代码 usr bin env python codi
  • ros入门(六)--imu融合里程计robot_pose_ekf扩展卡尔曼融合包

    IMU 一般具有两个基本器件 xff1a 加速计和陀螺仪 主要用于测量自身位姿 xff0c 位姿包括位置和姿态 最近在研究imu 融合里程计方面的内容 xff0c 初学一些内容 xff0c 总结一下 xff1a 环境信息 xff1a Ubu
  • ros入门(八)---TF坐标转换

    1 TF 简介 TF TransForm xff0c 就是坐标转换 xff0c 包括了位置和姿态两个方面的变换 注意区分坐标转换和坐标系转换 坐标转换是一个坐标在不同坐标系下的表示 xff0c 而坐标系转换不同坐标系的相对位姿关系 fram
  • Ros入门 (十)----激光雷达避障 简易实现

    本篇文章通过订阅 scan话题获取障碍物的距离信息 xff0c 达到避障目的 xff0c 提供部分代码 xff0c 仅供参考 1 单线激光雷达避障 xff08 1 xff09 ros接入激光雷达 以sick激光为例 xff0c 在之前的文章
  • 无人驾驶(二)---室外导航之RTK配置与接入及GPS与UTM坐标转换

    1 RTK 概述 RTK 载波相位差分技术 xff0c 是实时处理两个测量站载波相位观测量的差分方法 xff0c 将基准站采集的载波相位发给用户接收机 xff0c 进行求差解算坐标 一般包含流动站 移动站 和基准站 基站 本文中RTK定位采