我正在通过基于this repo的python脚本从multiwii板提取gps值。
我已将此添加到init函数中:
self.rawgps = {'fix':0,'numSat':0,'lat':0,'lon':0,'alt':0,'speed':0,'elapsed':0,'timestamp':0}
到getData函数:
elif cmd == MultiWii.RAW_GPS:
self.rawgps['fix']=float(temp[0]/10.0)
self.rawgps['numSat']=float(temp[1]/10.0)
self.rawgps['lat']=float(temp[2]/10.0)
self.rawgps['lon']=float(temp[3])
self.rawgps['alt']=float(temp[4])
self.rawgps['speed']=float(temp[5])
self.rawgps['elapsed']=round(elapsed,3)
self.rawgps['timestamp']="%0.2f" % (time.time(),)
return self.rawgps
和getDataInf函数
elif cmd == MultiWii.RAW_GPS:
self.rawgps['fix']=float(temp[0])
self.rawgps['numSat']=float(temp[1])
self.rawgps['lat']=float(temp[2])
self.rawgps['lon']=float(temp[3])
self.rawgps['alt']=float(temp[4])
self.rawgps['speed']=float(temp[5])
self.rawgps['elapsed']="%0.3f" % (elapsed,)
self.rawgps['timestamp']="%0.2f" % (time.time(),)
我的基础是我正在阅读的输出:http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol
当我用
调用代码时board.getData(MultiWii.RAW_GPS)
print board.rawgps
输出看起来很棒。这就是我得到的
{'alt': -12738.0, 'timestamp': '1494887366.41', 'lat': 6434.0, 'speed': 208.0, 'fix': 2561.0, 'lon': 24919.0, 'numSat': -21303.0, 'elapsed': 0.009}
{'alt': -12738.0, 'timestamp': '1494887366.41', 'lat': 6434.0, 'speed': 208.0, 'fix': 2561.0, 'lon': 24919.0, 'numSat': -21303.0, 'elapsed': 0.009}
{'alt': -12738.0, 'timestamp': '1494887366.41', 'lat': 6434.0, 'speed': 208.0, 'fix': 2561.0, 'lon': 24919.0, 'numSat': -21303.0, 'elapsed': 0.009}
{'alt': -12738.0, 'timestamp': '1494887366.41', 'lat': 6434.0, 'speed': 208.0, 'fix': 2561.0, 'lon': 24919.0, 'numSat': -21303.0, 'elapsed': 0.009}
{'alt': -12738.0, 'timestamp': '1494887366.41', 'lat': 6434.0, 'speed': 208.0, 'fix': 2561.0, 'lon': 24919.0, 'numSat': -21303.0, 'elapsed': 0.009}
对我而言,lat和lon看起来不像典型的lat / lon值。也许这是一种不同的数据类型?固定的,我期待一个1或0.而numSats,虽然我没有看到一个定义,我觉得应该是我连接的卫星数量,这可能不会超过15 .. 。或否定。
海拔也不应该是负数,而这一切都是在静止时拍摄的,所以速度应该为零。 Python不是我的常用语言,所以也许我在语法中丢失了一些。