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

Public Member Functions

 __init__ (self, filename, mode="a", *_, **__)
 
 __contains__ (self, key)
 
 __next__ (self)
 
 autodetect (cls, f)
 
 close (self)
 
 closed (self)
 
 filename (self)
 
 get_end_time (self)
 
 get_message_class (self, typename, typehash=None)
 
 get_message_count (self, topic_filters=None)
 
 get_message_definition (self, msg_or_type)
 
 get_message_type_hash (self, msg_or_type)
 
 get_qoses (self, topic, typename)
 
 get_start_time (self)
 
 get_topic_info (self, counts=True, ensure_types=True)
 
 get_type_and_topic_info (self, topic_filters=None)
 
 mode (self)
 
 open (self)
 
 read_messages (self, topics=None, start_time=None, end_time=None, raw=False, **__)
 
 size (self)
 
 topics (self)
 
 write (self, topic, msg, t=None, raw=False, qoses=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)
 
 flush (self)
 
 stop_on_error (self)
 
 stop_on_error (self, flag)
 

Public Attributes

 CREATE_SQL
 

Static Public Attributes

str CREATE_SQL
 ROS2 bag SQLite schema.
 
str SQLITE_MAGIC = b"SQLite format 3\x00"
 SQLite file header magic start bytes.
 
bool STREAMABLE = False
 Whether bag supports reading or writing stream objects, overridden in subclasses.
 
- 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

ROS2 bag reader and writer (SQLite format), providing most of rosbag.Bag interface.

Definition at line 91 of file ros2.py.

Constructor & Destructor Documentation

◆ __init__()

__init__ (   self,
  filename,
  mode = "a",
_,
**  __ 
)
@param   filename  bag file path to open
@param   mode      file will be overwritten if "w"

Definition at line 124 of file ros2.py.

Member Function Documentation

◆ __contains__()

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

Reimplemented from BaseBag.

Definition at line 451 of file ros2.py.

◆ __next__()

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

Reimplemented from BaseBag.

Definition at line 456 of file ros2.py.

◆ autodetect()

autodetect (   cls,
  f 
)
Returns whether file is recognizable as SQLite format.

Definition at line 525 of file ros2.py.

◆ close()

close (   self)
Closes the bag file.

Reimplemented from BaseBag.

Definition at line 408 of file ros2.py.

◆ closed()

closed (   self)
Returns whether file is closed.

Reimplemented from BaseBag.

Definition at line 418 of file ros2.py.

◆ filename()

filename (   self)
Returns bag file path.

Reimplemented from BaseBag.

Definition at line 430 of file ros2.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 174 of file ros2.py.

◆ get_message_class()

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

Reimplemented from BaseBag.

Definition at line 255 of file ros2.py.

◆ get_message_count()

get_message_count (   self,
  topic_filters = None 
)
Returns the number of messages in the bag.

@param   topic_filters  list of topics or a single topic to filter by, if any

Reimplemented from BaseBag.

Definition at line 146 of file ros2.py.

◆ get_message_definition()

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

Returns None if unknown message type for bag.

Reimplemented from BaseBag.

Definition at line 266 of file ros2.py.

◆ get_message_type_hash()

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

Reimplemented from BaseBag.

Definition at line 279 of file ros2.py.

◆ get_qoses()

get_qoses (   self,
  topic,
  typename 
)
Returns topic Quality-of-Service profiles as a list of dicts, or None if not available.

Reimplemented from BaseBag.

Definition at line 241 of file ros2.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 164 of file ros2.py.

◆ get_topic_info()

get_topic_info (   self,
  counts = True,
  ensure_types = True 
)
Returns topic and message type metainfo as {(topic, typename, typehash): count}.

Can skip retrieving message counts, as this requires a full table scan.
Can skip looking up message type classes, as those might be unavailable in ROS2 environment.

@param   counts        whether to return actual message counts instead of None
@param   ensure_types  whether to look up type classes instead of returning typehash as None

Reimplemented from BaseBag.

Definition at line 184 of file ros2.py.

◆ get_type_and_topic_info()

get_type_and_topic_info (   self,
  topic_filters = None 
)
Returns thorough metainfo on topic and message types.

@param   topic_filters  list of topics or a single topic to filter returned topics-dict by,
                        if any
@return                 TypesAndTopicsTuple(msg_types, topics) namedtuple,
                        msg_types as dict of {typename: typehash},
                        topics as a dict of {topic: TopicTuple() namedtuple}.

Reimplemented from BaseBag.

Definition at line 200 of file ros2.py.

◆ mode()

mode (   self)
Returns file open mode.

Reimplemented from BaseBag.

Definition at line 446 of file ros2.py.

◆ open()

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

Reimplemented from BaseBag.

Definition at line 403 of file ros2.py.

◆ read_messages()

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

@param   topics      list of topics or a single topic to filter by, if any
@param   start_time  earliest timestamp of message to return, as ROS time or convertible
                     (int/float/duration/datetime/decimal)
@param   end_time    latest timestamp of message to return, as ROS time or convertible
                     (int/float/duration/datetime/decimal)
@param   raw         if True, then returned messages are tuples of
                     (typename, bytes, typehash, typeclass).
                     If message type unavailable, returns None for hash and class.
@return              BagMessage namedtuples of
                     (topic, message, timestamp as rclpy.time.Time)

Reimplemented from BaseBag.

Definition at line 286 of file ros2.py.

◆ size()

size (   self)
Returns current file size in bytes (including journaling files).

Reimplemented from BaseBag.

Definition at line 436 of file ros2.py.

◆ topics()

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

Reimplemented from BaseBag.

Definition at line 424 of file ros2.py.

◆ write()

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

@param   topic  name of topic
@param   msg    ROS2 message
@param   t      message timestamp if not using wall time, as ROS time or convertible
                (int/float/duration/datetime/decimal)
@param   qoses  topic Quality-of-Service settings, if any, as a list of dicts

Reimplemented from BaseBag.

Definition at line 359 of file ros2.py.

Member Data Documentation

◆ CREATE_SQL [1/2]

str CREATE_SQL
static
Initial value:
= """
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY,
topic_id INTEGER NOT NULL,
timestamp INTEGER NOT NULL,
data BLOB NOT NULL
);
CREATE TABLE IF NOT EXISTS topics (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
serialization_format TEXT NOT NULL,
offered_qos_profiles TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS timestamp_idx ON messages (timestamp ASC);
PRAGMA journal_mode=WAL;
PRAGMA synchronous=NORMAL;
"""

ROS2 bag SQLite schema.

Definition at line 98 of file ros2.py.

◆ CREATE_SQL [2/2]

CREATE_SQL

Definition at line 475 of file ros2.py.

◆ SQLITE_MAGIC

str SQLITE_MAGIC = b"SQLite format 3\x00"
static

SQLite file header magic start bytes.

Definition at line 121 of file ros2.py.

◆ STREAMABLE

bool STREAMABLE = False
static

Whether bag supports reading or writing stream objects, overridden in subclasses.

Definition at line 95 of file ros2.py.


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