robokudo.annotators.collection_reader

Sensor data collection and CAS initialization.

This module provides an annotator for:

  • Reading sensor data from multiple interfaces

  • Initializing the CAS with sensor data

  • Managing multiple collection readers

  • Handling data synchronization

The module uses:

  • Camera interface abstraction

  • Pipeline CAS management

  • Data availability monitoring

  • Query preservation

Note

This is typically the first annotator in a pipeline.

Classes

CollectionReaderAnnotator

Sensor data collection and CAS initialization.

Module Contents

class robokudo.annotators.collection_reader.CollectionReaderAnnotator(descriptor, name='CollectionReader')

Bases: robokudo.annotators.core.BaseAnnotator

Sensor data collection and CAS initialization.

This annotator:

  • Reads sensor data from camera interfaces

  • Initializes new CAS instances

  • Manages multiple collection readers

  • Monitors data availability

  • Preserves existing queries

Note

Uses separate camera interfaces for different sensor types.

class Descriptor(camera_config, camera_interface)

Bases: robokudo.annotators.core.BaseAnnotator.Descriptor

Configuration descriptor for collection reader.

parameters
collection_readers
start_timer = None
iterations_since_last_data = 0
iterations_since_last_data_warn_threshold = 40
setup(timeout: float = None, node: rclpy.node.Node | None = None, visitor=None)

Set up the collection reader.

Parameters:
  • timeout (float) – Setup timeout duration

  • node (rclpy.node.Node) – A ros node

  • visitor

Returns:

True if setup successful

Return type:

bool

initialise()

Initialize the collection reader.

Called when:

  • First tick is received

  • Status changes from non-running

Clears feedback messages for all children.

add_collection_reader(descriptor: Descriptor)

Add another collection reader descriptor.

Parameters:

descriptor (CollectionReaderAnnotator.Descriptor) – Configuration descriptor for additional reader

update()

Process sensor data and update CAS.

The method:

  • Checks for new data from all readers

  • Creates new CAS when data available

  • Preserves existing queries

  • Updates feedback messages

  • Monitors data availability

Returns:

SUCCESS if data processed, RUNNING if waiting

Return type:

py_trees.Status

terminate(new_status)

Handle behavior termination.

Parameters:

new_status (py_trees.Status) – New status (SUCCESS, FAILURE or INVALID)