utexas-bwi / bwi_lab

Scripts and other programs for administering the BWI system network
BSD 3-Clause "New" or "Revised" License
0 stars 2 forks source link

distance_traveled: crashes when a bag lacks sufficient data #9

Closed jack-oquin closed 7 years ago

jack-oquin commented 7 years ago

Traceback:

  time: 0:00:00  distance: 0.00  filename: bwi_2016-12-01-16-51-43.bag
Traceback (most recent call last):
  File "/usr/local/lib/bwi_local/distance_traveled", line 26, in <module>
    t, d, f = distance_traveled(filename)
  File "/usr/local/lib/python2.7/dist-packages/bwi_local/bagfile.py", line 71, in distance_traveled
    for topic, msg, t in bag.read_messages(topics=['odom_1hz']):
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 2331, in read_messages
    yield self.seek_and_read_message_data_record((entry.chunk_pos, entry.offset), raw)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 2436, in seek_and_read_message_data_record
    self.decompressed_chunk = bz2.decompress(compressed_chunk)
IOError: invalid data stream

It looks like the file only had one odom_1hz message. The script needs at least two.

Empty bags also throw an exception:

Traceback (most recent call last):
  File "/usr/local/lib/bwi_local/distance_traveled", line 26, in <module>
    t, d, f = distance_traveled(filename)
  File "/usr/local/lib/python2.7/dist-packages/bwi_local/bagfile.py", line 61, in distance_traveled
    bag = rosbag.Bag(filename)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 173, in __init__
    self._open(f, mode, allow_unindexed)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 1096, in _open
    if   mode == 'r': self._open_read(f, allow_unindexed)
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 1124, in _open_read
    self._version = self._read_version()
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 1234, in _read_version
    raise ROSBagException('empty file')
rosbag.bag.ROSBagException: empty file