Ubuntu下Ublox F9P利用CORS服务无需自建基站实现RTK

文章详细描述了如何配置UbloxF9P模块的串口和USB接口,以便于接收UBX-NAV-PVT消息、发送RTCM数据以及获取RTK固定解。主要内容涉及Ublox与PC通信设置、ublox_driver的使用和RTKLIB的str2str工具应用。
摘要由CSDN通过智能技术生成

1、设备硬件连接图

Ublox F9P接口包括串口×2(`UART1`和`UART2`),USB×1,SPI×1,DDC×1(兼容I2C)。这里共用到2个接口,`UART1`、`UART2`和USB 3选2即可,本文选择串口`UART1`和USB口。其中,Ublox通过`UART1`向PC端发送的`UBX-NAV-PVT`消息,包含时间、定位类型(单点/浮点/固定解)、定位结果(经纬高)等,基于ublox_driver已转换为`gnss_comm::GnssPVTSolnMsg`类型的消息,供用户图形化显示等用途。PC端通过USB口向UBlox发送RTCM消息,同时Ublox需要定时向Ntrip caster发送自身NMEA格式的概略坐标,该过程基于RTKLIB_2.4.3的`str2str`命令行程序实现。

下面介绍具体过程。

2、准备工作:利用u-center配置Ublox串口协议

如前所述,`UART1`用于UBlox向PC端发送`UBX-NAV-PVT`消息,而USB口用于PC端向Ublox发送RTCM数据和接收NMEA坐标,因此u-center主要用于配置这两个接口支持的协议和波特率等,使其分别能够发送和接收对应的消息。

windows下载并安装u-center。

ublox连接到PC端后,打开u-center,连接对应串口(如COM3),打开菜单栏View下的`Configuration View`,找到PRT(Ports)配置选项,按下图分别配置串口`UART1`和USB口,其中`UART1`的`Protocol out`要包括`UBX`,USB口的`Protocol in`要包括`RTCM3`,`Protocol out`要包括`NMEA`,配置完成后点击左下角send,使配置生效。

UART1串口:

USB串口:

3、Ubuntu下实现Ublox基于CORS服务的RTK

3.1 确定UART1和USB对应串口设备的端口

首先插入UART1对应的USB到PC,通过如下命令查看端口名称(通常为`/dev/ttyUSB0`)

sudo dmesg | grep tty

显示如下内容,最后一行包含了UART1对应串口设备的端口名称`ttyUSB0`

[41104.700737] cdc_acm 1-13:1.0: ttyACM1: USB ACM device
[41191.235474] usb 1-13: pl2303 converter now attached to ttyUSB0
[41252.076897] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[41476.960420] usb 1-13: pl2303 converter now attached to ttyUSB0

同样地,插入USB对应的USB口到PC,获得USB对应串口设备的端口名称为`ttyACM0`(不同的设备可能不同,需要自行确认)。

3.2  安装并启动ublox_driver

安装过程详细见github的readme教程。

`UART1`连接到PC后,在`/config/driver_config.yaml`文件中正确填写对应的端口名称和波特率,波特率要与步骤2中ucenter配置的UART1的波特率一致:

input_serial_port: "/dev/ttyUSB0"
serial_baud_rate: 921600

启动ublox_driver,在ublox_driver的工作空间下启动一个终端(记为终端1),运行:

source ~/catkin_ws/devel/setup.bash
roslaunch ublox_driver ublox_driver.launch

 在该路径下新开一个终端(记为终端2),运行:

source ~/catkin_ws/devel/setup.bash
rostopic list

查看是否有话题`/ublox_driver/receiver_pvt` ,如果有则运行:

rostopic echo /ublox_driver/receiver_pvt

正常情况下会输出一系列定位信息:

time: 
  week: 2307
  tow: 213746.4
fix_type: 3
valid_fix: True
diff_soln: True
carr_soln: 0
num_sv: 11
latitude: 39.984473099999995
longitude: 116.34264909999999
altitude: 57.045
height_msl: 65.741
h_acc: 5.739
v_acc: 3.087
p_dop: 4.2700000000000005
vel_n: -0.20800000000000002
vel_e: 0.215
vel_d: 0.124
vel_acc: 0.75
---

其中,`carr_soln`表示定位解的类型, `carr_soln: 0`表示单点定位, `carr_soln: 1`表示RTK浮点解, `carr_soln: 2`表示RTK固定解。

3.3 使用RTKLIB的str2str接入CORS服务

下载并编译RTKLIB_2.4.3的`str2str`命令行程序,新开一个终端(记为终端3),运行:

git clone https://github.com/tomojitakasu/RTKLIB.git
cd RTKLIB/
git checkout rtklib_2.4.3
cd app/consapp/str2str/gcc/
make

在当前路径下运行:

./str2str -in ntrip://${NTRIP_SITE}:${NTRIP_PORT}/${MOUNT_POINT} -b 1 -out serial://${SERIAL_PORT}:${SERIAL_BAUD_RATE}

 说明:上述命令行仅为示例,具体内容根据自身需要替换。其中:

NTRIP_SITE:CORS帐号IP地址,如rtk.ntrip.qxwz.com

NTRIP_PORT:CORS帐号端口,如8001

MOUNT_POINT:CORS帐号挂载点,如AUTO

SERIAL_PORT:将RTCM数据输出给的串口设备,本例中为ttyACM0

SERIAL_BAUD_RATE:串口设备的波特率,波特率要与步骤2中ucenter配置USB的波特率一致(通常USB串口的波特率并不特别指定,默认与UART1一致)

例如:

./str2str -in ntrip://usernamexxx:password@rtk.ntrip.qxwz.com:8001/AUTO -b 1 -out serial://ttyACM0:921600

等待接通服务,并查看终端2中的`carr_soln`是否从0变为了2,当其值为2时,表明已经获得了RTK固定解。

说明:这里`-b 1`的作用是定时将输出流的数据返回给输入流,这里输出流是指Ublox USB串口输出的NMEA概略坐标,输入流是指ntrip caster发送的RTCM数据。具体参考RTKLIB#issue

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值