You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Drotek-ZED-F9P的GPSD与NTRIP差分改正实现厘米级定位

实现Drotek-ZED-F9P厘米级定位(SAPOS差分+Linux)

方案一:gpsd + RTKLIB str2str工具(适配gpsd场景)

gpsd原生不支持NTRIP,但可以用RTKLIB自带的str2str工具做中间转发,把SAPOS的差分数据直接推给ZED-F9P板卡,再通过gpsd读取定位结果。

操作步骤

  1. 确认RTKLIB已安装:
sudo apt install rtklib
  1. 找到SAPOS的NTRIP参数:包括Caster地址、端口、对应区域的挂载点,以及认证用的用户名/密码(部分SAPOS服务需要)。
  2. 查看ZED-F9P的USB串口路径,通常为/dev/ttyACM0,可通过ls /dev/ttyACM*确认。
  3. 启动差分数据转发:
str2str -in ntrip://<用户名>:<密码>@<caster地址>:<端口>/<挂载点> -out serial:///dev/ttyACM0:115200:8:n:1:off

注意:波特率115200要和ZED-F9P的默认配置一致,若之前修改过板卡波特率,需同步调整此处参数。

  1. 重启gpsd并验证:
sudo systemctl restart gpsd
cgps -s

等待3-5分钟,定位模式会从3D Fix切换为RTK Fixed,此时即为厘米级精度。

方案二:直接用RTKLIB rtkrcv(更稳定的纯RTK解算)

你之前配置rtkrcv失败,核心是参数配置不到位,以下是可直接复用的配置步骤:

操作步骤

  1. 创建rtkrcv配置文件zed-f9p-sapos.conf:
# 主设备输入(ZED-F9P USB串口)
inp1-type = serial
inp1-path = /dev/ttyACM0
inp1-baud = 115200
inp1-format = ubx

# NTRIP差分输入
inp2-type = ntripcli
inp2-path = <caster地址>:<端口>/<挂载点>
inp2-user = <用户名>
inp2-pass = <密码>
inp2-format = rtcm3

# 定位模式设置(固定解,厘米级)
pos-mode = fix
freqs = 1 2  # 适配GPS+GLONASS,若板卡支持多频可追加参数
sol-type = llh
out-path = solution.log  # 输出解算日志
  1. 启动rtkrcv:
rtkrcv -c zed-f9p-sapos.conf
  1. 验证定位状态:
    在rtkrcv交互界面输入status,若显示Solution status: FIX,说明已进入厘米级定位;也可通过cat solution.log | grep "FIX"实时查看结果。

解决RTKLIB navi无法识别板卡的问题

如果用navi工具,需排查以下几点:

  • 串口权限:执行sudo chmod 666 /dev/ttyACM0,或把当前用户加入dialout组(sudo usermod -aG dialout $USER,重启后生效)。
  • 协议匹配:navi中要选择UBX格式(ZED-F9P默认输出UBX协议),而非NMEA。
  • 波特率一致:navi设置的波特率必须和ZED-F9P的配置匹配(默认115200)。

关键注意事项

  • 优先选择离当前位置最近的SAPOS基准站挂载点,差分延迟越小,定位精度越稳定。
  • ZED-F9P进入RTK Fixed模式需要3-10分钟,需确保天线处于开阔无遮挡的环境。
  • 用方案一时,启动str2str前需停止gpsd,避免串口占用冲突:sudo systemctl stop gpsd。

内容的提问来源于stack exchange,提问作者Eric Böwer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:34:54