通过UDP协议,利用NMEA协议传输GNSS信号。

我们有一艘BlueBoat船,船上配备了Norbit Winghead导航仪和集成的Applanix POS MV定位系统。目前,我正尝试让BlueBoat使用Applanix系统作为GPS/罗盘,但始终无法成功。

POS MV 系统只能通过固定端口 5607 以广播 UDP 流量的形式输出 NMEA 数据。我已经追踪到流量一直到达 BlueOS,所以我知道数据到达了那里。
我输出了以下语句:$GPGGA、$GPRMC、$GPHDT 和 $GPVTG。

在 BlueOS 的串口配置中,我将 Serial 2 配置为 udpin:0.0.0.0:5607。
在参数设置中,我将 serial2_protocol 设置为 GPS,GPS1_type 设置为 NMEA,并将 serial5_protocol 设置为 none,因此参数中唯一包含 GPS 的端口是 Serial 2。但是,我在 MavLink Inspector 中查看 GPS_RAW_INT 时,仍然看不到任何数据输入。

现在我感觉很无助,不知道该如何继续排查问题。使用NMEA注入器行不通,因为它不支持HDT,而HDT正是我想要集成Applanix系统的原因之一。

有没有人成功实现过这个功能,可以给我一些指导?

发送RMC、GGA、VTG、HDT信号时,发送频率是多少?自动驾驶仪需要尽可能以10Hz的频率发送这些信号……

虽然 5607 端口可以工作,但您的设备需要指向运行 BlueOS 的树莓派的 IP 地址,而不是发送广播?

其他一切似乎都正常——检查一下这些方面,看看能否解决你的问题!

我确保使用了 10 Hz 的采样率。可惜的是,无法定向传输数据流。在我们的 Applanix 系统中,广播是唯一的选择,但由于所有仪器都位于不同的子网,我使用路由器上的 socat 命令将广播转换为指向树莓派的单播。我还使用树莓派上的 tcpdump 命令验证了流量是否到达,所以我猜测问题出在网卡和自动驾驶仪之间。串口 2 的波特率如何?在这个设置中它重要吗?我还能采取哪些步骤来找出问题所在?

不会影响连接,因为它不是串口而是UDP。
自动驾驶进程似乎没有收到消息,这非常奇怪!
能否分享一下
sudo tcpdump -i eth0 -n udp port 5607 -X
服用红色药丸后在终端的输出结果?

最终我还是采用了完全不同的解决方案。现在我已经基本完成了一个程序,它可以将 NMEA 信号转换为 MAVLink 信号,并能与我们的采集软件(目前主要是 Eiva)一起在机载计算机上运行。由于 Eiva 也能够通过 NMEA 输出标准自动驾驶仪的指令,所以我也加入了这部分功能,这样 Eiva 基本上就能控制 Blueboat 了。这个程序还没有经过测试(大部分是由 ChatGPT 编写的),但如果确认它能正常工作,我很乐意分享。至于 TCP 转储的输出,我还没来得及录制,等有空的时候我会重新录制。