Python 读取bag包中gps数据

Python 读取bag包中gps数据

查找超过3sGPS数据丢失的时间点

  1. 先查看下bag的topic信息,代码如下:

    #coding:utf-8

    import rosbag

    bag_file = ‘/home/ubuntu/01tools/draw_map/bags/20210129_170428.bag’ #bag包路径

    bag = rosbag.Bag(bag_file, “r”)

    info = bag.get_type_and_topic_info() #读取信息

    print(info)

    输出结果如下:
    在这里插入图片描述

  2. 以topic = /pb/gps_data

    bag_data = bag.read_messages(’/pb/gps_data’) #指定topic,如果不给定topic,则会遍历所有的topic

    for topic, msg, t in bag_data:

    ​ data = msg.pb_serialized

    ​ print(data)
    在这里插入图片描述

    1. 处理数据,并将数据以字符串形式放到list

      k=[]

      for topic, msg, t in bag_data:

      ​ data = msg.pb_serialized

      ​ # print(data)

      ​ result = data.strip("\n")

      ​ k.append([str(y) for y in result.replace(’\n’,’,’).replace(’:’,’,’).split(’,’)])

      print(k) 在这里插入图片描述

    2. 可以看到,k 中数据是一组一组的list,依次取每个list的角标就能拿到数据了,如果要计算,我的方法是把取出的结果放到新的list,然后做数值运算

      d = []

      for item in k:

      ​ d.append(int(item[7])) #将字符串转换为int类型,后边做运算

      print(d)

    3. 计算距上一次接收到数据的时间差,是否有数据中断

      n =len(d)

      for i in range(n-1):

      ​ dis = ((d[i+1])-(d[i]))

      ​ if dis >= 3000000: #计算接收传感器数据是否大于3s

      ​ print(d[i+1],d[i], dis)
      在这里插入图片描述
      很明显,有将近6分钟是没有接收到gps数据的

    4. 完整代码
      在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值