def test_record_reader(reader_path):
    """
    record reader.
    """
    freader = record.RecordReader(reader_path)
    time.sleep(1)
    print "+" * 80
    print "+++begin to read..."
    count = 1
    for channelname, msg, datatype, timestamp in freader.read_messages():
        print "=" * 80
        print "read [%d] msg" % count
        print "chnanel_name -> %s" % channelname
        print "msgtime -> %d" % timestamp
        print "msgnum -> %d" % freader.get_messagenumber(channelname)
        print "msgtype -> %s" % datatype
        # print "pbdesc -> %s" % freader.get_protodesc(channelname)
        count = count + 1
        print "msg is -> %s" % msg
        print "***after parse(if need),the msg is ->"
        if datatype == MSG_TYPE:
            msg_new = SimpleMessage()
            msg_new.ParseFromString(msg)
            print msg_new
        if datatype == MSG_TYPE_CHATTER:
            msg_new = Chatter()
            msg_new.ParseFromString(msg)
            print msg_new
Exemple #2
0
def test_record_reader(reader_path):
    """
    Record reader.
    """
    freader = record.RecordReader(reader_path)
    time.sleep(1)
    print('+' * 80)
    print('+++ Begin to read +++')
    count = 0
    for channel_name, msg, datatype, timestamp in freader.read_messages():
        count += 1
        print('=' * 80)
        print('read [%d] messages' % count)
        print('channel_name -> %s' % channel_name)
        print('msgtime -> %d' % timestamp)
        print('msgnum -> %d' % freader.get_messagenumber(channel_name))
        print('msgtype -> %s' % datatype)
        print('message is -> %s' % msg)
        print('***After parse(if needed),the message is ->')
        if datatype == MSG_TYPE:
            msg_new = SimpleMessage()
            msg_new.ParseFromString(msg)
            print(msg_new)
        elif datatype == MSG_TYPE_CHATTER:
            msg_new = Chatter()
            msg_new.ParseFromString(msg)
            print(msg_new)
def parse_apollo_record(parse_dict, dest_dict, parser_func):
    """
    """
    record_folder_path = parse_dict["record_folder"]
    parse_type = parse_dict["parse_type"]
    record_files = sorted(os.listdir(parse_dict["record_folder"]))
    parse_timestamp = []
    parse_mod = import_module(parser_func)

    print "=" * 60
    print('--------- Parsing data for: ' + parse_type + ' ---------')

    for rfile in record_files:
        print "=" * 60
        print("parsing record file: %s" % rfile)
        freader = record.RecordReader(record_folder_path + rfile)
        time.sleep(.025)

        for channelname, msg, datatype, timestamp in freader.read_messages():
            if channelname == dest_dict["channel_name"]:
                tstamp = parse_mod.parse_data(channelname, msg,
                                              dest_dict['destination_folder'])
                parse_timestamp.append(tstamp)

        # write radar-timestamp files
        with open(dest_dict["timestamp_file"], 'w+') as f:
            for item in parse_timestamp:
                f.write("%s\n" % item)

    print "=" * 60
    print('DONE: records parsed and data saved to: \n  ' +
          dest_dict['destination_folder'])
    print "=" * 60
def print_channel_info(file_path):
    freader = record.RecordReader(file_path)
    channels = freader.get_channellist()

    header_msg = freader.get_headerstring()
    header = record_pb2.Header()
    header.ParseFromString(header_msg)

    print('\n++++++++++++Begin Channel Info Statistics++++++++++++++')
    print('-' * 40)
    print('record version: [%d:%d]' %
          (header.major_version, header.minor_version))
    print('record message_number: %s' % str(header.message_number))
    print('record file size(Byte): %s' % str(header.size))
    print('chunk_number: %d' % header.chunk_number)
    print('channel count: %d' % len(channels))
    print('-' * 40)
    count = 0
    for channel in channels:
        desc = freader.get_protodesc(channel)
        count += 1
        print('Channel: %s, count: %d, desc size: %d' %
              (channel, count, len(desc)))
        # print desc
    print "++++++++++++Finish Channel Info Statistics++++++++++++++\n"
Exemple #5
0
def print_channel_info(file_path):
    freader = record.RecordReader(file_path)
    channels = freader.get_channellist()

    header_msg = freader.get_headerstring()
    header = record_pb2.Header()
    header.ParseFromString(header_msg)

    print ""
    print "++++++++++++Begin Channel Info Statistics++++++++++++++"
    print "-" * 40
    print "record version: %d.%d" % (header.major_version,
                                     header.minor_version)
    print "record message_number: ", header.message_number
    print "record file size(Byte) ", header.size
    print "chunk_number: ", header.chunk_number
    print "channel counts: ", len(channels)
    print "-" * 40
    counts = 1
    for channel in channels:
        desc = freader.get_protodesc(channel)
        print "[", counts, "]", "channel name: ", channel, "; desc size is ", len(
            desc)
        counts = counts + 1
        # print desc
    print "++++++++++++Finish Channel Info Statistics++++++++++++++"

    print ""
Exemple #6
0
def dump_record(in_record, out_dir, start_time, duration, filter_topic):
    freader = record.RecordReader(in_record)
    time.sleep(1)
    seq = 0
    start_time = start_time * 1e9
    duration = duration * 1e9
    update_start = 0
    for topic, raw_msg, msg_type, t_sec in freader.read_messages():
        if start_time and update_start == 0:
            update_start = 1
            start_time = int(t_sec + start_time)
        print("start_time %s t_sec %s duration %s" %
              (start_time, t_sec, duration))
        if start_time and t_sec < start_time:
            print('time not reach yet')
            continue
        if start_time and t_sec >= start_time + duration:
            print('Done')
            break
        if topic == '/apollo/sensor/mobileye':
            continue
        if not filter_topic or topic == filter_topic:
            message_file = topic.replace("/", "_")
            file_path = os.path.join(out_dir,
                                     str(seq) + message_file + ".pb.txt")
            meta_msg = g_message_manager.get_msg_meta_by_topic(topic)
            msg = meta_msg.msg_type()
            if meta_msg is None:
                print('Unknown topic: %s' % topic)
                continue
            msg.ParseFromString(raw_msg)
            write_to_file(file_path, msg)
            seq += 1
Exemple #7
0
def process_record_file(args):
    """Read record file and extract the message with specified channels"""
    freader = record.RecordReader(args.input_file)
    glog.info('#processing record file {}'.format(args.input_file))
    time.sleep(1)
    output_file = os.path.join(args.output_dir, 'gpsimu.bin')
    with open(output_file, 'wb') as outfile:
        for channel, message, _type, _timestamp in freader.read_messages():
            if channel == args.gps_raw_data_channel:
                raw_data = RawData()
                raw_data.ParseFromString(message)
                outfile.write(raw_data.data)
Exemple #8
0
    def test_record_writer_read(self):
        """
        unit test of record.
        """
        self.assertTrue(cyber.init())

        # writer
        fwriter = record.RecordWriter()
        fwriter.set_size_fileseg(200)
        fwriter.set_intervaltime_fileseg(10)

        self.assertTrue(fwriter.open(TEST_RECORD_FILE))
        fwriter.write_channel(CHAN_1, MSG_TYPE, STR_10B)
        fwriter.write_message(CHAN_1, STR_10B, TIME)

        self.assertEqual(1, fwriter.get_messagenumber(CHAN_1))
        self.assertEqual(MSG_TYPE, fwriter.get_messagetype(CHAN_1))
        self.assertEqual(STR_10B, fwriter.get_protodesc(CHAN_1))
        fwriter.close()

        # reader
        fread = record.RecordReader(TEST_RECORD_FILE)
        channel_list = fread.get_channellist()
        self.assertEqual(1, len(channel_list))
        self.assertEqual(CHAN_1, channel_list[0])
        for channelname, msg, datatype, timestamp in fread.read_messages():
            # print "+++"
            # print channelname
            # print msg, datatype, timestamp
            self.assertEqual(CHAN_1, channelname)
            self.assertEqual(STR_10B, msg)
            self.assertEqual(TIME, timestamp)
            self.assertEqual(1, fread.get_messagenumber(channelname))
            self.assertEqual(MSG_TYPE, datatype)
            self.assertEqual(MSG_TYPE, fread.get_messagetype(channelname))
            # print "pbdesc -> %s" % fread.get_protodesc(channelname)
            msg = record_pb2.Header()
            header_msg = fread.get_headerstring()
            msg.ParseFromString(header_msg)
            self.assertEqual(1, msg.major_version)
            self.assertEqual(0, msg.minor_version)
            self.assertEqual(1, msg.chunk_number)
            self.assertEqual(1, msg.channel_number)
            self.assertTrue(msg.is_complete)

        cyber.shutdown()
Exemple #9
0
def test_record_reader(reader_path):
    """
    record reader.
    """
    freader = record.RecordReader(reader_path)
    time.sleep(1)
    print "+"*80
    print "+++begin to read..."
    count = 1
    for channelname, msg, datatype, timestamp in freader.read_messages():
        print "="*80
        print "read [%d] msg" % count
        print "chnanel_name -> %s" % channelname
        print "msg -> %s" % msg
        print "msgtime -> %d" % timestamp
        print "msgnum -> %d" % freader.get_messagenumber(channelname)
        print "msgtype -> %s" % datatype
        # print "pbdesc -> %s" % freader.get_protodesc(channelname)
        count = count + 1
def extract_record(in_record, output):
    freader = record.RecordReader(in_record)
    print("begin to extract from record {}".format(in_record))
    time.sleep(1)
    seq = 0
    localization_topic = '/apollo/localization/pose'
    meta_msg = g_message_manager.get_msg_meta_by_topic(localization_topic)
    localization_type = meta_msg.msg_type
    for channelname, msg_data, datatype, timestamp in freader.read_messages():
        topic = channelname
        if topic != localization_topic:
            continue
        msg = localization_type()
        msg.ParseFromString(msg_data)
        pose = msg.pose
        output.write("%s %s %s %s %s %s %s %s\n" %
                     (msg.measurement_time, pose.position.x, pose.position.y,
                      pose.position.z, pose.orientation.qx,
                      pose.orientation.qy, pose.orientation.qz,
                      pose.orientation.qw))
    print("Finished extracting from record {}".format(in_record))
Exemple #11
0
    def test_record_writer_read(self):
        """
        unit test of record.
        """
        # writer
        fwriter = record.RecordWriter()
        fwriter.set_size_fileseg(0)
        fwriter.set_intervaltime_fileseg(0)

        self.assertTrue(fwriter.open(TEST_RECORD_FILE))
        fwriter.write_channel(CHAN_1, MSG_TYPE, PROTO_DESC)
        fwriter.write_message(CHAN_1, MSG_DATA, TIME)

        self.assertEqual(1, fwriter.get_messagenumber(CHAN_1))
        self.assertEqual(MSG_TYPE, fwriter.get_messagetype(CHAN_1))
        self.assertEqual(PROTO_DESC, fwriter.get_protodesc(CHAN_1))
        fwriter.close()

        # reader
        fread = record.RecordReader(TEST_RECORD_FILE)
        channel_list = fread.get_channellist()
        self.assertEqual(1, len(channel_list))
        self.assertEqual(CHAN_1, channel_list[0])

        header = record_pb2.Header()
        header.ParseFromString(fread.get_headerstring())
        self.assertEqual(1, header.major_version)
        self.assertEqual(0, header.minor_version)
        self.assertEqual(1, header.chunk_number)
        self.assertEqual(1, header.channel_number)
        self.assertTrue(header.is_complete)

        for channelname, msg, datatype, timestamp in fread.read_messages():
            self.assertEqual(CHAN_1, channelname)
            self.assertEqual(MSG_DATA, msg)
            self.assertEqual(TIME, timestamp)
            self.assertEqual(1, fread.get_messagenumber(channelname))
            self.assertEqual(MSG_TYPE, datatype)
            self.assertEqual(MSG_TYPE, fread.get_messagetype(channelname))
Exemple #12
0
def test_record_trans(reader_path):
    """
    Record trans.
    """
    fwriter = record.RecordWriter()
    if not fwriter.open(TEST_RECORD_FILE):
        print('Failed to open record writer!')
        return
    print('+++ Begin to trans +++')

    fread = record.RecordReader(reader_path)
    count = 0
    for channelname, msg, datatype, timestamp in fread.read_messages():
        # print channelname, timestamp, fread.get_messagenumber(channelname)
        desc = fread.get_protodesc(channelname)
        fwriter.write_channel(channelname, datatype, desc)
        fwriter.write_message(channelname, msg, timestamp)
        count += 1
    print('-' * 80)
    print('Message count: %d' % count)
    print('Channel info: ')
    channel_list = fread.get_channellist()
    print('Channel count: %d' % len(channel_list))
    print(channel_list)
Exemple #13
0
def dump_record(in_record, out_dir, start_time, duration, filter_topic):
    freader = record.RecordReader()
    if not freader.open(in_record):
        print("Failed to open: %s" % in_record)
        return
    time.sleep(1)
    seq = 0
    while not freader.endoffile():
        read_msg_succ = freader.read_message()
        if not read_msg_succ:
            print("Read failed")
            return
        t_sec = freader.currentmessage_time()
        if start_time and t_sec < start_time:
            print "not yet reached the start time"
            continue
        if start_time and t_sec >= start_time + duration:
            print "done"
            break
        topic = freader.currentmessage_channelname()
        msg_type = freader.get_messagetype(topic)
        if topic == "/apollo/sensor/mobileye":
            continue
        if not filter_topic or topic == filter_topic:
            message_file = topic.replace("/", "_")
            file_path = os.path.join(out_dir,
                                     str(seq) + message_file + ".pb.txt")
            meta_msg = g_message_manager.get_msg_meta_by_topic(topic)
            if meta_msg is None:
                print("Unknown topic: %s " % topic)
                continue
            msg = meta_msg.msg_type()
            msg.ParseFromString(freader.current_rawmessage())
            write_to_file(file_path, msg)
        seq += 1
    freader.close()
Exemple #14
0
def test_record_trans(reader_path):
    """
    Record trans.
    """
    fwriter = record.RecordWriter()
    if not fwriter.open(TEST_RECORD_FILE):
        print "writer open failed!"
        return
    print "+++ begin to trans..."

    fread = record.RecordReader(reader_path)
    count = 0
    for channelname, msg, datatype, timestamp in fread.read_messages():
        # print channelname, timestamp, fread.get_messagenumber(channelname)
        desc = fread.get_protodesc(channelname)
        fwriter.write_channel(channelname, datatype, desc)
        fwriter.write_message(channelname, msg, timestamp)
        count = count + 1
    print "-" * 80
    print "message count is ", count
    print "channel info:"
    channel_list = fread.get_channellist()
    print "channel count is ", len(channel_list)
    print channel_list