2016-04-27 29 views
0

最近几周,我学习使用EMANE来对使用Predictive OLSR路由协议的Ad hoc网络进行仿真。在emane上模拟Predictive OLSR协议

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

埃马内使用名为eelgenerator的应用程序,它可以产生位置事件交付地点无人机的数据,但这些数据是在鳗鱼日志文件格式不能在由gpsreceiver想要一个NMEA格式。 EMANE还有一个名为gpsd位置代理的应用程序,它可以处理位置事件,并将位置数据转换为NMEA格式,但gpsd位置代理的输出只能直接连接到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。

回答

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))