def range_handler(self, channel, data): msg = acomms_range_t.decode(data) if msg.type != acomms_range_t.ONE_WAY_SYNCHRONOUS: return self.osps[:] = [o for o in self.osps if o.utime == msg.utime] if not self.osps: return ospid = len(self.osps) - 1 while self.osps: osp = self.osps.pop() org_no, new_no = osp.org_tol_no, osp.new_tol_no if new_no <= self.tol_no or org_no < self.org_no: #print ospid, 'already have this info' pass elif org_no > self.tol_no and self.tol_no != 0: print 'uh oh!' elif org_no == self.org_no or org_no == self.tol_no or self.tol_no == 0: print ospid, 'adding new osp' self.org_no = org_no self.tol_no = new_no self.osp_dict[ospid] += 1 ospid -= 1 del self.osps[:]
import lcm from perls.lcmtypes.senlcm import acomms_data_type_t from perls.lcmtypes.senlcm import acomms_tdma_sync_t from perls.lcmtypes.senlcm import acomms_range_t if __name__ == '__main__': logs = lcm.EventLog(sys.argv[1]) logc = lcm.EventLog(sys.argv[2]) sync = [ acomms_tdma_sync_t.decode(e.data) for e in logs if e.channel == 'IVER31_ACOMMS_SYNC' ] owtts = [ acomms_range_t.decode(e.data) for e in logs if e.channel == 'IVER31_ACOMMS_RANGE' ] owttc = [ acomms_range_t.decode(e.data) for e in logc if e.channel == 'IVER28_ACOMMS_RANGE' ] tos = np.asarray([ o.utime for o in owtts if o.type == acomms_range_t.ONE_WAY_SYNCHRONOUS ]) cms = np.asarray([ o.receiver_clk_mode for o in owtts if o.type == acomms_range_t.ONE_WAY_SYNCHRONOUS ])
import sys import numpy as np import matplotlib.pyplot as plt import lcm from perls.lcmtypes.senlcm import acomms_data_type_t from perls.lcmtypes.senlcm import acomms_tdma_sync_t from perls.lcmtypes.senlcm import acomms_range_t if __name__ == '__main__': logs = lcm.EventLog (sys.argv[1]) logc = lcm.EventLog (sys.argv[2]) sync = [acomms_tdma_sync_t.decode (e.data) for e in logs if e.channel=='IVER31_ACOMMS_SYNC'] owtts = [acomms_range_t.decode (e.data) for e in logs if e.channel=='IVER31_ACOMMS_RANGE'] owttc = [acomms_range_t.decode (e.data) for e in logc if e.channel=='IVER28_ACOMMS_RANGE'] tos = np.asarray ([o.utime for o in owtts if o.type==acomms_range_t.ONE_WAY_SYNCHRONOUS]) cms = np.asarray ([o.receiver_clk_mode for o in owtts if o.type==acomms_range_t.ONE_WAY_SYNCHRONOUS]) toc = np.asarray ([o.utime for o in owttc if o.type==acomms_range_t.ONE_WAY_SYNCHRONOUS]) cmc = np.asarray ([o.receiver_clk_mode for o in owttc if o.type==acomms_range_t.ONE_WAY_SYNCHRONOUS]) ts = np.asarray ([s.utime for s in sync if s.dt.type==acomms_data_type_t.DATA]) to = np.asarray ([o.utime for o in owttc if o.src==3]) plt.figure () plt.plot ((ts-ts[0])*1e-6, np.ones (len (ts)), 'bo') plt.plot ((to-ts[0])*1e-6, np.ones (len (to)), 'r.')
try: log = lcm.EventLog(sys.argv[1]) except Exception as err: print "error opening lcmlog: %s" % err param = param_from_log(log) if not param: print "Could not find param file" sys.exit(0) # data channels vehicle = param.get_str("vehicle.name") gpsd_chan = param.get_str("sensors.gpsd3-client.gsd.channel") range_chan = param.get_str("sensors.modem.range_channel") sync_chan = param.get_str("sensors.modem.sync_channel") if vehicle != "topside": state_chan = param.get_str("vehicle.state_channel") state = plot_state(state_chan, log) acomms_ranges = [acomms_range_t.decode(e.data) for e in log if e.channel == range_chan] nlbl = param.get_num_subkeys("lbl.network") plot_lbl_ranges(nlbl, acomms_ranges) plot_owtt_ranges(acomms_ranges) plt.show() sys.exit(0)