脚本:截取euroc数据集bag文件的其中一段

Posted feifanrensheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本:截取euroc数据集bag文件的其中一段相关的知识,希望对你有一定的参考价值。

脚本:截取euroc数据集bag文件的其中一段

功能:截取euroc数据集bag中的一段供算法测试

python脚本

#!/usr/bin/env python

# ------------------------------------------------------------------------------
# Function : restamp ros bagfile (using header timestamps)
# Project  : IJRR MAV Datasets
# Author   : www.asl.ethz.ch
# Version  : V01  21JAN2016 Initial version.
# Comment  :
# Status   : under review
#
# Usage    : python restamp_bag.py -i inbag.bag -o outbag.bag
# ------------------------------------------------------------------------------

import roslib
import rosbag
import rospy
import sys
import getopt
from   std_msgs.msg import String
from   std_msgs.msg import Time


def main(argv):

    inputfile = ‘‘
    outputfile = ‘‘

    # parse arguments
    try:
        opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
    except getopt.GetoptError:
        print usage: restamp_bag.py -i <inputfile> -o <outputfile>
        sys.exit(2)
    for opt, arg in opts:
        if opt == -h:
            print usage: python restamp_bag.py -i <inputfile> -o <outputfile>
            sys.exit()
        elif opt in ("-i", "--ifile"):
            inputfile = arg
        elif opt in ("-o", "--ofile"):
            outputfile = arg

    # print console header
    print ""
    print "restamp_bag"
    print ""
    print input file:  , inputfile
    print output file: , outputfile
    print ""
    print "starting restamping (may take a while)"
    print ""

    outbag = rosbag.Bag(outputfile, w)
    messageCounter = 0
    kPrintDotReductionFactor = 1000
    

    try:
        for topic, msg, t in rosbag.Bag(inputfile).read_messages():
            stamp = float(str(msg.header.stamp)) / 1000000000
            print stamp
            if (stamp < 1403636700.827958):
                outbag.write(topic, msg, msg.header.stamp)

            # Write message in output bag with input message header stamp
            #outbag.write(topic, msg, msg.header.stamp)

            #if (messageCounter % kPrintDotReductionFactor) == 0:
                    #print ‘.‘,
            #        sys.stdout.write(‘.‘)
            #        sys.stdout.flush()
            #messageCounter = messageCounter + 1

    # print console footer
    finally:
        print ""
        print ""
        print "finished iterating through input bag"
        print "output bag written"
        print ""
        outbag.close()

if __name__ == "__main__":
   main(sys.argv[1:])

 

以上是关于脚本:截取euroc数据集bag文件的其中一段的主要内容,如果未能解决你的问题,请参考以下文章

用linux命令批量修改文件名,准确来说是截取其中一段作为文件名

OpenCV LK光流法测试

机器学习——随机森林

Bagging原理解析

机器学习系列-Bagging与随机森林

shell脚本的使用---cut截取数据