-
Notifications
You must be signed in to change notification settings - Fork 305
Closed
Labels
more-information-neededFurther information is requiredFurther information is required
Description
I'd like to add more plugins to the set of rosbag2_storage_default_plugins; and to improve code reuse, I'd like to do this by inheriting from existing plugins.
However, after creating a child class, I can't seem to configure pluginlib to utilize my appended plugin_description.xml, thus the get_interface_instance call fails to find the new plugin when I attempt to set the parent plugin's type as the child plugin's base_class_type instead of the parent's own base_class_type. Doing the latter of course prevents me from leaving the public function unimplemented when attempting to inherit.
$ ros2 bag play -s checkpoint bag_file_path
DISCLAIMER
ros2 bag is currently under development and not ready to use yet
[ERROR] [rosbag2_storage]: Could not load/open plugin with storage id 'checkpoint'.
[ERROR] [rosbag2_transport]: Failed to play: No storage could be initialized. Abort
Here is my current plugin_description.xml
<library path="rosbag2_storage_default_plugins">
<class
name="sqlite3"
type="rosbag2_storage_plugins::SqliteStorage"
base_class_type="rosbag2_storage::storage_interfaces::ReadWriteInterface"
>
<description>Plugin to write to SQLite3 databases</description>
</class>
<class
name="checkpoint"
type="rosbag2_storage_plugins::CheckpointStorage"
base_class_type="rosbag2_storage_plugins::SqliteStorage"
>
<description>Plugin to write to Checkpoint databases</description>
</class>
</library>This commit/branch shows a minimal example of what was attempted above: 849c722
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
more-information-neededFurther information is requiredFurther information is required