robokudo.vis.visualizer_manager

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

Classes

VisualizationManager

Behavior tree node for managing pipeline visualizations.

Module Contents

class robokudo.vis.visualizer_manager.VisualizationManager(name)

Bases: 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

namestr

Name of the behavior tree node

Attributes

pipelinesdict

Mapping of pipeline names to Pipeline objects

rk_loggerlogging.Logger

Logger instance for this class

visualizer_typeslist

List of available visualizer classes

visualizersdict

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

pipelines
rk_logger = None
visualizer_types
visualizers
create_visualizers_for_pipeline(pipeline: robokudo.pipeline.Pipeline)

Create visualizer instances for a pipeline.

Parameters

pipelinerobokudo.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

static visualizer_instances()

Get all active visualizer instances.

Returns

list

List of all active Visualizer instances

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.

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.