Пример #1
0
def test_LTC(t, fps=30):
    l1 = KBB_util.LTC(t)
    l2 = KBB_util.LTC(t)
    l1.drop_frame_flag = True
    l2.drop_frame_flag = False
    print t
    print l1, l1.frame_number(fps), l1.drop_frame_flag 
    print l2, l2.frame_number(fps), l2.drop_frame_flag 
    print
Пример #2
0
	def __init__(self,msg):
		self.pps,self.header,self.msg_id,self.msg_len,self.itow,self.ftow,self.week,self.gpsfix,self.flags, \
			self.ecefX,self.ecefY,self.ecefZ,self.pAcc,self.ecefVX,self.ecefVY,self.ecefVZ, \
			self.sAcc,self.pdop,self.reserved1,self.numSV,self.reserved2,self.cs = \
			struct.unpack("<IHHHIihBBiiiIiiiIHBBIH", msg[62:126])
		self.calc_cs = KBB_util.calc_checksum_16(msg[68:124])
		self.calculatedLLA = False
Пример #3
0
	def __init__(self,msg):
		self.pps,self.header,self.msg_id,self.msg_len,self.itow,self.ftow,self.week,self.gpsfix,self.flags, \
			self.ecefX,self.ecefY,self.ecefZ,self.pAcc,self.ecefVX,self.ecefVY,self.ecefVZ, \
			self.sAcc,self.pdop,self.reserved1,self.numSV,self.reserved2,self.cs = \
			struct.unpack("<IHHHIihBBiiiIiiiIHBBIH", msg[KBB_V12_MSG_nav_sol.START_BYTE:KBB_V12_MSG_nav_sol.START_BYTE+KBB_V12_MSG_nav_sol.LENGTH])
		self.calc_cs = KBB_util.calc_checksum_16(msg[KBB_V12_MSG_nav_sol.START_BYTE+6:KBB_V12_MSG_nav_sol.START_BYTE+KBB_V12_MSG_nav_sol.LENGTH-2])
		self.calculatedLLA = False
Пример #4
0
	def __init__(self,msg):
		self.header,self.msg_id,self.msg_len,self.itow,self.ftow,self.week,self.gpsfix,self.flags, \
			self.ecefX,self.ecefY,self.ecefZ,self.pAcc,self.ecefVX,self.ecefVY,self.ecefVZ, \
			self.sAcc,self.pdop,self.reserved1,self.numSV,self.reserved2,self.cs = \
			struct.unpack(ubx_nav_sol_t._unpack_str,msg[0:ubx_nav_sol_t._unpack_size])
		self.calc_cs = KBB_util.calc_checksum_16(msg[2:ubx_nav_sol_t._unpack_size-2])
		self.calculatedLLA = False
Пример #5
0
 def __init__(self, msg):
     self.pps,self.header,self.msg_id,self.msg_len,self.itow,self.ftow,self.week,self.gpsfix,self.flags, \
      self.ecefX,self.ecefY,self.ecefZ,self.pAcc,self.ecefVX,self.ecefVY,self.ecefVZ, \
      self.sAcc,self.pdop,self.reserved1,self.numSV,self.reserved2,self.cs = \
      struct.unpack("<IHHHIihBBiiiIiiiIHBBIH", msg[KBB_V12_MSG_nav_sol.START_BYTE:KBB_V12_MSG_nav_sol.START_BYTE+KBB_V12_MSG_nav_sol.LENGTH])
     self.calc_cs = KBB_util.calc_checksum_16(
         msg[KBB_V12_MSG_nav_sol.START_BYTE +
             6:KBB_V12_MSG_nav_sol.START_BYTE + KBB_V12_MSG_nav_sol.LENGTH -
             2])
     self.calculatedLLA = False
Пример #6
0
	def check_header(self):
		# check to see if we are missing packets
		if DBG>3:print self.header.msg_num
		if self.msg_num_prev is None:
			self.msg_num_prev = self.header.msg_num
		else:
			if self.msg_num_prev + 1 != self.header.msg_num:
				if DBG>2:print "Skipped a beat:", self.msg_num_prev, "->", self.header.msg_num, "@", self.msg_count, self.get_err("msg_skipped"), self.header.msg_num-self.msg_num_prev
				self.inc_err("msg_skipped", self.header.msg_num-self.msg_num_prev)
			self.msg_num_prev = self.header.msg_num
		self.msg_count+=1

		# check the checksum
		self.header.calculated_checksum = KBB_util.calc_checksum_8(self.msg[5:])
		if self.header.calculated_checksum != self.header.checksum:
			self.valid_packet = False
			self.inc_err("checksum mismatch",1)
		else:
			self.valid_packet = True
Пример #7
0
def animateCam(kb_node,
               kbb_file,
               frame_rate=30,
               start_from=None,
               total_frames=None):
    if frame_rate == 24:
        mc.currentUnit(time="film")
    elif frame_rate == 25:
        mc.currentUnit(time="pal")
    elif frame_rate == 30:
        mc.currentUnit(time="ntsc")
    else:
        print "Warning, unsupported frame_rate", frame_rate

    if total_frames == -1:
        total_frames = None

    start_ltc = KBB_util.LTC()
    if start_from is not None:
        start_ltc = KBB_util.LTC(start_from)

    print "STARTING FROM:", start_ltc, start_from

    if ROOT_DIR is not None:
        kbb_file = os.path.join(ROOT_DIR, kbb_file)
    try:
        kbb = KBB.KBB_factory(kbb_file)
    except IOError:
        print "ERROR, couldn't open file '%s'" % kbb_file
        return
    print kbb
    ##############kbb.set_index(0)
    first_tc_idx = 0
    while kbb.read_next():
        if kbb.packet.header.msg_class == KBB_types.CLASS_DATA:
            if kbb.packet.ltc_frame.hours != 0 or kbb.packet.ltc_frame.minutes != 0 or kbb.packet.ltc_frame.seconds != 0 or kbb.packet.ltc_frame.frames != 0:
                break
        first_tc_idx += 1
    print "First TC index:", first_tc_idx, kbb.packet.ltc_frame
    skip_item = None
    ypr = []
    skipping = True
    start_frame = kbb.packet.ltc_frame.frame_number(frame_rate)
    frame_count = 0
    first_frame = None
    while kbb.read_next():
        if KBB_util.LTC_LT(kbb.packet.ltc_frame, start_ltc):
            continue

        if first_frame is None:
            first_frame = kbb.packet.ltc_frame.frame_number(frame_rate)
        skipping = False
        #print kbb.header.msg_num, kbb.ltc_frame, frame, frames
        if kbb.packet.ltc_frame.frames != skip_item:
            if frame_count % 100 == 0:
                print kbb.packet.msg_num, kbb.packet.ltc_frame, frame_count
            skip_item = kbb.packet.ltc_frame.frames
            frame = kbb.packet.ltc_frame.frame_number(
                frame_rate) - first_frame + 1
            mc.setKeyframe(kb_node,
                           attribute="tc_h",
                           time=frame,
                           value=kbb.packet.ltc_frame.hours)
            mc.setKeyframe(kb_node,
                           attribute="tc_m",
                           time=frame,
                           value=kbb.packet.ltc_frame.minutes)
            mc.setKeyframe(kb_node,
                           attribute="tc_s",
                           time=frame,
                           value=kbb.packet.ltc_frame.seconds)
            mc.setKeyframe(kb_node,
                           attribute="tc_f",
                           time=frame,
                           value=kbb.packet.ltc_frame.frames)
            mc.setKeyframe(kb_node,
                           attribute="msg_num",
                           time=frame,
                           value=kbb.packet.msg_num)
            for i in range(len(ypr)):
                sub_frame = float(i + 1) / (float(len(ypr))) + (frame - 1)
                #print "\t", kbb.header.msg_num, kbb.ltc_frame, frame, sub_frame
                if is_sane(ypr[i].yaw):
                    mc.setKeyframe(kb_node,
                                   attribute="ry",
                                   time=sub_frame,
                                   value=-ypr[i].yaw)
                if is_sane(ypr[i].pitch):
                    mc.setKeyframe(kb_node,
                                   attribute="rx",
                                   time=sub_frame,
                                   value=ypr[i].pitch)
                if is_sane(ypr[i].roll):
                    mc.setKeyframe(kb_node,
                                   attribute="rz",
                                   time=sub_frame,
                                   value=180.0 - ypr[i].roll)
            ypr = []
            frame_count += 1
            if total_frames is not None:
                if frame_count > total_frames:
                    break
        else:
            ypr.append(kbb.packet.vnav)
    end_frame = kbb.packet.ltc_frame.frame_number(frame_rate)

    # get rid of the full-path using mc.ls()
    mc.filterCurve("%s_rotateY" % mc.ls(kb_node)[0])
    mc.filterCurve("%s_rotateX" % mc.ls(kb_node)[0])
    mc.filterCurve("%s_rotateZ" % mc.ls(kb_node)[0])
    mc.keyTangent("%s_rotateY" % mc.ls(kb_node)[0], outTangentType="linear")
    mc.keyTangent("%s_rotateX" % mc.ls(kb_node)[0], outTangentType="linear")
    mc.keyTangent("%s_rotateZ" % mc.ls(kb_node)[0], outTangentType="linear")

    mc.playbackOptions(minTime=0, maxTime=(end_frame - first_frame + 1))