def position_estimate(messages, satinfo): '''process raw messages to calculate position ''' rxm_raw = messages['RXM_RAW'] pos = positionEstimate.positionEstimate(satinfo) if pos is None: # not enough information for a fix return rtcm = RTCMv2.generateRTCM2_Message1(satinfo) if len(rtcm) != 0: print("generated type 1") rtcmfile.write(rtcm) if not opts.nortcm: dev2.write(rtcm) rtcm = RTCMv2.generateRTCM2_Message3(satinfo) if len(rtcm) != 0: print("generated type 3") rtcmfile.write(rtcm) if not opts.nortcm: dev2.write(rtcm) errset = {} for svid in satinfo.rtcm_bits.error_history: errset[svid] = satinfo.rtcm_bits.error_history[svid][-1] save_satlog(rxm_raw.iTOW, errset) return pos
def position_estimate(messages, satinfo): '''process raw messages to calculate position ''' rxm_raw = messages['RXM_RAW'] pos = positionEstimate.positionEstimate(satinfo) if pos is None: # not enough information for a fix return rtcm = RTCMv2.generateRTCM2_Message1(satinfo, maxsats=10) if len(rtcm) != 0: #print(rtcm) rtcmfile.write(rtcm) port.sendto(rtcm[:-2], (opts.udp_addr, opts.udp_port)) rtcm = RTCMv2.generateRTCM2_Message3(satinfo) if len(rtcm) != 0: print(rtcm) rtcmfile.write(rtcm) port.sendto(rtcm[:-2], (opts.udp_addr, opts.udp_port)) errset = {} for svid in satinfo.rtcm_bits.error_history: errset[svid] = satinfo.rtcm_bits.error_history[svid][-1] save_satlog(rxm_raw.iTOW, errset) print(satinfo.receiver_position) return pos
def position_estimate(messages, satinfo): '''process raw messages to calculate position ''' # get get position the receiver calculated. We use this to check the calculations pos = positionEstimate.positionEstimate(satinfo) if pos is None: # not enough information for a fix return if opts.plot: plotter.plotPosition(pos, 0) plotter.plotPosition(satinfo.average_position, 1) import RTCMv2 rtcm = RTCMv2.generateRTCM2_Message1(satinfo) rtcmfile.write(rtcm) rtcm = RTCMv2.generateRTCM2_Message3(satinfo) if len(rtcm) > 0: rtcmfile.write(rtcm) if 'NAV_POSECEF' in messages: posecef = messages['NAV_POSECEF'] ourpos = util.PosVector(posecef.ecefX*0.01, posecef.ecefY*0.01, posecef.ecefZ*0.01) posdiff = pos.distance(ourpos) print("posdiff=%f pos=%s avg=%s %s" % (posdiff, pos.ToLLH(), satinfo.average_position.ToLLH(), time.ctime(satinfo.raw.gps_time))) else: print("pos=%s" % (pos.ToLLH())) return pos
def position_estimate(messages, satinfo): '''process raw messages to calculate position ''' rxm_raw = messages['RXM_RAW'] pos = positionEstimate.positionEstimate(satinfo) if pos is None: # not enough information for a fix return rtcm = RTCMv2.generateRTCM2_Message1(satinfo) if len(rtcm) != 0: print("generated type 1") rtcmfile.write(rtcm) if not opts.nortcm: dev2.write(rtcm) rtcm = RTCMv2.generateRTCM2_Message3(satinfo) if len(rtcm) != 0: print("generated type 3") rtcmfile.write(rtcm) if not opts.nortcm: dev2.write(rtcm) return pos