robokudo.descriptors.analysis_engines.stretch_demo¶
Analysis engine answering perception queries for the Stretch robot.
Localizes objects standing on the dominant plane within the apartment demo’s second
shelf layer, in view of the Stretch’s RealSense, and reports their poses in response to
a Query, so a plan can correct an object’s pose before
grasping it.
Note
The pipeline localizes but does not recognize: it attaches no
Classification, so every reported object designator
has an empty type and the caller decides what it asked for. Adding a classifying
annotator (for example
ClipAnnotator or
SimpleYoloAnnotator) before
GenerateQueryResult fills that field in without any
other change.
Attributes¶
Camera configuration this engine reads from. |
|
Lower world-frame height bound of the crop, in metres. |
|
Upper world-frame height bound of the crop, in metres. |
|
World-frame lateral bounds of the crop, in metres. |
Classes¶
Query-driven tabletop localization for the Stretch. |
Module Contents¶
- robokudo.descriptors.analysis_engines.stretch_demo.CAMERA_CONFIG_NAME = 'realsense'¶
-
Camera configuration this engine reads from.
The Stretch carries a RealSense D435i publishing on the stock
realsense2_cameratopics, and its colour frame is namedcamera_color_optical_frame, so the shared RealSense config applies unchanged. Pass overrides tocreate_descriptor()if a particular robot publishes elsewhere.
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_LAYER_MIN_WORLD_Z = 0.4565¶
-
Lower world-frame height bound of the crop, in metres.
The apartment demo’s shelf has layers at world heights 0.283m, 0.63m, 1.265m and 1.613m (see
experiments.real_stretch_apartment_demo.demo); this engine targets the second layer at 0.63m. The bound is the midpoint between that layer and the one below it, so the crop keeps whatever sits on the target layer while excluding its neighbours.
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_LAYER_MAX_WORLD_Z = 0.9475¶
-
Upper world-frame height bound of the crop, in metres.
The midpoint between the target layer (0.63m) and the one above it (1.265m).
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_MIN_WORLD_X = 0.4¶
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_MAX_WORLD_X = 1.35¶
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_MIN_WORLD_Y = -0.35¶
- robokudo.descriptors.analysis_engines.stretch_demo.TARGET_SHELF_MAX_WORLD_Y = 0.05¶
-
World-frame lateral bounds of the crop, in metres.
The shelf (
experiments.real_stretch_apartment_demo.demo) is a 0.305m x 0.85m footprint centred at world (0.88, -0.17) with a -90 degree yaw, which rotates its outer footprint to world X in [0.455, 1.305] and world Y in [-0.3225, -0.0175]. These bounds add roughly 5cm of margin on every side of that footprint, since the height bound alone left the shelf’s own case (side walls, the layer’s front lip) and, without a lateral bound at all, the rest of the room in view as further untyped candidates.
- class robokudo.descriptors.analysis_engines.stretch_demo.AnalysisEngine¶
-
Bases:
robokudo.analysis_engine.AnalysisEngineInterfaceQuery-driven tabletop localization for the Stretch.
- name() str¶
-
Get the name of the analysis engine.
- Returns:
-
The name identifier of this analysis engine
- implementation() robokudo.pipeline.Pipeline¶
-
Build the pipeline that answers a query with the poses of the objects in view.
The pipeline waits for a query, reads a frame, isolates the dominant plane, treats what stands on it as objects, estimates a pose per object from its bounding box, and replies.
- Returns:
-
The configured pipeline for Stretch perception