0

最近几周,我正在学习使用EMANE来模拟使用预测 OLSR路由协议的 Ad hoc 网络。

在计算 P-OLSR 中的 ETX 度量时,会考虑无人机所在位置的位置,这使得它与普通 OLSR 不同。我在将无人机的位置数据传输到 P-OLSR 核心时遇到了麻烦。我从上面提到的链接下载的补丁文件在协议中添加了一个gpsreceiver插件,用于从 P-OLSR 接收位置数据,然后将其传输到 P-OLSR。而在olsrd.conf.example文件中,我应该为插件设置一个接口,一个多播IP地址和一个端口,我在使用EMANE仿真平台时不知道如何设置这些东西。我尝试将多播 IP 地址和端口设置为与eventservicegroup属性的值相同。但它不可能是正确的,因为数据格式不一致。

EMANE 使用一个名为eelgenerator的应用程序,它可以生成位置事件来传递无人机的位置数据,但数据是 eel 日志文件格式,而不是gpsreceiver想要的NMEA格式。EMANE还有一个叫gpsd location agent的应用程序,它可以处理位置事件,并将位置数据转换成NMEA格式,但是gpsd location agent的输出只能直接连接到GPSd或者连接到GPSd的伪终端. GPSd 可以从 NMEA 格式的位置数据中获取纬度、经度和高度信息,并通过 localhost 的 2947 端口服务于其他应用程序。

那么,如何将位置数据传输到 P-OLSR 核心?如果通过gpsreceiver,我应该如何设置olsrd.conf,我需要自己编写程序吗?如果不使用gpsreceiver插件,我可以让P-OLSR核心通过GPSd获取位置数据吗?如果可以,如何准确地实现这一点?

PS:我的 EMANE 版本是 emane-0.9.3。我机器内核的版本是4.2.3-300.fc23.x86_64。

4

1 回答 1

0

我解决了这个问题。我编写了一个 python 脚本来读取数据pts并将其发送到 gpsreceiver。这是脚本:

import socket
fd = open("path of pts", "w+")
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(fd.readline(), (host, port))
于 2016-05-14T03:05:54.317 回答