navigation_metrics.flexible_bag module
- class navigation_metrics.flexible_bag.BagMessage(t, msg)
Bases:
tuple- msg
Alias for field number 1
- t
Alias for field number 0
- class navigation_metrics.flexible_bag.FlexibleBag(path, storage_id='sqlite3', serialization_format='cdr', write_mods=True, initial_cache=False)
Bases:
objectA flexible bag container that allows for a variety of data access modes
bag[topic_string] - Results in a list of BagMessage objects for the topic bag[topic1, topic2] - Results in a list of BagMessage tuples, where timestamps are as close as possible
You can also add new data with bag[topic] = list of BagMessages Added data will be stored to disk on exit if write_mods=True
- conversion_functions = {'/actual_acceleration': <function velocity_to_acceleration>, '/actual_jerk': <function acceleration_to_jerk>, '/actual_velocity': <function poses_to_velocity>, '/distance_to_goal': <function pose_to_goal_distance>, '/navigation_result': <function find_endpoint>, '/obstacle_clearance': <function calculate_obstacle_clearance>, '/optimal_path': <function shortest_path_calculation>, '/path': <function tf_to_pose>, '/path2d': <function convert_pose_to_pose2d>, '/trial_goal_pose': <function convert_to_trial>, '/trial_goal_pose_2d': <function convert_goal_pose_to_pose2d>}
- get_single_topic(topic)
Returns a list of BagMessage objects with the given topic
- get_topics_by_type(msg_type_s)
Returns a list of topics whose type matches the string passed in
- read_multiple_topics(topics, allow_reuse=False)
Uses a greedy algorithm to match up messages from multiple topics to their closest neighbors
Does NOT necessarily return all data from the topics.
- read_remaining_topics()
- save(output_path)
Save results to file
- exception navigation_metrics.flexible_bag.MissingTopicException(topic)
Bases:
RuntimeError
- navigation_metrics.flexible_bag.flexible_bag_converter_function(topic)
- navigation_metrics.flexible_bag.get_message_name(obj)
This is a hacky way to get ‘std_msgs/msg/String’ from a String object that is only a little surprising isn’t built into the API