grepros 1.3.0
grep for ROS bag files and live topics
Loading...
Searching...
No Matches
ROS1Bag Class Reference
Inheritance diagram for ROS1Bag:
Inheritance graph

Public Member Functions

 __init__ (self, *args, **kwargs)
 
 __contains__ (self, key)
 
 __next__ (self)
 
 close (self)
 
 closed (self)
 
 get_end_time (self)
 
 get_message_class (self, typename, typehash=None)
 
 get_message_definition (self, msg_or_type)
 
 get_message_type_hash (self, msg_or_type)
 
 get_start_time (self)
 
 get_topic_info (self, *_, **__)
 
 open (self)
 
 read_messages (self, topics=None, start_time=None, end_time=None, raw=False, connection_filter=None, **__)
 
 topics (self)
 
 write (self, topic, msg, t=None, raw=False, connection_header=None, **__)
 
- Public Member Functions inherited from BaseBag
 __bool__ (self)
 
 __copy__ (self)
 
 __deepcopy__ (self, memo=None)
 
 __enter__ (self)
 
 __exit__ (self, exc_type, exc_value, traceback)
 
 __getitem__ (self, key)
 
 __iter__ (self)
 
 __len__ (self)
 
 __nonzero__ (self)
 
 __str__ (self)
 
 filename (self)
 
 flush (self)
 
 get_message_count (self, topic_filters=None)
 
 get_qoses (self, topic, typename)
 
 get_type_and_topic_info (self, topic_filters=None)
 
 mode (self)
 
 size (self)
 
 stop_on_error (self)
 
 stop_on_error (self, flag)
 

Static Public Member Functions

 reindex_file (f, progress, *args, **kwargs)
 

Public Attributes

 filename
 
 mode
 

Additional Inherited Members

- Static Public Attributes inherited from BaseBag
 BagMessage = collections.namedtuple("BagMessage", "topic message timestamp")
 Returned from read_messages() as (topic name, ROS message, ROS timestamp object).
 
tuple MODES = ("r", "w", "a")
 Supported opening modes, overridden in subclasses.
 
 next
 
bool STREAMABLE = True
 Whether bag supports reading or writing stream objects, overridden in subclasses.
 
 TopicTuple
 Returned from get_type_and_topic_info() as (typename, message count, connection count, median frequency).
 
 TypesAndTopicsTuple = collections.namedtuple("TypesAndTopicsTuple", ["msg_types", "topics"])
 Returned from get_type_and_topic_info() as ({typename: typehash}, {topic name: TopicTuple}).
 

Detailed Description

ROS1 bag reader and writer.

Extends `rosbag.Bag` with more conveniences, smooths over the rosbag bug of ignoring
topic and time filters in format v1.2, and smooths over the rosbag bug
of yielding messages of wrong type, if message types in different topics
have different packages but identical fields and hashes.

Does **not** smooth over the rosbag bug of writing different types to one topic.

rosbag does allow writing messages of different types to one topic,
just like live ROS topics can have multiple message types published
to one topic. And their serialized bytes will actually be in the bag,
but rosbag will only register the first type for this topic (unless it is
explicitly given another connection header with metadata on the other type).

All messages yielded will be deserialized by rosbag as that first type,
and whether reading will raise an exception or not depends on whether
the other type has enough bytes to be deserialized as that first type.

Definition at line 67 of file ros1.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ (   self,
args,
**  kwargs 
)
@param   f           bag file path, or a stream object
@param   mode        mode to open bag in, defaults to "r" (read mode)
@param   reindex     if true and bag is unindexed, make a copy
                     of the file (unless unindexed format) and reindex original
@param   progress    show progress bar with reindexing status
@param   kwargs      additional keyword arguments for `rosbag.Bag`, like `compression`

Definition at line 99 of file ros1.py.

Member Function Documentation

◆ __contains__()

__contains__ (   self,
  key 
)
Returns whether bag contains given topic.

Reimplemented from BaseBag.

Definition at line 291 of file ros1.py.

◆ __next__()

__next__ (   self)
Retrieves next message from bag as (topic, message, timestamp).

Reimplemented from BaseBag.

Definition at line 296 of file ros1.py.

◆ close()

close (   self)
Closes the bag file.

Reimplemented from BaseBag.

Definition at line 283 of file ros1.py.

◆ closed()

closed (   self)
Returns whether file is closed.

Reimplemented from BaseBag.

Definition at line 310 of file ros1.py.

◆ get_end_time()

get_end_time (   self)
Returns the end time of the bag, as UNIX timestamp, or None if bag empty.

Reimplemented from BaseBag.

Definition at line 182 of file ros1.py.

◆ get_message_class()

get_message_class (   self,
  typename,
  typehash = None 
)
Returns rospy message class for typename, or None if unknown type.

Generates class dynamically if not already generated.

@param   typehash  message type definition hash, if any

Reimplemented from BaseBag.

Definition at line 148 of file ros1.py.

◆ get_message_definition()

get_message_definition (   self,
  msg_or_type 
)
Returns ROS1 message type definition full text from bag, including subtype definitions.

Reimplemented from BaseBag.

Definition at line 140 of file ros1.py.

◆ get_message_type_hash()

get_message_type_hash (   self,
  msg_or_type 
)
Returns ROS1 message type MD5 hash, or None if unknown type.

Reimplemented from BaseBag.

Definition at line 165 of file ros1.py.

◆ get_start_time()

get_start_time (   self)
Returns the start time of the bag, as UNIX timestamp, or None if bag empty.

Reimplemented from BaseBag.

Definition at line 176 of file ros1.py.

◆ get_topic_info()

get_topic_info (   self,
_,
**  __ 
)
Returns topic and message type metainfo as {(topic, typename, typehash): count}.

Reimplemented from BaseBag.

Definition at line 188 of file ros1.py.

◆ open()

open (   self)
Opens the bag file if not already open.

Reimplemented from BaseBag.

Definition at line 277 of file ros1.py.

◆ read_messages()

read_messages (   self,
  topics = None,
  start_time = None,
  end_time = None,
  raw = False,
  connection_filter = None,
**  __ 
)
Yields messages from the bag, optionally filtered by topic, timestamp and connection details.

@param   topics             list of topics or a single topic.
                            If an empty list is given, all topics will be read.
@param   start_time         earliest timestamp of messages to return,
                            as ROS time or convertible (int/float/duration/datetime/decimal)
@param   end_time           latest timestamp of messages to return,
                            as ROS time or convertible (int/float/duration/datetime/decimal)
@param   connection_filter  function to filter connections to include
@param   raw                if true, then returned messages are tuples of
                            (typename, bytes, typehash, typeclass)
                            or (typename, bytes, typehash, position, typeclass),
                            depending on file format
@return                     BagMessage namedtuples of
                            (topic, message, timestamp as rospy.Time)

Reimplemented from BaseBag.

Definition at line 193 of file ros1.py.

◆ reindex_file()

reindex_file (   f,
  progress,
args,
**  kwargs 
)
static
Reindexes bag, making a backup copy in file directory.

@param   progress  show progress bar for reindexing status

Definition at line 382 of file ros1.py.

◆ topics()

topics (   self)
Returns the list of topics in bag, in alphabetic order.

Reimplemented from BaseBag.

Definition at line 304 of file ros1.py.

◆ write()

write (   self,
  topic,
  msg,
  t = None,
  raw = False,
  connection_header = None,
**  __ 
)
Writes a message to the bag.

Populates connection header if topic already in bag but with a different message type.

@param   topic              name of topic
@param   msg                ROS1 message
@param   t                  message timestamp if not using current wall time,
                            as ROS time or convertible (int/float/duration/datetime/decimal)
@param   raw                if true, `msg` is in raw format,
                            (typename, bytes, typehash, typeclass)
@param   connection_header  custom connection record for topic,
                            as {"topic", "type", "md5sum", "message_definition"}

Reimplemented from BaseBag.

Definition at line 256 of file ros1.py.

Member Data Documentation

◆ filename

filename

Definition at line 280 of file ros1.py.

◆ mode

mode

Definition at line 280 of file ros1.py.


The documentation for this class was generated from the following file: