zoukankan      html  css  js  c++  java
  • 脚本:截取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:])
  • 相关阅读:
    js中两种定时器,setTimeout和setInterval的区别
    简单说 JavaScript实现雪花飘落效果
    CSS 浮动 float 属性
    使用jQuery做简单的图片轮播效果
    DIV+CSS中标签dl dt dd常用的用法
    CSS display的几个常用的属性值,inline , block, inline-block
    Confluence代码块(Code Block)宏
    salt总结
    快速搭建rabbitmq单节点并配置使用
    使用python脚本配置zabbix发送报警邮件
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/10712307.html
Copyright © 2011-2022 走看看