CUAV RTK初步使用体验和感受

2023-05-16

记录使用RTK进行无人机定位并操作的使用体验

一. RTK定位设置

使用的是CUAV制作发售的RTK,型号为C9P,目前该产品已经下架,上新了C9PS。
并不需要太多的设置,在飞控接入RTK后(也包括普通的GPS模块),需要重新进行设置才能使用。
RTK在飞控上需要接入的线包括GPS和UART4两个,同时还需要一个数传接入TEMP1;地面站则接入飞控和数传的usb,同时需要打开QGC软件才能进行RTK定位。

二、MAVROS

打开后,可以使用mavros读取到无人机的ROS话题,这是基于mavlink协议的。
查看local_position话题,可以看到坐标还是挺稳定的,但是测试过程中,高度偏差较大,这在后面继续讲到。
然而,在使用XTDrone的communication.py代码进行通信的过程中,原本OK的代码,报错了,显示NED的frame 0不支持之类的。解决方法为,在启动程序后,需要定一个目标地址,否则其默认的NED目标坐标设置在RTK中是不支持的。

三、定位高度

RTK实测中,水平位置的精度可以达到2cm以内,换算就是±1cm,也就是cm级别的精度。
但是高度的抖动和误差比较大,在今天(2022年12月21日)的测试过程中,出现了高度的误差达到了将近2m,在之前的几次误差中,也达到了1m的误差。询问卖家,说这是正常的误差范围。
我也觉得是正常的,GPS对于水平精度还是挺准的,但是对于高度的测量,甚至达到十几米。RTK能达到几米已经很不错了。另外,高度还基于飞控内部的气压计进行测量,由于气压计测量的气压属于变化幅度比较大的那种,在温度、风速等变化下,数值变化巨大。今天测试高度误差更大的一个原因就是风速比较大。
已解决:看第四点下面的内容。

四、高度融合方法

目前想到的是,使用其他方法进行高度互补。首先就是测距模块:超声波或者激光。可以确保在高度不是那么高的情况下进行测高(考虑到户外测试也不需要那么高,以及高了之后也可以忽略这点高度误差)。在测试中,需要考虑场景,比如我们目前的测试是在户外草坪上,激光测距对于这种不规则表面是否会有较大的误差需要考虑到。

  1. 首先看能不能直接使用PX4内部的方式进行融合,(挖坑)
  2. 使用另外写程序的方法,高度对于PX4的offboard控制影响不是那么大,甚至可以外部写程序,生成一个新的高度数据进行后续的测量。但是这个方法可能会没有上述方法来的灵活,优先上述方法。
  3. 已解决:在QGC中进行高度融合设置(EKF_HEIGHT),默认使用的仍然是气压计,但是气压计在有风的情况下精度会很差。修改成GPS后,即可使用RTK的高度,精度也还不错。

五、多无人机RTK

初步测试:可以同时实现一个RTK基站,3个RTK移动站的高精度定位,在多次来回移动后保持高精度。
设置注意事项:由于RTK需要数传,因此也需要一个数传基站,和3个数传移动站。如果什么都没有设置,会导致QGC乱码。设置包括:①固定数传移动站的发射目标地址为数传基站,默认是广播的,影响了其他通道;②在QGC修改无人机编号MAVLINK_SYS_ID,比如分别设置成1、2、3,这样QGC才能够区别出来。
遇到的问题:多架无人机的相对位置并不会体现出来,他们的初始坐标都是自己的,并且初始化不一定为0,可能飘到很远很高的地方。因此在后续中,需要解决该问题。
可能的方法:首先,无人机的初始位置需要合理摆放,确保他们的物理坐标是明确的。其次,要确保无人机的坐标已经稳定,每一架无人机的坐标不一定马上就能稳定。最后,程序上解算相对偏移量。

六、 多无人机RTK测试出现高度变化问题

实际无人机测试情况:由于上述已经将无人机的高度定位修改成了GPS,也就是RTK提供的高度。在单架无人机测试中,无人机可以正常测试,在水平位置和高度保持较为稳定的状态。然而,在三架无人机测试中,主无人机(其中一架)在起飞时,目标高度2m,但是会冲到 8m的高度,但是高度数据显示只提高了2m,勉强起飞后,也会降落。其它两架无人机,或多或少会出现高度数据偏差严重问题。
猜测1:RTK高度定位本来就不太行,1架无人机成功飞行属于是运气好。
猜测2:RTK在多无人机情况下,地面站的数传通信能力有限,发送丢帧导致数据错误。
猜测3:多无人机出现了高度坐标混乱的情况,地面站没有分开发送高度数据。
猜测4:~
这是其中一张图片,图中飞行过程中Z轴的坐标,由于Z轴向下为正,所以看起来式反的。可以看出,Z轴目标点一直没变,但是在40s的时候,测量的z轴高度下降(也就是传感器测量出来无人机往下飞了),为了保持高度,无人机就向上飞了。可以想象,由于未知问题,传感器得到的Z轴高度不断降低(实际并没有下降),无人机为了保持高度而加大油门,导致实际高度不断上升。最后z目标点突然变为1,这点有点难以理解。
在这里插入图片描述

七、 上述问题的原因和解决

原因:通过询问客服和分析,可能是RTK数据量大,使用的数传性能不够,导致发送给无人机的定位数据不够,从而引发无人机定位精度偏差大。在后续的测试过程中,仅使用两架无人机后,无人机的定位问题解决了,进一步验证了上述的问题原因。
后续:考虑能否去除QGC除RTK必要数据外的其他数据,以减少负载,让三架无人机也能正常定位和工作。

八、 无人机MAVLINK_SYS_ID设置为其他后无法与mavros连接

问题:在两架无人机测试中,第二架无人机无法通过mavros进行控制,出现无法arm和无法切换offboard的问题,而遥控器是正常控制的。查看topic数据,发现了问题所在:
在这里插入图片描述
问题就是connected为false。
解决:通过查看px4.launch文件,发现了其中一个参数要对应修改,修改成2后即可,或者在roslaunch中进行设置:
roslaunch mavros px4.launch tgt_system:=2
在这里插入图片描述

九、 继续测试三架无人机的定位飞行

综上,目前已经测试2架无人机,使用RTK定位,在机载电脑offboard控制下正常飞行。需要继续增加无人机数量到3架进行测试。
测试结果:三架无人机时候,继续出现了定位抖动严重的问题,确定了是由于数传通信能力不足导致的RTK无法正常工作。数传只有200bps,即使更贵的数传也不超过300,因为他们是为了远距离而设计的。为此,可以考虑wifi数传,以下是参考资料:

  1. csdn的教程:https://blog.csdn.net/u013181595/article/details/90313964
  2. PX4官方教程:https://docs.px4.io/main/en/telemetry/telemetry_wifi.html
    可以使用ESP8266或者esp32,如果通信能力不足,可以考虑外接天线版本的esp32。注意是想主要有以下几点:1. 能够设置成sta模式,他们接入路由器,这样才可以一对多通信;2. 固定地面站ip,固定无人机数传的目标地址,防止网络占用;3. 以防机载电脑和wifi数传的通信干扰。

十、 总结

  1. 地面站连接多架无人机,需要分别设置MAVLINK_SYS_ID,保证QGC可以区分每架无人机。
  2. 上述修改后,mavros指令也需要相应修改,tat_system:=n修改成对应ID,使机载电脑可以正常连接。
  3. QGC与多架无人机通信,数传模式为1对多,需要修改移动端数传的发送地址为地面端数传的地址,而不是默认的广播传输,地面站数传不修改为广播发送,保证了通信不被其他信道干扰。
  4. 使用RTK后,无人机的高度定位源可以从气压计修改为GPS,可以进一步提高高度定位精度。
  5. 测试过程中,请等待RTK初始化成功后测试。

十一、WiFi数传辅助RTK

上述的问题是数传传输速率不足,导致RTK定位失效,因此采用WiFi数传,使用便宜的ESP8266模块,依照官方教程,博客即可实现。

  1. 下载官方bin文件,通过在线网页进行烧录。注意esp01s为3.3V供电,飞控提供的是5V引脚,推荐使用ESP-15F使用。另外,如果有问题可以短接G2-GND进行重置。
  2. 链接对应wifi,此时还是AP模式,修改相应数据、更改为STA模式:
    在这里插入图片描述
    也可以在QGC进行设置:
    在这里插入图片描述
  1. 其中波特率:57600为telem1、uart4接口的默认波特率;921600为telem2的默认波特率。
  2. 其中telem1是默认启用的,其他要启用则需要在QGC进行设置:
    在这里插入图片描述
  3. 优化:上面的博客说,需要设置地面站目标IP,防止WIFI数传广播数据占用带宽,继续看下如何设置。
  4. 增加数传通信能力:默认的57600bps的通信能力有限,可以修改为921600。修改包括:
    1)打开数传ip地址,进入设置,修改为921600。
    在这里插入图片描述
    2)修改qgc参数,包括wifi桥接、telem1波特率、mav波特率
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CUAV RTK初步使用体验和感受 的相关文章

  • Xpdf-3 for MDK

    http www linuxfans org nuke modules php name 61 Site Downloads amp op 61 geninfo amp did 61 2385 Xpdf 3 for MDK 类别 其它软件
  • 不同公司的牛

    本文转自 C 43 43 Builder 研究 http www ccrun com other go asp i 61 264 amp d 61 sgz5id 传统公司 xff1a 你有两头母牛 你卖掉一头 xff0c 买了一头公牛 你的
  • 从词法分析开始

    刚开始时 xff0c 用lex的确是很方便 xff0c 但是这样却不能将词法分析的思想实践出来 最好的方法还是自己写一个lex 当然龙书上写得很详细了 xff0c 但是写得再详细 xff0c 把它实现出来还是很难的 我的计划是 xff1a
  • Python 获取当前路径几种方法

    Python 获取当前路径的几种方法 绝对路径 1 os path 方法 span class token comment coding utf 8 span span class token comment usr bin python
  • [pixhawk笔记]2-飞行模式

    本文翻译自px4官方开发文档 xff1a https dev px4 io en concept flight modes html xff0c 有不对之处 xff0c 敬请指正 pixhawk的飞行模式如下 xff1a MANUAL xf
  • 扩展卡尔曼滤波详解

    Extened Kalman Filter 简单介绍 卡尔曼滤波详解讲解的基本的卡尔曼滤波算法是通过一个线性随机差分方程来估计当前状态 xff0c 但是如果状态估计关系以及测量关系使非线性的怎么办 xff0c 而且在实际使用中大部分的问题都
  • 关于PX4中的高度若干问题

    飞行的高度是如何测量的 xff1f 地面的高度和海平面的高度差别很大 xff0c 飞控又是如何有效判别进行降落的 xff1f 这是我脑子里的疑问 搜索的一圈发现很少有人讨论这方面的问题 xff0c 于是本次我就直接看一下源代码 xff0c
  • 基于4G网卡和树莓派zero实现低延时数字图传(250-300ms左右)

    方案本身并不复杂 xff0c 都是采用成熟的产品 xff0c 只需要几个命令行就能解决问题 0 准备工作 硬件 xff1a 树莓派zero 4G网卡 linux台式机 笔记本 虚拟机 软件 xff1a raspivid netcat nc
  • 树莓派zero w 使用AV接口连接电视机

    树莓派zero本身板子上有一个mini HDMI xff0c 但是我看到好像板子上还有一个小接口 xff0c 上面写着TV xff0c 感觉应该可以输出AV信号 xff0c 于是网上搜索了一番 xff0c 果然可以 首先 xff0c 手工做
  • OpenHD改造实现廉价高清数字图传(树莓派+PC)—(一)概述

    一 缘由 数字图传网上有开源的解决方案 xff0c 最为出名的应该就是OpenHD了 如果按照官方网站的内容 xff0c 构建起来也不是很复杂 xff0c 直接可以烧录两个TF卡就能完成 但是 xff0c 你需要用到两个树莓派板卡 xff0
  • OpenHD改造实现廉价高清数字图传(树莓派+PC)—(二)Wifibroadcast Wifi广播通信

    上一篇文章重点介绍了数字图传的整体构建思路 xff0c 以及主要的软件模块和最终效果 接下来几篇文章将针对其中的几个主要关键技术点进行阐述 一方面是为了将这些知识点做一个整理记录 xff0c 方便后续查阅 xff0c 另一方面也是将学习到知
  • OpenHD改造实现廉价高清数字图传(树莓派+PC )—(四)OSD数据传输和画面显示

    前面三篇文章分别讲了整体情况 xff0c wifibroadcast xff0c 以及OpenVG的移植等 OpenHD改造实现廉价高清数字图传 xff08 树莓派zero 43 ubuntu PC xff09 xff08 一 xff09
  • OpenHD改造实现廉价高清数字图传(树莓派+PC)—(五)gstreamer视频采集、传输和显示

    图传的一个重要功能就是可以看视频 主要是采集树莓派zero摄像头的数据 xff0c 经过编码打包 xff0c 通过wifibroadcast发送到地面端的PC上 xff0c 然后再通过解码显示出来 这里用到了视频采集和编解码相关的软件 在树
  • OpenHD改造实现廉价高清数字图传(树莓派+PC)—(六)OSD和视频画面整合显示

    这个OpenHD改造移植系列的最后一篇文章 xff0c 这篇文章主要讲如何讲前面说到的全部内容串接起来 xff0c 讲OSD画面显示和视频画面整合到一起 xff0c 形成完整的图传地面显示 xff0c 真正实现PC上直接接收显示图传视频和数
  • OpenHD改造实现廉价高清数字图传-OrangePi i96移植篇

    前面说到 xff0c 天空端的树莓派zero也涨价的厉害 xff0c 以及500多块了 xff0c 实在是贵的离谱啊 xff0c 所以还是要找国产化替代 先从最便宜的OrangePi i96开始吧 xff0c 毕竟只有39元的价格 xff0
  • [pixhawk笔记]6-uORB流程及关键函数解析

    本文中将结合代码 文档及注释 xff0c 给出uORB执行流程及关键函数的解析 xff0c 由于uORB的机制实现较为复杂 xff0c 所以本文主要学习如何使用uORB的接口来实现通信 回到上一篇笔记中的代码 xff1a include l
  • 基于1553B总线的ARINC 661指令传输(一)--1553B的一些要点

    来自www hoopercao com 1553B MIL STD 1553B 数据总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准 它最初 是为飞机提出的内部电子系统连网标准 xff0c 后来由于其可靠性高 传输率较高 技术
  • 35、标准模板类(STL)(一),综述、容器及其操作

    C 43 43 的 STL 是一个功能强大的库 xff0c 它是建立在模板机制上 xff0c 能够满足用户对存储管理不同类型数据的通用容器和施加在这些容器上的通用算法的巨大需求 xff0c 并且具有完全的可移植性 因此在寻求程序的解决方案时
  • 搬运: CVonline: 图像数据库(二) (更新于20190821)

    对象数据库 各种物体和场景的2 5D 3D数据集 xff08 Ajmal Mian xff09 3D对象识别立体数据集此数据集由9个对象和80个测试图像组成 xff08 Akash Kushal和Jean Ponce xff09 3D摄影数
  • 串口通信——写串口(C语言)

    C语言程序 xff0c 将一个文件中保存的控制LED的十六进制数读取 xff0c 并写入串口由433M发送至连接有另一433M的MSP430单片机 C语言程序 xff1a include lt stdio h gt include lt w

随机推荐

  • Keil 官网下载PACK包的地址

    转至 xff1a http www keil com dd2 Pack eula container 下载Pack包什么的有点用啊 xff0c 希望网址不要变了 截图如下 xff1a ARM公司的支持包下载地址 xff1a Common M
  • reStructuredText 表格快速生成

    reStructuredText 是个好东西 xff0c 但是如果要编写的表格里面包含中文实在是太蛋疼了 网上找了半天都没有找到一个合理的工具 xff0c 索性自己就写了个工具 xff0c 工具如下图 xff0c 简单的很 运行效果图如下
  • STM32CUBEMX使用PWM+DMA驱动WS2812

    STM32CUBEMX使用PWM 43 DMA驱动WS2812 首先在stm32cubemx中设置pwm和dma 我设置了TIM1的CH1为PWM引脚编写DMA响应函数 xff0c 即PWM DMA完成数据发送后的回调函数 PWM DMA
  • Arduino IDE配置STM32开发环境和程序烧录

    Arduino IDE配置STM32开发环境和烧录 前言 xff1a 最近在制作3D打印机 xff0c 自己画了一块STM32F446的3D打印机板子 xff08 RUMBA32 xff09 xff0c 但是在Arduino编译Marlin
  • Altium Designer 20(AD20)的PCB文件在嘉立创下单显示无外型文件解决方法

    Altium Designer 20 AD20 的PCB文件在嘉立创下单显示无外型文件解决方法 如上图 xff0c 在机械层1中生成外形 xff0c 勾选最后两个 如果不行 xff0c 修改宽度为10mil试一下
  • CH552 USB HID键盘

    客制化键盘制作V1 CH552工程 目前正在客制化一个小键盘 xff0c 计划8月中旬在咸鱼上售卖 xff0c 功能包括 xff1a 蓝牙有线双模 xff0c 蓝牙 5 0 xff08 nrf52810 xff09 xff0c 低功耗模式按
  • [pixhawk笔记]5-uORB消息传递

    本文主要内容翻译自官方文档 xff1a https dev px4 io en middleware uorb html 在前一篇笔记中使用uORB完成消息传递 xff0c 实现了一个简单示例程序 xff0c 本文将对uORB进行系统学习
  • 2019全国电赛总结

    准备阶段 xff1a 赛前大约一个星期就开始全力备战电赛 xff0c 由于学校条件不算太好 xff0c 所以选题上就不选放大器设计之类的题目 xff0c 只能选择一些电源题 xff0c 控制题 xff0c 造飞机题 技术准备 xff1a 这
  • UBUNTU使用RTL8811CU网卡(包含树莓派)

    8811cu 8821 github链接 一 普通的Ubuntu系统 xff0c 测试的是ubuntu18 04 下载驱动 从绿联中下载 xff1a 链接 下载解压后 xff0c chmod Linux文件夹 sudo chmod R 77
  • XTDrone ROS安装

    XTDrone ROS安装 本博客是参考XTDrone内容 xff0c 进行ROS安装和配置 参考连接 xff1a XTDrone 梗概ubuntu18的源 xff0c 并更新 参考 xff1a 更改ubunut源 sudo apt upd
  • PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装 xff0c 并可以通过roslaunch启动软件仿真 接下来为无人及添加相机 xff0c 并将图像用python函数读取 xff0c 用于后续操作
  • XTDrone 视觉SLAM环境配置

    基于XTDrone的视觉SLAM章节 xff0c 进行环境配置 中途遇到了一些问题 xff0c 一一解决后成功完成了 xff0c 记录该流程 一 遇到的问题与参考链接 XTDrone相关参考连接 xff1a 链接依赖安装教程 xff1a O
  • XTDrone 视觉惯性里程计(VIO)配置

    XTDrone 视觉惯性里程计 xff08 VIO xff09 配置 参考XTDron进行配置 xff0c 对于依赖的配置写成文档 xff0c 参考主要为 xff1a XTDrone Ceres Solver 2 0 0 1 下载2 0 0
  • ros realsense D435i摄像头配置

    ros realsense D435i摄像头配置 之前在ubunut18中配置了ROS环境 xff0c 现在需要在此基础上 xff0c 配置D435i相机的SDK和ROS包 一 参考 https github com IntelRealSe
  • 树莓派4B(ubuntu mate系统)使用d435i运行vins

    树莓派4B xff08 ubuntu mate系统 xff09 使用d435i运行vins 提示本文为随手笔记 xff0c 并不严谨 xff0c 可参考 xff1a 博客和博客进行配置 树莓派 ubuntu mate 20系统安装ros的步
  • 树莓派3B+增加虚拟内存

    普通ubuntu系统增加虚拟内存参考 xff1a https blog csdn net weixin 42405819 article details 117886557 编译opencv时 xff0c 卡在了91 不动 xff0c 按照
  • ROS主机从机设置

    ROS主机从机设置 在ROS基础上 xff0c 配置主机和从机 xff0c 实现主机和从机的话题联通 配置hosts 在主机和从机的 etc hosts文件中 xff0c 配置如下内容 xff08 也许主机只需要写入 master xff1
  • VINS、MAVROS等的坐标系统一(草稿,未得出明确结果)

    由于不同算法之间的坐标系不同 xff0c 导致计算的结果混乱 xff0c 该博客的目的是记录和统一不同算法之间的坐标系 xff0c 保证坐标系的统一 一 VINS算法 vins算法 xff0c 使用D435I相机 该坐标方向为 xff1a
  • ROS学习笔记9-创建ros消息和服务

    该节内容主要来自于官方文档的两个小节 xff1a 1 使用rosed来编辑 2 创建ros消息的服务 先来看rosed xff1a rosed rosed命令是rosbash的一部分 xff0c 使用rosed可以直接编辑包中的一个文件 x
  • CUAV RTK初步使用体验和感受

    记录使用RTK进行无人机定位并操作的使用体验 一 RTK定位设置 使用的是CUAV制作发售的RTK xff0c 型号为C9P xff0c 目前该产品已经下架 xff0c 上新了C9PS 并不需要太多的设置 xff0c 在飞控接入RTK后 x