robokudo.utils.module_loader¶
Dynamic module loading utilities for Robokudo.
This module provides functionality for dynamically loading Robokudo modules and components. It supports loading:
Analysis engines
Annotators
Camera configurations
Action servers
IO modules
Semantic maps
Object knowledge bases
Tree components
Types and utilities
The module handles:
ROS package path resolution
Module type management
Dynamic module importing
File path resolution
Classes¶
Enumeration of Robokudo module types. |
|
Dynamic module loader for Robokudo components. |
Module Contents¶
- class robokudo.utils.module_loader.RobokudoModuleType¶
-
Bases:
enum.EnumEnumeration of Robokudo module types.
Defines the standard module types and their paths within a ROS package.
- Variables:
-
ActionServer – Action server modules
Annotator – Annotator modules
AnalysisEngine – Analysis engine descriptors
CameraConfig – Camera configuration descriptors
IO – Input/output modules
SemanticMap – Semantic map descriptors
ObjectKnowledgeBase – Object knowledge base descriptors
TreeComponents – Behavior tree components
Types – Type definitions
Utils – Utility modules
Data – Data files
- ActionServer = ['action_servers']¶
- Annotator = ['annotators']¶
- AnalysisEngine = ['descriptors', 'analysis_engines']¶
- CameraConfig = ['descriptors', 'camera_configs']¶
- IO = ['io']¶
- SemanticMap = ['descriptors', 'semantic_maps']¶
- ObjectKnowledgeBase = ['descriptors', 'object_knowledge']¶
- TreeComponents = ['tree_components']¶
- Types = ['types']¶
- Utils = ['utils']¶
- Data = ['data']¶
- class robokudo.utils.module_loader.ModuleLoader¶
-
Dynamic module loader for Robokudo components.
Handles loading of various Robokudo module types from ROS packages. Provides path resolution and module importing functionality.
- logger = None¶
- _load_module(ros_pkg_name: str, module_type: RobokudoModuleType, module_name: str)¶
-
Dynamically import a submodule of the ‘robokudo’ package (or another package). E.g., ‘robokudo.descriptors.analysis_engines.demo’
- Parameters:
-
ros_pkg_name (str) – Name of ROS package
module_type (RobokudoModuleType) – Type of module to load
module_name (str) – Name of module to load
- Returns:
-
Loaded module object
- Return type:
-
module
- load_ae(ros_pkg_name: str, module_name: str)¶
-
Load an Analysis Engine (AE). Expects a class AnalysisEngine in the loaded module.
The ROS package must be in the same workspace with path structure:
$package_path/src/robokudo_example_package/descriptors/analysis_engines/- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing AE
module_name (str) – Name of analysis engine module
- Returns:
-
Root of loaded analysis engine
- Return type:
- load_annotator(ros_pkg_name: str, module_name: str)¶
-
Load an annotator module. You can adjust the returned object as needed.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing annotator
module_name (str) – Name of annotator module
- Returns:
-
None (TODO: implement annotator loading)
- Return type:
-
None
- load_camera_config(ros_pkg_name: str, module_name: str)¶
-
Load a camera config module. Expects class CameraConfig.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing config
module_name (str) – Name of camera config module
- Returns:
-
Loaded camera configuration
- Return type:
- load_action_server(ros_pkg_name: str, module_name: str)¶
-
Load an action server module. Expects class ActionServer.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing action server
module_name (str) – Name of action server module
- Returns:
-
Loaded action server
- Return type:
-
ActionServer
- load_io(ros_pkg_name: str, module_name: str)¶
-
Load an I/O module. Customize this if there’s a specific class to instantiate.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing IO module
module_name (str) – Name of IO module
- Returns:
-
Loaded IO module
- Return type:
-
IOModule
- load_object_knowledge_base(ros_pkg_name: str, module_name: str)¶
-
Load an ObjectKnowledgeBase given the module name and the ros package name.
The path to the AE within the package is meant to be: $package_path/src/PACKAGE_NAME/descriptors/object_knowledge/.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing knowledge base
module_name (str) – Name of knowledge base module
- Returns:
-
Loaded object knowledge base
- Return type:
- load_semantic_map(ros_pkg_name: str, module_name: str)¶
-
Load a semantic map module. Expects class SemanticMap.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing semantic map
module_name (str) – Name of semantic map module
- Returns:
-
Loaded semantic map
- Return type:
- load_tree_components(ros_pkg_name: str, module_name: str)¶
-
Load tree components. If there’s a main class, instantiate it here.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing components
module_name (str) – Name of tree components module
- Returns:
-
Loaded tree components module
- Return type:
-
module
- load_types(ros_pkg_name: str, module_name: str)¶
-
Load a ‘types’ module, or a class if needed.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing types
module_name (str) – Name of types module
- Returns:
-
Loaded types module
- Return type:
-
module
- load_utils(ros_pkg_name: str, module_name: str)¶
-
Load a ‘utils’ module, or a class if needed.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package containing utilities
module_name (str) – Name of utility module
- Returns:
-
Loaded utility module
- Return type:
-
module
- get_file_paths(ros_pkg_name: str, module_type: RobokudoModuleType, dir_name: str, file_extension: str = None) List[str]¶
-
Get paths to files in module directory.
If you previously used this to read data files from the ‘source’ folder, you can either remove it or refactor to read from:
get_package_share_directory(‘robokudo’), or
standard Python package resources.
- If you truly need to load data from the installed package, see:
-
ament_index_python (to find share dir)
or importlib.resources
For now, you might remove this method or keep it if you adapt the logic.
- Parameters:
-
ros_pkg_name (str) – Name of ROS package
module_type (RobokudoModuleType) – Type of module to search
dir_name (str) – Name of directory to search
file_extension (str, optional) – Optional file extension filter
- Returns:
-
List of paths to matching files
- Return type:
-
List[Path]