robokudo.vis.visualizer_manager =============================== .. py:module:: robokudo.vis.visualizer_manager .. autoapi-nested-parse:: Visualization management for RoboKudo pipelines. This module provides a behavior tree node that manages visualization of pipeline data using different visualization backends. It coordinates: * OpenCV-based visualization * Open3D visualization * ROS visualization * Shared visualization state * Pipeline data synchronization Dependencies ----------- * py_trees for behavior tree functionality * cv2 for OpenCV visualization * robokudo.pipeline for pipeline access * robokudo.vis.* for visualization backends See Also -------- * :mod:`robokudo.vis.visualizer` : Base visualization interface * :mod:`robokudo.vis.cv_visualizer` : OpenCV-based visualization * :mod:`robokudo.vis.o3d_visualizer` : Open3D-based visualization * :mod:`robokudo.vis.ros_visualizer` : ROS-based visualization Classes ------- .. autoapisummary:: robokudo.vis.visualizer_manager.VisualizationManager Module Contents --------------- .. py:class:: VisualizationManager(name) Bases: :py:obj:`py_trees.behaviour.Behaviour` Behavior tree node for managing pipeline visualizations. This class coordinates visualization of pipeline data across multiple visualization backends. It handles: * Pipeline data buffering and synchronization * Visualizer creation and lifecycle management * Shared visualization state * Visualization timing and performance monitoring Parameters ---------- name : str Name of the behavior tree node Attributes ---------- pipelines : dict Mapping of pipeline names to Pipeline objects rk_logger : logging.Logger Logger instance for this class visualizer_types : list List of available visualizer classes visualizers : dict Mapping of pipeline names to lists of active visualizers Notes ----- The manager operates in three phases: 1. Pre-tick: Prepare visualizers for new data 2. Tick: Update visualizations 3. Post-tick: Cleanup and synchronization .. py:attribute:: pipelines .. py:attribute:: rk_logger :value: None .. py:attribute:: visualizer_types .. py:attribute:: visualizers .. py:method:: create_visualizers_for_pipeline(pipeline: robokudo.pipeline.Pipeline) Create visualizer instances for a pipeline. Parameters ---------- pipeline : robokudo.pipeline.Pipeline Pipeline to create visualizers for Notes ----- Creates one instance of each visualizer type and associates them with the pipeline. All visualizers share a common visualization state. .. warning:: Not all visualizers need shared state - TODO: Handle this case .. py:method:: visualizer_instances() :staticmethod: Get all active visualizer instances. Returns ------- list List of all active Visualizer instances .. py:method:: initialise() Initialize the behavior tree node. This method: * Clears existing pipeline references * Finds all Pipeline nodes in the behavior tree * Stores references to found pipelines Notes ----- The VisualizationManager should be placed one level below the top node (Parallel) in the behavior tree. .. py:method:: update() Update visualizations for all pipelines. This method: 1. Copies new data from buffer to visualization map 2. Creates visualizers for new pipelines 3. Notifies visualizers of new data 4. Executes pre-tick, tick, and post-tick phases 5. Checks for termination signals Returns ------- py_trees.common.Status FAILURE if any visualizer indicates termination, RUNNING otherwise Notes ----- The update cycle ensures synchronized visualization across all backends while maintaining separation between data buffers and visualization state.