cras package¶
Submodules¶
cras.ctypes_utils module¶
Utilities for working with the ctypes library.
-
class
cras.ctypes_utils.
Allocator
¶ Bases:
object
An allocator that can be passed as a callback to a C function that should return dynamically allocated data.
This way, Python can still manage the lifetime of the buffer, and it is not needed to know the size of the buffer prior to calling the C function.
Variables: - allocated (List[c_void_p]) – The allocated buffers.
- allocated_sizes (List[int]) – Sizes of the allocated buffer in bytes.
-
ALLOCATOR
¶ alias of
ctypes.CFunctionType
-
get_cfunc
()¶ Get the ctypes object referring to this allocator.
Returns: The ctypes-compatible allocator object (that should be passed as function argument). Return type: Allocator.ALLOCATOR
-
value
¶ Get the first allocated value converted to a Python object.
Returns: The allocated value.
-
values
¶ Get the allocated values converted to Python objects.
Returns: The allocated values.
-
class
cras.ctypes_utils.
BytesAllocator
¶ Bases:
cras.ctypes_utils.Allocator
ctypes allocator suitable for allocating byte arrays. The returned value is a bytes object.
-
value
¶
-
values
¶
-
-
class
cras.ctypes_utils.
LogMessagesAllocator
¶ Bases:
cras.ctypes_utils.RosMessagesAllocator
ctypes allocator suitable for allocating byte buffers for serialized rosgraph_msgs/Log messages and printing them via standard rospy logging mechanisms.
-
format_log_message
(msg)¶ Convert the log message to a string to be logged.
Parameters: msg ( rosgraph_msgs/Log
) – The log message.Returns: The text to be logged. Return type: str
-
get_formatted_log_messages
()¶ Get all messages allocated by this allocator converted to strings to be printed.
Returns: Tuples of (loglevel, message string). Return type: collections.Iterable[Tuple[int, str]]
-
print_log_messages
()¶ Print all messages allocated by this allocator using the standard rospy logger.
-
-
cras.ctypes_utils.
RTLD_LAZY
= 1¶ Relocate dynamic symbols only when they are used.
-
cras.ctypes_utils.
RTLD_NOW
= 2¶ Relocate dynamic symbols as soon as the library is loaded.
-
class
cras.ctypes_utils.
RosMessagesAllocator
(msg_type)¶ Bases:
cras.ctypes_utils.BytesAllocator
ctypes allocator suitable for allocating byte buffers for serialized ROS messages.
Create the message allocator.
Parameters: msg_type (Type) – Type of the messages. -
message
¶ Return the first ROS message allocated by this allocator.
Returns: The log message. Return type: genpy.Message
-
messages
¶ Return the ROS messages allocated by this allocator.
Returns: The log messages. Return type: collections.Iterable[genpy.Message]
-
-
class
cras.ctypes_utils.
ScalarAllocator
(c_type)¶ Bases:
cras.ctypes_utils.Allocator
ctypes allocator suitable for allocating scalar values (e.g. numbers). The returned value is a scalar value.
This means the size of each allocation needs to exactly match the number of bytes the given c_type has. If other sizes are requested,
RuntimeError
is thrown.-
value
¶
-
values
¶
-
-
class
cras.ctypes_utils.
StringAllocator
¶ Bases:
cras.ctypes_utils.Allocator
ctypes allocator suitable for allocating strings. The returned value is of str type.
-
value
¶
-
values
¶
-
-
cras.ctypes_utils.
c_array
(data, c_type)¶ Convert the given Python iterable to a C array with zero element after the last one.
Parameters: - data (list) – The data to convert.
- c_type (type) – The ctypes type of the individual elements.
Returns: The ctypes array (it is one element longer than the input).
-
cras.ctypes_utils.
get_ro_c_buffer
(buf, buf_len=None)¶ Return a read-only ctypes byte buffer object that points to the given buffer’s memory or its copy.
Parameters: - buf ([list|tuple|BufferStringIO|bytes]) – The source buffer.
- buf_len (int) – Length of the buffer (if None, len(buf) is used if it exists, or stream length).
Returns: The ctypes c_uint8 array.
-
cras.ctypes_utils.
load_library
(library_name, mode=1)¶ Load a C library (.so file) located on LD_LIBRARY_PATH.
All dependencies of this library have to be loaded before this one with
mode
=ctypes.RTLD_GLOBAL
.Parameters: Returns: A handle to the loaded library.
Return type: CDLL
cras.geometry_utils module¶
Geometry utilities.
Conversions quaternion<->roll/pitch/yaw are consistent with those in cras_cpp_common tf2_utils.
-
cras.geometry_utils.
quat_get_pitch
(quaternion, *args)¶ Get the given quaternion’s pitch in radians.
Parameters: Returns: Pitch in radians.
Return type: Raises: ValueError – If invalid number of arguments is passed or they have invalid number of elements.
-
cras.geometry_utils.
quat_get_roll
(quaternion, *args)¶ Get the given quaternion’s roll in radians.
Parameters: Returns: Roll in radians.
Return type: Raises: ValueError – If invalid number of arguments is passed or they have invalid number of elements.
-
cras.geometry_utils.
quat_get_rpy
(quaternion, *args)¶ Convert the given quaternion to roll, pitch and yaw.
Parameters: Returns: Tuple (roll, pitch, yaw) in radians.
Return type: Tuple[float]
Raises: ValueError – If invalid number of arguments is passed or they have invalid number of elements.
-
cras.geometry_utils.
quat_get_yaw
(quaternion, *args)¶ Get the given quaternion’s yaw in radians.
Parameters: Returns: Yaw in radians.
Return type: Raises: ValueError – If invalid number of arguments is passed or they have invalid number of elements.
-
cras.geometry_utils.
quat_msg_from_rpy
(roll, pitch=None, yaw=None)¶ Convert the given roll, pitch and yaw to
geometry_msgs/Quaternion
.Parameters: Returns: The corresponding quaternion.
Return type: Quaternion
-
cras.geometry_utils.
quat_tuple_from_rpy
(roll, pitch=None, yaw=None)¶ Convert the given roll, pitch and yaw to quaternion represented as 4-tuple of floats (w last).
Parameters: Returns: The corresponding quaternion.
Return type: Tuple[float]
Raises: ValueError – If invalid number of arguments is passed or they have invalid number of elements.
cras.log_utils module¶
Utilities for working with rospy logging.
-
cras.log_utils.
log
(level, *args, **kwargs)¶ Log a ROS message with a logger that has the given severity level.
Parameters: - level (int) – Severity of the message (one of
rosgraph_msgs/Log
constants). - args – Args are passed directly to
rospy.loginfo()
or the other functions. - kwargs – Keyword args are passed directly to
rospy.loginfo()
or the other functions.
Raises: KeyError – if level is not one of the
rosgraph_msgs/Log
constants.- level (int) – Severity of the message (one of
-
cras.log_utils.
log_functions
= {1: <function logdebug at 0x7ffaa47b19d0>, 2: <function loginfo at 0x7ffaa47b1a50>, 4: <function logwarn at 0x7ffaa47b1ad0>, 8: <function logerr at 0x7ffaa47b1b50>, 16: <function logfatal at 0x7ffaa47b1bd0>}¶ The rospy logging functions accessible by their ROS logging level index.
-
cras.log_utils.
log_level_names
= {1: 'DEBUG', 2: 'INFO', 4: 'WARN', 8: 'ERROR', 16: 'FATAL'}¶ Stringified names of the ROS logging levels.
-
cras.log_utils.
log_level_py_name_to_ros
= {'CRITICAL': 16, 'DEBUG': 1, 'ERROR': 8, 'INFO': 2, 'WARNING': 4}¶ Convert python logging module level string to ROS log level int.
-
cras.log_utils.
log_level_py_to_ros
= {10: 1, 20: 2, 30: 4, 40: 8, 50: 16}¶ Convert python logging module level int to ROS log level int.
-
cras.log_utils.
log_level_ros_to_py
= {1: 10, 2: 20, 4: 30, 8: 40, 16: 50}¶ Convert ROS log level int to python logging module level int.
-
cras.log_utils.
log_level_ros_to_py_name
= {1: 'DEBUG', 2: 'INFO', 4: 'WARNING', 8: 'ERROR', 16: 'CRITICAL'}¶ Convert ROS log level int to python logging module level string.
-
cras.log_utils.
log_levels
= set([8, 1, 2, 4, 16])¶ All available log levels.
-
cras.log_utils.
log_once
(level, message, *args, **kwargs)¶ Log a ROS message with a once-only logger that has the given severity level.
Parameters: - level (int) – Severity of the message (one of
rosgraph_msgs/Log
constants). - message (str) – The logged message template (same rules as in the logging module apply to args/kwargs).
- args – Args are passed directly to
rospy.loginfo_once()
or the other functions. - kwargs – Keyword args are passed directly to
rospy.loginfo_once()
or the other functions.
Raises: KeyError – if level is not one of the
rosgraph_msgs/Log
constants.- level (int) – Severity of the message (one of
-
cras.log_utils.
log_once_functions
= {1: <function logdebug_once at 0x7ffaa47b32d0>, 2: <function loginfo_once at 0x7ffaa47b33d0>, 4: <function logwarn_once at 0x7ffaa47b3450>, 8: <function logerr_once at 0x7ffaa47b34d0>, 16: <function logfatal_once at 0x7ffaa47b3550>}¶ The rospy once-only logging functions accessible by their ROS logging level index.
-
cras.log_utils.
log_throttle
(level, period, message, *args, **kwargs)¶ Log a ROS message with a identical-throttled logger that has the given severity level.
Parameters: - level (int) – Severity of the message (one of
rosgraph_msgs/Log
constants). - period (float) – Logging period (in seconds).
- message (str) – The logged message template (same rules as in the logging module apply to args/kwargs).
- args – Args are passed directly to
rospy.loginfo_throttle()
or the other functions. - kwargs – Keyword args are passed directly to
rospy.loginfo_throttle()
or the other functions.
Raises: KeyError – if level is not one of the
rosgraph_msgs/Log
constants.- level (int) – Severity of the message (one of
-
cras.log_utils.
log_throttle_functions
= {1: <function logdebug_throttle at 0x7ffaa47b1c50>, 2: <function loginfo_throttle at 0x7ffaa47b1d50>, 4: <function logwarn_throttle at 0x7ffaa47b1dd0>, 8: <function logerr_throttle at 0x7ffaa47b1e50>, 16: <function logfatal_throttle at 0x7ffaa47b1ed0>}¶ The rospy throttled logging functions accessible by their ROS logging level index.
-
cras.log_utils.
log_throttle_identical
(level, period, message, *args, **kwargs)¶ Log a ROS message with a identical-throttled logger that has the given severity level.
Parameters: - level (int) – Severity of the message (one of
rosgraph_msgs/Log
constants). - period (float) – Logging period (in seconds).
- message (str) – The logged message template (same rules as in the logging module apply to args/kwargs).
- args – Args are passed directly to
rospy.loginfo_throttle_identical()
or the other functions. - kwargs – Keyword args are passed directly to
rospy.loginfo_throttle_identical()
or other functions.
Raises: KeyError – if level is not one of the
rosgraph_msgs/Log
constants.- level (int) – Severity of the message (one of
-
cras.log_utils.
log_throttle_identical_functions
= {1: <function logdebug_throttle_identical at 0x7ffaa47b1f50>, 2: <function loginfo_throttle_identical at 0x7ffaa47b30d0>, 4: <function logwarn_throttle_identical at 0x7ffaa47b3150>, 8: <function logerr_throttle_identical at 0x7ffaa47b31d0>, 16: <function logfatal_throttle_identical at 0x7ffaa47b3250>}¶ The rospy identical-throttled logging functions accessible by their ROS logging level index.
cras.message_utils module¶
Utilities helpful when working with ROS messages.
-
cras.message_utils.
dict_to_dynamic_config_msg
(d)¶ Convert configuration dict to
dynamic_reconfigure/Config
.Parameters: d (dict or dynamic_reconfigure/Config
or None) – Configuration dict (or already the message, in which case it is just returned).Returns: The config message. Return type: dynamic_reconfigure/Config
-
cras.message_utils.
get_cfg_module
(cfg_type_str)¶ Load and return a Python module corresponding to the given ROS dynamic reconfigure type.
Parameters: cfg_type_str (str) – Type of the config in textual form (e.g. compressed_image_transport/CompressedPublisher). Returns: The Python module.
-
cras.message_utils.
get_msg_field
(msg, field, sep='/')¶ Parse a data field from a ROS message using a textual field address description.
An example could be calling get_msg_field(odom, ‘pose/pose/position/x’) on an Odometry message.
Parameters: - msg (genpy.Message) – Message.
- field (str) – The field address, levels separated with sep or using array access [].
- sep (str) – Separator used in the field address. Usually / or ..
Returns: Value found in the given field in the message.
Return type: Any
-
cras.message_utils.
get_msg_type
(msg_type_str)¶ Load and return a Python type corresponding to the given ROS message type.
Parameters: msg_type_str (str) – Type of the message in textual form (e.g. sensor_msgs/Imu). Returns: The Python type object. Return type: Type
-
cras.message_utils.
get_srv_types
(srv_type_str)¶ Load and return a Python types corresponding to the given ROS service type.
Parameters: srv_type_str (str) – Type of the service in textual form (e.g. std_srvs/SetBool). Returns: A tuple of the main service Python type, the request type and the response type. Return type: tuple
cras.node_utils module¶
Utilities helpful when writing nodes.
-
class
cras.node_utils.
Node
¶ Bases:
object
Base class for all nodes.
This class reads the following ROS parameters:
- /jump_back_tolerance (float, default 3.0 in wall time and 0.0 in sim time):
- Threshold for ROS time jump back detection.
- ~jump_back_tolerance (float, default from /jump_back_tolerance): Threshold for ROS time jump back detection.
- ~reset_on_time_jump_back (bool, default True): Whether to call
reset()
when ROS time jumps back. - /jump_forward_tolerance (float, default 10.0 in sim time and max duration in wall time):
- Threshold for ROS time jump forward detection.
- ~jump_forward_tolerance (float, default from /jump_forward_tolerance):
- Threshold for ROS time jump forward detection.
- ~reset_on_time_jump_forward (bool, default True in sim time and False in wall time):
- Whether to call
reset()
when ROS time jumps forward.
This class subscribes the following topics: - /reset (any type): When a message is received on this topic, the node is reset. - ~reset (any type): When a message is received on this topic, the node is reset.
Variables: - _jump_back_tolerance (rospy.Duration) – Threshold for ROS time jump back detection.
- _jump_forward_tolerance (rospy.Duration) – Threshold for ROS time jump forward detection.
- _last_time_stamp (rospy.Time) – Last recorded time stamp. Used for time jump back detection.
- _reset_on_time_jump_back (bool) – Whether to call
reset()
when ROS time jumps back. - _reset_on_time_jump_forward (bool) – Whether to call
reset()
when ROS time jumps forward. - _reset_sub (rospy.Subscriber) – Subscriber of the /reset topic.
- _reset_priv_sub (rospy.Subscriber) – Subscriber of the ~reset topic.
-
check_time_jump
(now=None)¶ Check if ROS time has not jumped back. If it did, call
reset()
.Note: This function should be called periodically. Call func:`start_auto_check_time_jump to spin a thread that will do these periodic calls automatically. Or you can call this function from your callbacks. Parameters: now (rospy.Time|None) – The timestamp that should be interpreted as current time (if None, rospy.Time.now() is used).
-
reset
()¶ Reset state of the class to the state where it was just after initialization.
Note: Do not forget to call super().reset() in subclasses!
-
start_auto_check_time_jump
(hz=1.0)¶ Periodically check for time jumps (the checking period is in wall/steady time).
Parameters: hz (float) – The rate at which the checking should be done.
-
stop_auto_check_time_jump
()¶ Stop periodic checking for time jumps.
cras.param_utils module¶
Utilities for working with ROS parameters.
Package cras.impl contains some predefined advanced parameter parsers. Other advanced parsers can be registered using
register_param_conversion()
.
The predefined conversions can parse:
rospy.Duration
from a float or from dict {‘sec’, ‘nsec’}rospy.Time
from a float or from dict {‘sec’, ‘nsec’}geometry_msgs/Vector3
from a 3-tuple or from dict {‘x’, ‘y’, ‘z’}geometry_msgs/Point
from a 3-tuple or from dict {‘x’, ‘y’, ‘z’}geometry_msgs/Point32
from a 3-tuple or from dict {‘x’, ‘y’, ‘z’}geometry_msgs/Pose2D
from a 3-tuple or from dict {‘x’, ‘y’, ‘theta’}geometry_msgs/Quaternion
from a 4-tuple (w last!) or from dict {‘x’, ‘y’, ‘z’, ‘w’}, or from- {‘r’, ‘p’, ‘y’} or from {‘roll’, ‘pitch’, ‘yaw’}. Any missing dict key will be replaced by 0. Beware that if you specify only ‘y’ key, it is ambiguous. The quaternion is not explicitly normalized (when specified with 4 elements).
geometry_msgs/Pose
from a 6-tuple (xyzrpy), 7-tuple (xyzxyzw), 16-tuple (row-major homogeneous transform- matrix) or from dict {‘position’, ‘orientation’}, where ‘position’ is parsed as Point and ‘orientation’ as Quaternion (by any of their supported specifications).
-
exception
cras.param_utils.
GetParamException
(info)¶ Bases:
exceptions.RuntimeError
Exception thrown when conversion of a parameter fails during
get_param()
if option throw_if_convert_fails is True or when a missing parameter is required.Variables: info (GetParamResultInfo) – Details about get_param()
execution until the failure.
-
class
cras.param_utils.
GetParamResult
(value=None, info=None)¶ Wrapper for the result of a
get_param_verbose()
call. It contains the parameter value and additional information.Variables: - value (Any) – The returned value.
- info (GetParamResultInfo) – Additional details about the
get_param_verbose()
call progress.
-
class
cras.param_utils.
GetParamResultInfo
(default_used=False, convert_failed=False, required_missing=False, message='', message_level=2)¶ Detailed information about the executed
get_param_verbose()
call.Variables: - default_used (bool) – Whether the default value has been used.
- convert_failed (bool) – Whether a value conversion failed.
- required_missing (bool) – Whether a required parameter was found missing or could not be read.
- message (str) – The log message (returned even if option print_messages is False).
- message_level (uint) – Severity of the log message (one of
rosgraph_msgs/Log
constants).
-
cras.param_utils.
get_param
(param_name, default_value=None, unit='', print_default_as_warn=False, print_messages=True, throw_if_convert_fails=False, result_type=None)¶ Load a ROS parameter from param server, logging what we found to console.
Parameters: - param_name (str) – Name of the parameter.
- default_value (Any) – Default value to be used it the parameter is not set. In None, the parameter is required.
- unit (str) – Optional string serving as a [physical/SI] unit of the parameter, just to make the messages
more informative. If empty, a default is looked up which can be registered using
register_default_unit()
. - print_default_as_warn (bool) – Whether defaulted parameters are reported as warning or info level messages.
- print_messages (bool) – Whether to print error messages to log.
- throw_if_convert_fails (bool) – Throw
GetParamException
if any conversion fails. If False, the default value is used instead of a value that failed to convert. In such case, the log message is of error level. - result_type (Any) – Desired type of the result. If None, the same type as default_value is used. If default_value is also None, no type conversion is done.
Returns: The parameter value.
Return type: Any
Raises: GetParamException – If the parameter is required and not set on param server, or if type conversion fails.
-
cras.param_utils.
get_param_verbose
(param_name, default_value=None, unit='', print_default_as_warn=False, print_messages=True, throw_if_convert_fails=False, result_type=None)¶ Load a ROS parameter from param server, possibly logging what we found to console.
Parameters: - param_name (str) – Name of the parameter.
- default_value (Any) – Default value to be used it the parameter is not set. In None, the parameter is required.
- unit (str) – Optional string serving as a [physical/SI] unit of the parameter, just to make the messages
more informative. If empty, a default is looked up which can be registered using
register_default_unit()
. - print_default_as_warn (bool) – Whether defaulted parameters are reported as warning or info level messages.
- print_messages (bool) – Whether to print error messages to log.
- throw_if_convert_fails (bool) – Throw
GetParamException
if any conversion fails. If False, the default value is used instead of a value that failed to convert. In such case, the log message is of error level. - result_type (Any) – Desired type of the result. If None, the same type as default_value is used. If default_value is also None, no type conversion is done.
Returns: The parameter value wrapped in
GetParamResult
struct with additional details.Return type: Raises: GetParamException – If the parameter is required and not set on param server, or if type conversion fails.
-
cras.param_utils.
register_default_unit
(result_type, unit)¶ Register a default unit used when printing log messages.
Parameters: - result_type (Type) – Type of the parameter.
- unit (str) – Unit to use for the given parameter type if none other is specified.
-
cras.param_utils.
register_enum_conversion
(enum_type)¶ Register a function converting ROS parameters of type str to the given enum (by taking names of the enum values and reading them from the string).
Parameters: enum_type (Type) – Type of the enum.
-
cras.param_utils.
register_param_conversion
(result_type, param_type, convert_fn)¶ Register a function converting ROS parameters of type param_type to result_type.
Parameters: - result_type (Type) – Type of the result value.
- param_type (Type) – Type of the parameter value read from ROS parameter server.
- convert_fn (Callable[[param_type],result_type]) – Function converting the ROS parameter to the result type. It
should raise
ValueError
if the value is not suitable.
cras.static_transform_broadcaster module¶
-
class
cras.static_transform_broadcaster.
StaticTransformBroadcaster
¶ Bases:
tf2_ros.static_transform_broadcaster.StaticTransformBroadcaster
StaticTransformBroadcaster
Allows broadcasting more than one static TF (accumulates all that have been sent to this class and publishes the aggregate message).-
pub_tf
= <rospy.topics.Publisher object>¶
-
sendTransform
(transform)¶
-
tfs
= {}¶
-
cras.string_utils module¶
Utilities helpful when working with strings in Python and rospy.
-
cras.string_utils.
STRING_TYPE
¶ alias of
__builtin__.basestring
cras.test_utils module¶
Utilities helpful when writing ROS-related unit tests in the unittest framework.
-
class
cras.test_utils.
RosconsoleCapture
(test, expected_level=None, expected_message=None)¶ Bases:
logging.Handler
Helper class for peeking into rosout in a test and checking that the output corresponds to the expected values.
Usage from a test:
class MyTest(unittest.TestCase): def test_foo(self): with RosconsoleCapture(self, Log.INFO, "Test message"): call_foo()
This example tests that call_foo() calls rospy.loginfo(“Test message”). If not, the test is marked as failed.
Parameters: - test (unittest.TestCase) – The test that examines the rosout.
- expected_level (int|Tuple[int]) – Expected log level of the captured message. One of
rosgraph_msgs/Log
constants. Multiple logged messages may be captured by passing a tuple. - expected_message (str|Tuple[str]) – The expected captured message. Multiple logged messages may be captured by passing a tuple.
-
emit
(record)¶
cras.time_utils module¶
Utilities helpful when working with rospy Time, Duration and Rate objects.
Parts of this library are adapted from BSD-licensed https://github.com/ros/ros_comm/blob/noetic-devel/clients/rospy/src/rospy/timer.py Copyright (c) 2010, Willow Garage, Inc.
-
class
cras.time_utils.
CustomRate
(hz, now_fn, sleep_fn)¶ Bases:
rospy.timer.Rate
Rate object that sleeps in a custom time.
Constructor.
Parameters: -
now
()¶ Return the current time.
Returns: Current time. Return type: rospy.Time
-
remaining
()¶
-
sleep
()¶
-
-
cras.time_utils.
DURATION_MAX
= rospy.Duration[2147483647999999999]¶ Maximum value of rospy.Duration that can be read without problems by other ROS client libraries.
-
cras.time_utils.
DURATION_MIN
= rospy.Duration[-2147483648000000000]¶ Minimum value of rospy.Duration that can be read without problems by other ROS client libraries.
-
class
cras.time_utils.
SteadyRate
(hz)¶ Bases:
cras.time_utils.CustomRate
Rate object that sleeps in monotonic time, i.e. is not affected by system time jumps.
Constructor.
Parameters: hz (float) – hz rate to determine sleeping
-
class
cras.time_utils.
SteadyTime
(secs=0, nsecs=0)¶ Bases:
rospy.rostime.Time
Time object that always uses monotonic time.
-
static
now
()¶
-
static
-
cras.time_utils.
TIME_MAX
= rospy.Time[4294967295999999999]¶ Maximum value of rospy.Time that can be read without problems by other ROS client libraries.
-
cras.time_utils.
TIME_MIN
= rospy.Time[1]¶ Minimum value of rospy.Time that can be read without problems by other ROS client libraries. Zero is not included.
-
class
cras.time_utils.
Timer
(rate, callback, oneshot=False)¶ Bases:
rospy.timer.Timer
Timer that can use custom implementations of rate.
Make sure to keep a reference to this timer for the whole time you want it working.
Constructor.
Parameters: - rate (CustomRate) – The rate to use for sleeping.
- callback (Callable[[rospy.timer.TimerEvent],None]) – Callback to call when the rate is up.
- oneshot (bool) – Whether the timer should only fire once and stop.
-
run
()¶
-
class
cras.time_utils.
WallRate
(hz)¶ Bases:
cras.time_utils.CustomRate
Rate object that sleeps in wall time.
Note: This is almost never a good idea as the timer is affected by system time jumps. Consider using SteadyRate
instead.Constructor.
Parameters: hz (float) – hz rate to determine sleeping
-
class
cras.time_utils.
WallTime
(secs=0, nsecs=0)¶ Bases:
rospy.rostime.Time
Time object that always uses wall time.
-
static
now
()¶
-
static
-
cras.time_utils.
frequency
(rate, max_cycle_time_means_zero=False)¶ Return the frequency represented by the given rate.
Parameters: - rate (Rate) – The rate to convert.
- max_cycle_time_means_zero – If True, return 0 frequency in case the rate’s cycle time is the maximum duration.
Returns: The frequency.
Return type:
-
cras.time_utils.
rate_equals
(rate1, rate2)¶ Compare two rates for equality.
Parameters: - rate1 (Rate) – Rate.
- rate2 (Rate) – Rate.
Returns: Whether the durations of the rates are equal.
Return type:
-
cras.time_utils.
safe_rate
(freq)¶ Return a rate representing the given frequency. If the frequency is zero or too small, return min/max representable rate.
Parameters: freq (float) – The frequency to convert. Returns: The corresponding Rate object. Return type: Rate
-
cras.time_utils.
slowest_negative_rate
()¶ Slowest representable negative rate.
Returns: Slowest representable negative rate. Return type: Rate
-
cras.time_utils.
slowest_rate
()¶ Slowest representable rate.
Returns: Slowest representable rate. Return type: Rate
-
cras.time_utils.
wallsleep
(duration)¶ Sleep for the given duration in wall clock.
Note: The duration of the sleep is not affected by system time jumps (as if sleeping in monotonic clock). Parameters: duration (Duration|float) – The duration to sleep for.
cras.topic_utils module¶
Utilities helpful when subscribing or publishing topics.
-
class
cras.topic_utils.
GenericMessageSubscriber
(topic_name, callback, *args, **kwargs)¶ Bases:
object
Drop-in replacement for rospy.Subscriber that subscribes to any type message, automatically deserializes it and calls the callback with the deserialized message instance.
Create the subscriber.
Parameters:
Module contents¶
Utilities for more convenient usage of rospy.