Classes | Functions | Variables
grepros.api Namespace Reference

Classes

class  Bag
 
class  BaseBag
 
class  TypeMeta
 

Functions

def calculate_definition_hash (typename, msgdef, extradefs=())
 
def canonical (typename, unbounded=False)
 
def create_publisher (topic, cls_or_typename, queue_size)
 
def create_subscriber (topic, cls_or_typename, handler, queue_size)
 
def deserialize_message (msg, cls_or_typename)
 
def dict_to_message (dct, msg)
 
def filter_fields (fieldmap, top=(), include=(), exclude=())
 
def format_message_value (msg, name, value)
 
def get_alias_type (typename)
 
def get_message_class (typename)
 
def get_message_definition (msg_or_type)
 
def get_message_fields (val)
 
def get_message_type (msg_or_cls)
 
def get_message_type_hash (msg_or_type)
 
def get_message_value (msg, name, typename)
 
def get_ros_time_category (msg_or_type)
 
def get_rostime (fallback=False)
 
def get_topic_types ()
 
def get_type_alias (typename)
 
def init_node (name=None)
 
def is_ros_message (val, ignore_time=False)
 
def is_ros_time (val)
 
def iter_message_fields (msg, messages_only=False, flat=False, scalars=(), include=(), exclude=(), top=())
 
def make_bag_time (stamp, bag)
 
def make_duration (secs=0, nsecs=0)
 
def make_full_typename (typename, category="msg")
 
def make_live_time (stamp)
 
def make_message_hash (msg, include=(), exclude=())
 
def make_time (secs=0, nsecs=0)
 
def message_to_dict (msg, replace=None)
 
def parse_definition_fields (typename, typedef)
 
def parse_definition_subtypes (typedef, nesting=False)
 
def scalar (typename)
 
def serialize_message (msg)
 
def set_message_value (obj, name, value)
 
def shutdown_node ()
 
def time_message (val, to_message=True, clock_type=None)
 
def to_datetime (val)
 
def to_decimal (val)
 
def to_duration (val)
 
def to_nsec (val)
 
def to_sec (val)
 
def to_sec_nsec (val)
 
def to_time (val)
 
def validate (live=False)
 

Variables

list __all___
 
tuple BAG_EXTENSIONS = ()
 Bagfile extensions to seek, including leading dot, populated after init. More...
 
string NODE_NAME = "grepros"
 Node base name for connecting to ROS (will be anonymized). More...
 
 realapi = None
 Module grepros.ros1 or grepros.ros2. More...
 
 ROS1 = None
 Flag denoting ROS1 environment, populated on validate() More...
 
 ROS2 = None
 Flag denoting ROS2 environment, populated on validate() More...
 
dictionary ROS_ALIAS_TYPES = {}
 Mapping between type aliases and real types, like {"byte": "int8"} in ROS1. More...
 
dictionary ROS_BUILTIN_CTORS
 Python constructors for ROS built-in types, as {ROS name: type class}. More...
 
list ROS_BUILTIN_TYPES = ROS_NUMERIC_TYPES + ROS_STRING_TYPES
 All built-in basic types in ROS. More...
 
list ROS_COMMON_TYPES = []
 All built-in basic types plus time types in ROS, populated after init. More...
 
 ROS_FAMILY = None
 ROS Python module family, "rospy" or "rclpy", populated on validate() More...
 
list ROS_NUMERIC_TYPES
 All built-in numeric types in ROS. More...
 
list ROS_STRING_TYPES = ["string", "wstring"]
 All built-in string types in ROS. More...
 
dictionary ROS_TIME_CLASSES = {}
 ROS1 time/duration types mapped to type names, populated after init. More...
 
list ROS_TIME_TYPES = []
 ROS time/duration types, populated after init. More...
 
 ROS_VERSION = None
 ROS version from environment, populated on validate() as integer. More...
 
tuple SKIP_EXTENSIONS = ()
 Bagfile extensions to skip, including leading dot, populated after init. More...
 

Function Documentation

◆ calculate_definition_hash()

def grepros.api.calculate_definition_hash (   typename,
  msgdef,
  extradefs = () 
)
Returns MD5 hash for message type definition.

@param   extradefs  additional subtype definitions as ((typename, msgdef), )

Definition at line 623 of file api.py.

◆ canonical()

def grepros.api.canonical (   typename,
  unbounded = False 
)
Returns "pkg/Type" for "pkg/subdir/Type", standardizes various ROS2 formats.

Converts ROS2 DDS types like "octet" to "byte", and "sequence<uint8, 100>" to "uint8[100]".

@param   unbounded  drop constraints like array bounds, and string bounds in ROS2,
                    e.g. returning "uint8[]" for "uint8[10]"

Definition at line 664 of file api.py.

◆ create_publisher()

def grepros.api.create_publisher (   topic,
  cls_or_typename,
  queue_size 
)
Returns a ROS publisher instance, with .get_num_connections() and .unregister().

Definition at line 676 of file api.py.

◆ create_subscriber()

def grepros.api.create_subscriber (   topic,
  cls_or_typename,
  handler,
  queue_size 
)
Returns a ROS subscriber instance.

Supplemented with .unregister(), .get_message_class(), .get_message_definition(),
.get_message_type_hash(), and .get_qoses().

Definition at line 681 of file api.py.

◆ deserialize_message()

def grepros.api.deserialize_message (   msg,
  cls_or_typename 
)
Returns ROS message or service request/response instantiated from serialized binary.

Definition at line 1108 of file api.py.

◆ dict_to_message()

def grepros.api.dict_to_message (   dct,
  msg 
)
Returns given ROS message populated from Python dictionary.

Raises TypeError on attribute value type mismatch.

Definition at line 992 of file api.py.

◆ filter_fields()

def grepros.api.filter_fields (   fieldmap,
  top = (),
  include = (),
  exclude = () 
)
Returns fieldmap filtered by include and exclude patterns.

@param   fieldmap   {field name: field type name}
@param   top        parent path as (rootattr, ..)
@param   include    [((nested, path), re.Pattern())] to require in parent path
@param   exclude    [((nested, path), re.Pattern())] to reject in parent path

Definition at line 691 of file api.py.

◆ format_message_value()

def grepros.api.format_message_value (   msg,
  name,
  value 
)
Returns a message attribute value as string.

Result is at least 10 chars wide if message is a ROS time/duration
(aligning seconds and nanoseconds).

Definition at line 717 of file api.py.

◆ get_alias_type()

def grepros.api.get_alias_type (   typename)
Returns ROS built-in type for alias like "char", if any; reverse of get_alias_type().

In ROS1, byte and char are aliases for int8 and uint8; in ROS2 the reverse.

Definition at line 803 of file api.py.

◆ get_message_class()

def grepros.api.get_message_class (   typename)
Returns ROS message class, or None if unavailable.

Definition at line 727 of file api.py.

◆ get_message_definition()

def grepros.api.get_message_definition (   msg_or_type)
Returns ROS message type definition full text, including subtype definitions.

Returns None if unknown type.

Definition at line 732 of file api.py.

◆ get_message_fields()

def grepros.api.get_message_fields (   val)
Returns OrderedDict({field name: field type name}) if ROS message, else {}.

@param   val  ROS message class or instance

Definition at line 746 of file api.py.

◆ get_message_type()

def grepros.api.get_message_type (   msg_or_cls)
Returns ROS message type name, like "std_msgs/Header".

Definition at line 755 of file api.py.

◆ get_message_type_hash()

def grepros.api.get_message_type_hash (   msg_or_type)
Returns ROS message type MD5 hash, or "" if unknown type.

Definition at line 741 of file api.py.

◆ get_message_value()

def grepros.api.get_message_value (   msg,
  name,
  typename 
)
Returns object attribute value, with numeric arrays converted to lists.

Definition at line 760 of file api.py.

◆ get_ros_time_category()

def grepros.api.get_ros_time_category (   msg_or_type)
Returns "time" or "duration" for time/duration type or instance, else original argument.

Definition at line 774 of file api.py.

◆ get_rostime()

def grepros.api.get_rostime (   fallback = False)
Returns current ROS time, as rospy.Time or rclpy.time.Time.

@param   fallback  use wall time if node not initialized

Definition at line 765 of file api.py.

◆ get_topic_types()

def grepros.api.get_topic_types ( )
Returns currently available ROS topics, as [(topicname, typename)].

Omits topics that the current ROS node itself has published.

Definition at line 785 of file api.py.

◆ get_type_alias()

def grepros.api.get_type_alias (   typename)
Returns alias like "char" for ROS built-in type, if any; reverse of get_type_alias().

In ROS1, byte and char are aliases for int8 and uint8; in ROS2 the reverse.

Definition at line 794 of file api.py.

◆ init_node()

def grepros.api.init_node (   name = None)
Initializes a ROS1 or ROS2 node if not already initialized.

In ROS1, blocks until ROS master available.

Definition at line 571 of file api.py.

◆ is_ros_message()

def grepros.api.is_ros_message (   val,
  ignore_time = False 
)
Returns whether value is a ROS message or special like ROS time/duration class or instance.

@param   ignore_time  whether to ignore ROS time/duration types

Definition at line 812 of file api.py.

◆ is_ros_time()

def grepros.api.is_ros_time (   val)
Returns whether value is a ROS time/duration class or instance.

Definition at line 821 of file api.py.

◆ iter_message_fields()

def grepros.api.iter_message_fields (   msg,
  messages_only = False,
  flat = False,
  scalars = (),
  include = (),
  exclude = (),
  top = () 
)
Yields ((nested, path), value, typename) from ROS message.

@param   messages_only  whether to yield only values that are ROS messages themselves
                        or lists of ROS messages, else will yield scalar and list values
@param   flat           recurse into lists of nested messages, ignored if `messages_only`
@param   scalars        sequence of ROS types to consider as scalars, like ("time", duration")
@param   include        [((nested, path), re.Pattern())] to require in field path, if any
@param   exclude        [((nested, path), re.Pattern())] to reject in field path, if any
@param   top            internal recursion helper

Definition at line 826 of file api.py.

◆ make_bag_time()

def grepros.api.make_bag_time (   stamp,
  bag 
)
Returns value as ROS timestamp, conditionally as relative to bag start/end time.

Stamp is interpreted as relative offset from bag start/end time
if numeric string with sign prefix, or timedelta, or ROS duration.

@param   stamp   converted to ROS timestamp if int/float/str/duration/datetime/timedelta/decimal
@param   bag     an open bag to use for relative start/end time

Definition at line 879 of file api.py.

◆ make_duration()

def grepros.api.make_duration (   secs = 0,
  nsecs = 0 
)
Returns a ROS duration.

Definition at line 928 of file api.py.

◆ make_full_typename()

def grepros.api.make_full_typename (   typename,
  category = "msg" 
)
Returns "pkg/msg/Type" for "pkg/Type".

@param   category  type category like "msg" or "srv"

Definition at line 867 of file api.py.

◆ make_live_time()

def grepros.api.make_live_time (   stamp)
Returns value as ROS timestamp, conditionally as relative to system time.

Stamp is interpreted as relative offset from system time
if numeric string with sign prefix, or timedelta, or ROS duration.

@param   stamp   converted to ROS timestamp if int/float/str/duration/datetime/timedelta/decimal

Definition at line 905 of file api.py.

◆ make_message_hash()

def grepros.api.make_message_hash (   msg,
  include = (),
  exclude = () 
)
Returns hashcode for ROS message, as a hex digest.

@param   include   message fields to include if not all, as [((nested, path), re.Pattern())]
@param   exclude   message fields to exclude, as [((nested, path), re.Pattern())]

Definition at line 938 of file api.py.

◆ make_time()

def grepros.api.make_time (   secs = 0,
  nsecs = 0 
)
Returns a ROS time.

Definition at line 933 of file api.py.

◆ message_to_dict()

def grepros.api.message_to_dict (   msg,
  replace = None 
)
Returns ROS message as nested Python dictionary.

@param   replace  mapping of {value: replaced value},
                  e.g. {math.nan: None, math.inf: None}

Definition at line 967 of file api.py.

◆ parse_definition_fields()

def grepros.api.parse_definition_fields (   typename,
  typedef 
)
Returns field names and type names from a message definition text.

Does not recurse into subtypes.

@param   typename  ROS message type name, like "my_pkg/MyCls"
@param   typedef   ROS message definition, like "Header header\nbool a\nMyCls2 b"
@return            ordered {field name: type name},
                   like {"header": "std_msgs/Header", "a": "bool", "b": "my_pkg/MyCls2"}

Definition at line 1021 of file api.py.

◆ parse_definition_subtypes()

def grepros.api.parse_definition_subtypes (   typedef,
  nesting = False 
)
Returns subtype names and type definitions from a full message definition.

@param   typedef    message type definition including all subtype definitions
@param   nesting    whether to additionally return type nesting information as
                    {typename: [typename contained in parent]}
@return             {"pkg/MsgType": "full definition for MsgType including subtypes"}
                    or ({typedefs}, {nesting}) if nesting

Definition at line 1054 of file api.py.

◆ scalar()

def grepros.api.scalar (   typename)
Returns scalar type from ROS message data type, like "uint8" from uint8-array.

Returns type unchanged if an ordinary type. In ROS2, returns unbounded type,
e.g. "string" from "string<=10[<=5]".

Definition at line 1113 of file api.py.

◆ serialize_message()

def grepros.api.serialize_message (   msg)
Returns ROS message as a serialized binary.

Definition at line 1103 of file api.py.

◆ set_message_value()

def grepros.api.set_message_value (   obj,
  name,
  value 
)
Sets message or object attribute value.

Definition at line 1123 of file api.py.

◆ shutdown_node()

def grepros.api.shutdown_node ( )
Shuts down live ROS node.

Definition at line 580 of file api.py.

◆ time_message()

def grepros.api.time_message (   val,
  to_message = True,
  clock_type = None 
)
Converts ROS2 time/duration between `rclpy` and `builtin_interfaces` objects.

Returns input value as-is in ROS1.

@param   val         ROS2 time/duration object from `rclpy` or `builtin_interfaces`
@param   to_message  whether to convert from `rclpy` to `builtin_interfaces` or vice versa
@param   clock_type  ClockType for converting to `rclpy.Time`, defaults to `ROS_TIME`
@return              value converted to appropriate type, or original value if not convertible

Definition at line 1128 of file api.py.

◆ to_datetime()

def grepros.api.to_datetime (   val)
Returns value as datetime.datetime if value is ROS time/duration, else value.

Definition at line 1143 of file api.py.

◆ to_decimal()

def grepros.api.to_decimal (   val)
Returns value as decimal.Decimal if value is ROS time/duration, else value.

Definition at line 1149 of file api.py.

◆ to_duration()

def grepros.api.to_duration (   val)
Returns value as ROS duration if convertible (int/float/time/datetime/decimal), else value.

Definition at line 1156 of file api.py.

◆ to_nsec()

def grepros.api.to_nsec (   val)
Returns value in nanoseconds if value is ROS time/duration, else value.

Definition at line 1161 of file api.py.

◆ to_sec()

def grepros.api.to_sec (   val)
Returns value in seconds if value is ROS time/duration, else value.

Definition at line 1166 of file api.py.

◆ to_sec_nsec()

def grepros.api.to_sec_nsec (   val)
Returns value as (seconds, nanoseconds) if value is ROS time/duration, else value.

Definition at line 1171 of file api.py.

◆ to_time()

def grepros.api.to_time (   val)
Returns value as ROS time if convertible (int/float/duration/datetime/decimal), else value.

Definition at line 1176 of file api.py.

◆ validate()

def grepros.api.validate (   live = False)
Initializes ROS bindings, returns whether ROS environment set, prints or raises error if not.

@param   live  whether environment must support launching a ROS node

Definition at line 585 of file api.py.

Variable Documentation

◆ __all___

list grepros.api.__all___
private
Initial value:
1 = [
2  "BAG_EXTENSIONS", "NODE_NAME", "ROS_ALIAS_TYPES", "ROS_BUILTIN_CTORS", "ROS_BUILTIN_TYPES",
3  "ROS_COMMON_TYPES", "ROS_FAMILY", "ROS_NUMERIC_TYPES", "ROS_STRING_TYPES", "ROS_TIME_CLASSES",
4  "ROS_TIME_TYPES", "SKIP_EXTENSIONS", "Bag", "BaseBag", "TypeMeta",
5  "calculate_definition_hash", "canonical", "create_publisher", "create_subscriber",
6  "deserialize_message", "dict_to_message", "filter_fields", "format_message_value",
7  "get_alias_type", "get_message_class", "get_message_definition", "get_message_fields",
8  "get_message_type", "get_message_type_hash", "get_message_value", "get_ros_time_category",
9  "get_rostime", "get_topic_types", "get_type_alias", "init_node", "is_ros_message",
10  "is_ros_time", "iter_message_fields", "make_bag_time", "make_duration", "make_live_time",
11  "make_message_hash", "make_time", "message_to_dict", "parse_definition_fields",
12  "parse_definition_subtypes", "scalar", "deserialize_message", "set_message_value",
13  "shutdown_node", "time_message", "to_datetime", "to_decimal", "to_duration", "to_nsec",
14  "to_sec", "to_sec_nsec", "to_time", "validate",
15 ]

Definition at line 1181 of file api.py.

◆ BAG_EXTENSIONS

tuple grepros.api.BAG_EXTENSIONS = ()

Bagfile extensions to seek, including leading dot, populated after init.

Definition at line 36 of file api.py.

◆ NODE_NAME

string grepros.api.NODE_NAME = "grepros"

Node base name for connecting to ROS (will be anonymized).

Definition at line 33 of file api.py.

◆ realapi

grepros.api.realapi = None

Module grepros.ros1 or grepros.ros2.

Definition at line 82 of file api.py.

◆ ROS1

grepros.api.ROS1 = None

Flag denoting ROS1 environment, populated on validate()

Definition at line 42 of file api.py.

◆ ROS2

grepros.api.ROS2 = None

Flag denoting ROS2 environment, populated on validate()

Definition at line 45 of file api.py.

◆ ROS_ALIAS_TYPES

dictionary grepros.api.ROS_ALIAS_TYPES = {}

Mapping between type aliases and real types, like {"byte": "int8"} in ROS1.

Definition at line 79 of file api.py.

◆ ROS_BUILTIN_CTORS

dictionary grepros.api.ROS_BUILTIN_CTORS
Initial value:
1 = {"byte": int, "char": int, "int8": int, "int16": int,
2  "int32": int, "int64": int, "uint8": int, "uint16": int,
3  "uint32": int, "uint64": int, "float32": float, "float64": float,
4  "bool": bool, "string": str, "wstring": str}

Python constructors for ROS built-in types, as {ROS name: type class}.

Definition at line 64 of file api.py.

◆ ROS_BUILTIN_TYPES

list grepros.api.ROS_BUILTIN_TYPES = ROS_NUMERIC_TYPES + ROS_STRING_TYPES

All built-in basic types in ROS.

Definition at line 61 of file api.py.

◆ ROS_COMMON_TYPES

list grepros.api.ROS_COMMON_TYPES = []

All built-in basic types plus time types in ROS, populated after init.

Definition at line 76 of file api.py.

◆ ROS_FAMILY

grepros.api.ROS_FAMILY = None

ROS Python module family, "rospy" or "rclpy", populated on validate()

Definition at line 51 of file api.py.

◆ ROS_NUMERIC_TYPES

list grepros.api.ROS_NUMERIC_TYPES
Initial value:
1 = ["byte", "char", "int8", "int16", "int32", "int64", "uint8",
2  "uint16", "uint32", "uint64", "float32", "float64", "bool"]

All built-in numeric types in ROS.

Definition at line 54 of file api.py.

◆ ROS_STRING_TYPES

list grepros.api.ROS_STRING_TYPES = ["string", "wstring"]

All built-in string types in ROS.

Definition at line 58 of file api.py.

◆ ROS_TIME_CLASSES

dictionary grepros.api.ROS_TIME_CLASSES = {}

ROS1 time/duration types mapped to type names, populated after init.

Definition at line 73 of file api.py.

◆ ROS_TIME_TYPES

list grepros.api.ROS_TIME_TYPES = []

ROS time/duration types, populated after init.

Definition at line 70 of file api.py.

◆ ROS_VERSION

grepros.api.ROS_VERSION = None

ROS version from environment, populated on validate() as integer.

Definition at line 48 of file api.py.

◆ SKIP_EXTENSIONS

tuple grepros.api.SKIP_EXTENSIONS = ()

Bagfile extensions to skip, including leading dot, populated after init.

Definition at line 39 of file api.py.



grepros
Author(s): Erki Suurjaak
autogenerated on Sat Jan 6 2024 03:11:29