RTK接入QGC(QGC转发RTK信息)


所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!

PX4其它文章请点击这里:     PX4——无人机飞行控制系统


1. RTK简介

        RTK(Real Time Kinematic)可将GPS精度提高到厘米级。 它使用信号载波相位的测量值,而不是信号的信息内容,并依靠单个参考站提供实时校正,提供高达厘米级的定位精度。
       一般是将一台接收机置于基准站上,另一台或几台接收机置于载体(称为移动站)上,基准站和移动站同时接收同一时间、同一GPS卫星发射的信号,基准站所获得的观测值与已知位置信息进行比较,得到GPS差分改正值。然后将这个改正值通过无线电数据链电台及时传递给共视卫星的移动站精化其GPS观测值,从而得到经差分改正后移动站较准确的实时位置。在这里插入图片描述
      需要两个M8P GPS模块和数据链路才能使用PX4设置RTK。地面上的GPS称为基站(Base),空中的GPS单元称为移动站(Rover)。基站连接到QGroundControl(通过USB),并使用数据链路向飞行器传输RTCM校正数据(使用MAVLink传过来的 GPS_RTCM_DATA消息)。在自驾仪上,MAVLink数据包被解包并发送到机载GNSS单元,在那里进行处理以获得RTK解决方案。

2. RTK在QGC(GGroundControl)地面站中配置

    本质上即插即用的,但是如果不行,请看以下配置:
       ①. RTK GPS是否勾选
       ②. 搜索精度可以适当降低
       ③. 搜索时间可以适当延长
在这里插入图片描述
       ④ .在参数中看看是否为mavlink2,搜索MAV_PROTO_VER参数。

3. 还连接不上的问题

首先在mission planner中能行,就已经证明硬件(ubx的m8p)没问题了,但是在QGC上死活不好使,于是乎搭建环境下载源码开始分析代码。反正结论就是在GQC源码中不支持串口的接入,只能用USB的方式接入。

4. 连接测试

把串口的连接换成USB后,所有硬件接好,结果如下
      勘测模式下:
在这里插入图片描述
      勘测后:
在这里插入图片描述因为信号不太好,没有收到RTK,但是也通过地面站转发成功了。
4中4代表 3D with DGPS.

0-1: no fix, 2: 2D fix, 3: 3D fix. 4: 3D with DGPS. 5: 3D with RTK</field>

当然不通过地面站转发也是可以的,这是我朋友做的,通过硬件转发。这是截获的数据包:
在这里插入图片描述
参考:
链接1: 官网中RTK GPS配置.
链接2: 雷讯中RTK GPS配置


PX4其它文章请点击这里:     PX4——无人机飞行控制系统

  • 30
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要接收RTK差分基站数据并将差分数据转发到终端设备,可以使用Spring Boot框架和一些第三方库来实现。下面是一些基本步骤: 1. 确认RTK差分基站数据的格式和传输协议,例如NTRIP或者RTCM等。 2. 使用Spring Boot框架创建一个Web应用程序,用于接收差分数据。 3. 将第三方库(例如JNR-SerialComm)导入到项目中,用于连接差分基站设备并读取数据。 4. 在应用程序中编写代码,将读取到的差分数据转发到终端设备,可以使用TCP或者UDP协议。 5. 配置应用程序的端口和网络参数,确保它能够与差分基站设备和终端设备正确通信。 下面是一个简单的示例代码,可以进行参考: ```java @RestController public class RtkController { private SerialPort serialPort; // 差分基站设备连接实例 @GetMapping("/rtk") public void getRtkData() throws IOException { // 读取差分数据 InputStream inputStream = serialPort.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String data = new String(buffer, 0, len, StandardCharsets.UTF_8); // 转发数据到终端设备 DatagramSocket socket = new DatagramSocket(); InetAddress address = InetAddress.getByName("192.168.1.100"); // 终端设备IP地址 int port = 1234; // 终端设备端口号 byte[] sendData = data.getBytes(); DatagramPacket packet = new DatagramPacket(sendData, sendData.length, address, port); socket.send(packet); } @PostConstruct public void init() throws Exception { // 初始化差分基站设备连接 serialPort = SerialPort.getCommPort("/dev/ttyUSB0"); // 差分基站设备串口号 serialPort.setComPortParameters(9600, 8, 1, SerialPort.NO_PARITY); serialPort.setFlowControl(SerialPort.FLOW_CONTROL_DISABLED); serialPort.openPort(); } @PreDestroy public void destroy() { // 关闭差分基站设备连接 serialPort.closePort(); } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值