5.1. Detection API

5.1.1. LoadCarrier module

Implementation of the LoadCarrier detection module.

pydantic model voraus_roboception_app.modules.detection.load_carrier.DetectLoadCarriersRequest

Bases: BaseModel

The request arguments of a detect_load_carriers service request of the rc_load_carrier module.

Show JSON schema
{
   "title": "DetectLoadCarriersRequest",
   "description": "The request arguments of a detect_load_carriers service request of the rc_load_carrier module.",
   "type": "object",
   "properties": {
      "load_carrier_ids": {
         "items": {
            "type": "string"
         },
         "title": "Load Carrier Ids",
         "type": "array"
      },
      "pose_frame": {
         "title": "Pose Frame",
         "type": "string"
      },
      "robot_pose": {
         "anyOf": [
            {
               "$ref": "#/$defs/PoseModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "region_of_interest_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Region Of Interest Id"
      },
      "region_of_interest_2d_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Region Of Interest 2D Id"
      }
   },
   "$defs": {
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      }
   },
   "required": [
      "load_carrier_ids",
      "pose_frame"
   ]
}

Fields:
field load_carrier_ids: list[str] [Required]
field pose_frame: str [Required]
field region_of_interest_2d_id: Optional[str] = None
field region_of_interest_id: Optional[str] = None
field robot_pose: Optional[PoseModel] = None
pydantic model voraus_roboception_app.modules.detection.load_carrier.DetectLoadCarriersResult

Bases: ServiceResponse

The result of a detect_load_carriers service request of the rc_load_carrier module.

Show JSON schema
{
   "title": "DetectLoadCarriersResult",
   "description": "The result of a detect_load_carriers service request of the rc_load_carrier module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "load_carriers": {
         "items": {
            "$ref": "#/$defs/LoadCarrierModel"
         },
         "title": "Load Carriers",
         "type": "array"
      },
      "timestamp": {
         "$ref": "#/$defs/TimeStampModel"
      }
   },
   "$defs": {
      "LoadCarrierModel": {
         "description": "Load carrier definition.\n\nPydantic model is incomplete, some of the parameters depend on each other, but this hierarchy is not implemented\nyet.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "outer_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "inner_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "rim_thickness": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "rim_step_height": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Rim Step Height"
            },
            "rim_ledge": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "height_open_side": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Height Open Side"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "overfilled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Overfilled"
            }
         },
         "required": [
            "id",
            "type",
            "outer_dimensions",
            "inner_dimensions",
            "pose_frame",
            "pose"
         ],
         "title": "LoadCarrierModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      },
      "TimeStampModel": {
         "description": "Timestamps of detections are split in seconds and nanoseconds since epoch.",
         "properties": {
            "sec": {
               "title": "Sec",
               "type": "integer"
            },
            "nsec": {
               "title": "Nsec",
               "type": "integer"
            }
         },
         "required": [
            "sec",
            "nsec"
         ],
         "title": "TimeStampModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "load_carriers",
      "timestamp"
   ]
}

Fields:
Validators:

field load_carriers: List[LoadCarrierModel] [Required]
Validated by:
field timestamp: TimeStampModel [Required]
Validated by:
class voraus_roboception_app.modules.detection.load_carrier.LoadCarrier(client, pipeline)

Bases: object

The LoadCarrier detection module.

Official API Documentation: https://doc.rc-cube.com/latest/en/loadcarrier.html

detect_load_carriers(load_carrier_ids, pose_frame='camera', robot_pose=None, region_of_interest_id=None, region_of_interest_2d_id=None)

Triggers the detection of load carriers with the LoadCarrierer algorithm.

Description from roboception documentation: LoadCarrier Detection

Parameters:
  • load_carrier_ids (list[str]) – IDs of the load carriers which should be detected. Currently only one ID can be specified.

  • pose_frame (str) – Reference frame in which the poses will be returned, either “camera” or “external”. Defaults to “camera”.

  • robot_pose (Optional[PoseModel]) – Pose of the robot. Only required if pose_frame is set to “external” and the camera is mounted to the robot. Defaults to None.

  • region_of_interest_id (Optional[str]) – Optional ID of the 3D region of interest where to search for the load carriers. Defaults to None.

  • region_of_interest_2d_id (Optional[str]) – Optional ID of the 2D region of interest where to search for the load carriers. Defaults to None.

Return type:

DetectLoadCarriersResult

Returns:

The result of the LoadCarrier detection.

node_name: str = 'rc_load_carrier'

5.1.2. Boxpick module

Implementation of the BoxPick detection module.

class voraus_roboception_app.modules.detection.boxpick.BoxPick(client, pipeline)

Bases: object

The BoxPick detection module.

Official API Documentation: https://doc.rc-cube.com/latest/en/itempick.html

compute_grasps(item_models, pose_frame='camera', load_carrier_id=None, region_of_interest_id=None, suction_surface_length=0.02, suction_surface_width=0.02, robot_pose=None, collision_detection=None)

Detect Objects and compute grasp points for each object.

Parameters:
  • item_models (List[BoxPickItemModel]) – Definition of one or more boxe types to search for.

  • pose_frame (str) – Pose frame in which the resulting poses will be returned. Defaults to “camera”.

  • load_carrier_id (Optional[str]) – The load carrier id to search for. Defaults to None.

  • region_of_interest_id (Optional[str]) – The region of interest id to search for. Defaults to None.

  • suction_surface_length (float) – The minimal suction surface length required for the tool to grab in meters. Defaults to 0.02.

  • suction_surface_width (float) – The minimal suction surface width required for the tool to grab in meters. Defaults to 0.02.

  • robot_pose (Optional[Pose]) – The current pose of the robot. Only required, if pose_frame is set to external and the camera is mounted to the robot. Defaults to None.

  • collision_detection (Optional[CollisionDetectionModel]) – Optional definition of a CollisionDetectionModel. Defaults to None.

Return type:

ComputeGraspsResultModel

Returns:

The detected results.

detect_items(boxes, pose_frame='camera', load_carrier_id=None, region_of_interest_id=None, robot_pose=None)

Detect boxes and their poses, but do not compute grasp poses.

Parameters:
  • boxes (List[BoxPickItemModel]) – List of valid box definitions

  • pose_frame (str) – Reference frame in which the poses will be returned, either “camera” or “external”. Defaults to “camera”.

  • load_carrier_id (Optional[str]) – The optional load carrier ID that will be searched for. Defaults to None.

  • region_of_interest_id (Optional[str]) – The optional region of interest id, where to search.. Defaults to None.

  • robot_pose (Optional[PoseModel]) – Pose of the robot. Only required if pose_frame is set to “external” and the camera is mounted to the robot. Defaults to None.

Return type:

DetectItemsResultModel

Returns:

A DetectItemsResult.

node_name: str = 'rc_boxpick'
set_grasp_sorting_direction(x_direction, y_direction, z_direction)

Sets the sorting strategy of the BoxPick command.

Only direction-strategy is currently implemented.

Interface might/will change in the future!

Parameters:
  • x_direction (float) – x component of the direction vector.

  • y_direction (float) – y component of the direction vector.

  • z_direction (float) – z component of the direction vector.

Raises:

Any error of voraus_roboception_app.client.RoboceptionApiClient.service_request

Return type:

None

pydantic model voraus_roboception_app.modules.detection.boxpick.ComputeGraspsRequestModel

Bases: DetectItemsRequestModel

The request arguments model of a compute_grasps service request of the rc_boxpick module.

Show JSON schema
{
   "title": "ComputeGraspsRequestModel",
   "description": "The request arguments model of a compute_grasps service request of the rc_boxpick module.",
   "type": "object",
   "properties": {
      "pose_frame": {
         "title": "Pose Frame",
         "type": "string"
      },
      "item_models": {
         "items": {
            "$ref": "#/$defs/BoxPickItemModel"
         },
         "title": "Item Models",
         "type": "array"
      },
      "load_carrier_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Load Carrier Id"
      },
      "region_of_interest_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Region Of Interest Id"
      },
      "robot_pose": {
         "anyOf": [
            {
               "$ref": "#/$defs/PoseModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "suction_surface_length": {
         "title": "Suction Surface Length",
         "type": "number"
      },
      "suction_surface_width": {
         "title": "Suction Surface Width",
         "type": "number"
      },
      "collision_detection": {
         "anyOf": [
            {
               "$ref": "#/$defs/CollisionDetectionModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      }
   },
   "$defs": {
      "BoxPickItemModel": {
         "description": "The valid BoxPick item type.",
         "properties": {
            "rectangle": {
               "$ref": "#/$defs/BoxRectangleModel"
            },
            "type": {
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "rectangle",
            "type"
         ],
         "title": "BoxPickItemModel",
         "type": "object"
      },
      "BoxRectangleModel": {
         "description": "Definition of a Rectangle with tolerances, required for BoxPick.",
         "properties": {
            "min_dimensions": {
               "$ref": "#/$defs/Position2DModel"
            },
            "max_dimensions": {
               "$ref": "#/$defs/Position2DModel"
            }
         },
         "required": [
            "min_dimensions",
            "max_dimensions"
         ],
         "title": "BoxRectangleModel",
         "type": "object"
      },
      "CollisionDetectionModel": {
         "description": "Definition of a CollisionDetection model.",
         "properties": {
            "gripper_id": {
               "title": "Gripper Id",
               "type": "string"
            },
            "pre_grasp_offset": {
               "$ref": "#/$defs/PosePositionModel"
            }
         },
         "required": [
            "gripper_id",
            "pre_grasp_offset"
         ],
         "title": "CollisionDetectionModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      }
   },
   "required": [
      "pose_frame",
      "item_models",
      "suction_surface_length",
      "suction_surface_width"
   ]
}

Fields:
field collision_detection: Optional[CollisionDetectionModel] = None
field suction_surface_length: float [Required]
field suction_surface_width: float [Required]
pydantic model voraus_roboception_app.modules.detection.boxpick.ComputeGraspsResultModel

Bases: ServiceResponse

The result model of a compute_grasps service request of the rc_boxpick module.

Show JSON schema
{
   "title": "ComputeGraspsResultModel",
   "description": "The result model of a compute_grasps service request of the rc_boxpick module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "timestamp": {
         "$ref": "#/$defs/TimeStampModel"
      },
      "load_carriers": {
         "items": {
            "$ref": "#/$defs/LoadCarrierModel"
         },
         "title": "Load Carriers",
         "type": "array"
      },
      "items": {
         "items": {
            "$ref": "#/$defs/BoxPickItemDetectionModel"
         },
         "title": "Items",
         "type": "array"
      },
      "grasps": {
         "items": {
            "$ref": "#/$defs/GraspPickModel"
         },
         "title": "Grasps",
         "type": "array"
      }
   },
   "$defs": {
      "BoxPickItemDetectionModel": {
         "description": "Result of a BoxPick/ItemPick detection, corresponds to a MatchModel of cad_match.",
         "properties": {
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "rectangle": {
               "$ref": "#/$defs/Position2DModel"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            }
         },
         "required": [
            "pose",
            "pose_frame",
            "rectangle",
            "timestamp",
            "type",
            "uuid"
         ],
         "title": "BoxPickItemDetectionModel",
         "type": "object"
      },
      "GraspPickModel": {
         "description": "A grasp for BoxPick and ItemPick detections.",
         "properties": {
            "item_uuid": {
               "title": "Item Uuid",
               "type": "string"
            },
            "max_suction_surface_length": {
               "title": "Max Suction Surface Length",
               "type": "number"
            },
            "max_suction_surface_width": {
               "title": "Max Suction Surface Width",
               "type": "number"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "quality": {
               "title": "Quality",
               "type": "number"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            }
         },
         "required": [
            "item_uuid",
            "max_suction_surface_length",
            "max_suction_surface_width",
            "pose",
            "pose_frame",
            "quality",
            "timestamp",
            "type",
            "uuid"
         ],
         "title": "GraspPickModel",
         "type": "object"
      },
      "LoadCarrierModel": {
         "description": "Load carrier definition.\n\nPydantic model is incomplete, some of the parameters depend on each other, but this hierarchy is not implemented\nyet.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "outer_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "inner_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "rim_thickness": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "rim_step_height": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Rim Step Height"
            },
            "rim_ledge": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "height_open_side": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Height Open Side"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "overfilled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Overfilled"
            }
         },
         "required": [
            "id",
            "type",
            "outer_dimensions",
            "inner_dimensions",
            "pose_frame",
            "pose"
         ],
         "title": "LoadCarrierModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      },
      "TimeStampModel": {
         "description": "Timestamps of detections are split in seconds and nanoseconds since epoch.",
         "properties": {
            "sec": {
               "title": "Sec",
               "type": "integer"
            },
            "nsec": {
               "title": "Nsec",
               "type": "integer"
            }
         },
         "required": [
            "sec",
            "nsec"
         ],
         "title": "TimeStampModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "timestamp",
      "load_carriers",
      "items",
      "grasps"
   ]
}

Fields:
Validators:

field grasps: List[GraspPickModel] [Required]
Validated by:
field items: List[BoxPickItemDetectionModel] [Required]
Validated by:
field load_carriers: List[LoadCarrierModel] [Required]
Validated by:
field timestamp: TimeStampModel [Required]
Validated by:
pydantic model voraus_roboception_app.modules.detection.boxpick.DetectItemsRequestModel

Bases: BaseModel

The request arguments model of a detect_items service request of the rc_boxpick module.

Show JSON schema
{
   "title": "DetectItemsRequestModel",
   "description": "The request arguments model of a detect_items service request of the rc_boxpick module.",
   "type": "object",
   "properties": {
      "pose_frame": {
         "title": "Pose Frame",
         "type": "string"
      },
      "item_models": {
         "items": {
            "$ref": "#/$defs/BoxPickItemModel"
         },
         "title": "Item Models",
         "type": "array"
      },
      "load_carrier_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Load Carrier Id"
      },
      "region_of_interest_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Region Of Interest Id"
      },
      "robot_pose": {
         "anyOf": [
            {
               "$ref": "#/$defs/PoseModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      }
   },
   "$defs": {
      "BoxPickItemModel": {
         "description": "The valid BoxPick item type.",
         "properties": {
            "rectangle": {
               "$ref": "#/$defs/BoxRectangleModel"
            },
            "type": {
               "title": "Type",
               "type": "string"
            }
         },
         "required": [
            "rectangle",
            "type"
         ],
         "title": "BoxPickItemModel",
         "type": "object"
      },
      "BoxRectangleModel": {
         "description": "Definition of a Rectangle with tolerances, required for BoxPick.",
         "properties": {
            "min_dimensions": {
               "$ref": "#/$defs/Position2DModel"
            },
            "max_dimensions": {
               "$ref": "#/$defs/Position2DModel"
            }
         },
         "required": [
            "min_dimensions",
            "max_dimensions"
         ],
         "title": "BoxRectangleModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      }
   },
   "required": [
      "pose_frame",
      "item_models"
   ]
}

Fields:
field item_models: List[BoxPickItemModel] [Required]
field load_carrier_id: Optional[str] = None
field pose_frame: str [Required]
field region_of_interest_id: Optional[str] = None
field robot_pose: Optional[PoseModel] = None
pydantic model voraus_roboception_app.modules.detection.boxpick.DetectItemsResultModel

Bases: ServiceResponse

The result model of a detect_items service request of the rc_boxpick module.

Show JSON schema
{
   "title": "DetectItemsResultModel",
   "description": "The result model of a detect_items service request of the rc_boxpick module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "timestamp": {
         "$ref": "#/$defs/TimeStampModel"
      },
      "load_carriers": {
         "items": {
            "$ref": "#/$defs/LoadCarrierModel"
         },
         "title": "Load Carriers",
         "type": "array"
      },
      "items": {
         "items": {
            "$ref": "#/$defs/BoxPickItemDetectionModel"
         },
         "title": "Items",
         "type": "array"
      }
   },
   "$defs": {
      "BoxPickItemDetectionModel": {
         "description": "Result of a BoxPick/ItemPick detection, corresponds to a MatchModel of cad_match.",
         "properties": {
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "rectangle": {
               "$ref": "#/$defs/Position2DModel"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            }
         },
         "required": [
            "pose",
            "pose_frame",
            "rectangle",
            "timestamp",
            "type",
            "uuid"
         ],
         "title": "BoxPickItemDetectionModel",
         "type": "object"
      },
      "LoadCarrierModel": {
         "description": "Load carrier definition.\n\nPydantic model is incomplete, some of the parameters depend on each other, but this hierarchy is not implemented\nyet.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "outer_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "inner_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "rim_thickness": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "rim_step_height": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Rim Step Height"
            },
            "rim_ledge": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "height_open_side": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Height Open Side"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "overfilled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Overfilled"
            }
         },
         "required": [
            "id",
            "type",
            "outer_dimensions",
            "inner_dimensions",
            "pose_frame",
            "pose"
         ],
         "title": "LoadCarrierModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      },
      "TimeStampModel": {
         "description": "Timestamps of detections are split in seconds and nanoseconds since epoch.",
         "properties": {
            "sec": {
               "title": "Sec",
               "type": "integer"
            },
            "nsec": {
               "title": "Nsec",
               "type": "integer"
            }
         },
         "required": [
            "sec",
            "nsec"
         ],
         "title": "TimeStampModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "timestamp",
      "load_carriers",
      "items"
   ]
}

Fields:
Validators:

field items: List[BoxPickItemDetectionModel] [Required]
Validated by:
field load_carriers: List[LoadCarrierModel] [Required]
Validated by:
field timestamp: TimeStampModel [Required]
Validated by:

5.1.3. CADMatch module

Implementation of the CADMatch detection module.

class voraus_roboception_app.modules.detection.cad_match.CADMatch(client, pipeline)

Bases: object

The CADMatch detection module.

Official API Documentation: https://doc.rc-cube.com/latest/en/cadmatch.html

detect_object(template_id, pose_frame='camera', load_carrier_id=None, region_of_interest_id=None, collision_detection=None, robot_pose=None, pose_prior_ids=None)

Triggers the detection of objects with the CadMatching algorithm.

Description from roboception documentation: Detection of Objects- CadMatch

Parameters:
  • template_id (str) – Name of the CAD template that is already uploaded to the camera

  • pose_frame (str) – Reference frame in which the poses will be returned, either “camera” or “external”. Defaults to “camera”.

  • load_carrier_id (Optional[str]) – The optional load carrier ID that will be searched for. Defaults to None.

  • region_of_interest_id (Optional[str]) – The optional region of interest id, where to search.. Defaults to None.

  • collision_detection (Optional[CollisionDetectionModel]) – CollisionDetectionModel if a collision check shall be performed. Defaults to None.

  • robot_pose (Optional[PoseModel]) – Pose of the robot. Only required if pose_frame is set to “external” and the camera is mounted to the robot. Defaults to None.

  • pose_prior_ids (Optional[List[str]]) – “IDs of the pose templates for the objects to be recognized. If the selected template requires a pose template for recognition, this argument must be provided.”

Return type:

DetectObjectResult

Returns:

The result of the CAD detection.

get_pose_prior_ids(pose_prior_ids=None, template_ids=None)

Returns the pose prior ids currently stored on the rc_cube.

Description from roboception documentation: https://doc.rc-cube.com/latest/en/cadmatch.html#sect-cadmatch-internal-services

Parameters:
  • pose_prior_ids (Optional[List[str]]) – Filter resulting list. Defaults to None.

  • template_ids (Optional[List[str]]) – Filter resulting list. Defaults to None.

Return type:

GetPosePriorResult

Returns:

List of all requested pose priors

node_name: str = 'rc_cadmatch'
pydantic model voraus_roboception_app.modules.detection.cad_match.DetectObjectRequest

Bases: BaseModel

The request arguments of a detect_object service request of the rc_cadmatch module.

Show JSON schema
{
   "title": "DetectObjectRequest",
   "description": "The request arguments of a detect_object service request of the rc_cadmatch module.",
   "type": "object",
   "properties": {
      "pose_frame": {
         "title": "Pose Frame",
         "type": "string"
      },
      "template_id": {
         "title": "Template Id",
         "type": "string"
      },
      "load_carrier_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Load Carrier Id"
      },
      "region_of_interest_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Region Of Interest Id"
      },
      "collision_detection": {
         "anyOf": [
            {
               "$ref": "#/$defs/CollisionDetectionModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "robot_pose": {
         "anyOf": [
            {
               "$ref": "#/$defs/PoseModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "pose_prior_ids": {
         "anyOf": [
            {
               "items": {
                  "type": "string"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Pose Prior Ids"
      }
   },
   "$defs": {
      "CollisionDetectionModel": {
         "description": "Definition of a CollisionDetection model.",
         "properties": {
            "gripper_id": {
               "title": "Gripper Id",
               "type": "string"
            },
            "pre_grasp_offset": {
               "$ref": "#/$defs/PosePositionModel"
            }
         },
         "required": [
            "gripper_id",
            "pre_grasp_offset"
         ],
         "title": "CollisionDetectionModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      }
   },
   "required": [
      "pose_frame",
      "template_id"
   ]
}

Fields:
field collision_detection: Optional[CollisionDetectionModel] = None
field load_carrier_id: Optional[str] = None
field pose_frame: str [Required]
field pose_prior_ids: Optional[List[str]] = None
field region_of_interest_id: Optional[str] = None
field robot_pose: Optional[PoseModel] = None
field template_id: str [Required]
pydantic model voraus_roboception_app.modules.detection.cad_match.DetectObjectResult

Bases: ServiceResponse

The result of a detect_object service request of the rc_cadmatch module.

Show JSON schema
{
   "title": "DetectObjectResult",
   "description": "The result of a detect_object service request of the rc_cadmatch module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "timestamp": {
         "$ref": "#/$defs/TimeStampModel"
      },
      "load_carriers": {
         "items": {
            "$ref": "#/$defs/LoadCarrierModel"
         },
         "title": "Load Carriers",
         "type": "array"
      },
      "matches": {
         "items": {
            "$ref": "#/$defs/MatchModel"
         },
         "title": "Matches",
         "type": "array"
      },
      "grasps": {
         "items": {
            "$ref": "#/$defs/GraspModel"
         },
         "title": "Grasps",
         "type": "array"
      }
   },
   "$defs": {
      "GraspModel": {
         "description": "A grasp of a cad_match.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            },
            "match_uuid": {
               "title": "Match Uuid",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "priority": {
               "title": "Priority",
               "type": "integer"
            },
            "gripper_id": {
               "title": "Gripper Id",
               "type": "string"
            },
            "collision_checked": {
               "title": "Collision Checked",
               "type": "boolean"
            }
         },
         "required": [
            "id",
            "uuid",
            "match_uuid",
            "pose",
            "pose_frame",
            "timestamp",
            "priority",
            "gripper_id",
            "collision_checked"
         ],
         "title": "GraspModel",
         "type": "object"
      },
      "LoadCarrierModel": {
         "description": "Load carrier definition.\n\nPydantic model is incomplete, some of the parameters depend on each other, but this hierarchy is not implemented\nyet.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "outer_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "inner_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "rim_thickness": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "rim_step_height": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Rim Step Height"
            },
            "rim_ledge": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "height_open_side": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Height Open Side"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "overfilled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Overfilled"
            }
         },
         "required": [
            "id",
            "type",
            "outer_dimensions",
            "inner_dimensions",
            "pose_frame",
            "pose"
         ],
         "title": "LoadCarrierModel",
         "type": "object"
      },
      "MatchModel": {
         "description": "A match of a cad_match.",
         "properties": {
            "uuid": {
               "title": "Uuid",
               "type": "string"
            },
            "grasp_uuids": {
               "items": {
                  "type": "string"
               },
               "title": "Grasp Uuids",
               "type": "array"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "template_id": {
               "title": "Template Id",
               "type": "string"
            },
            "score": {
               "title": "Score",
               "type": "number"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            }
         },
         "required": [
            "uuid",
            "grasp_uuids",
            "timestamp",
            "template_id",
            "score",
            "pose_frame",
            "pose"
         ],
         "title": "MatchModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      },
      "TimeStampModel": {
         "description": "Timestamps of detections are split in seconds and nanoseconds since epoch.",
         "properties": {
            "sec": {
               "title": "Sec",
               "type": "integer"
            },
            "nsec": {
               "title": "Nsec",
               "type": "integer"
            }
         },
         "required": [
            "sec",
            "nsec"
         ],
         "title": "TimeStampModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "timestamp",
      "load_carriers",
      "matches",
      "grasps"
   ]
}

Fields:
Validators:

field grasps: List[GraspModel] [Required]
Validated by:
field load_carriers: List[LoadCarrierModel] [Required]
Validated by:
field matches: List[MatchModel] [Required]
Validated by:
field timestamp: TimeStampModel [Required]
Validated by:
pydantic model voraus_roboception_app.modules.detection.cad_match.GetPosePriorRequest

Bases: BaseModel

The request arguments of a get pose prior service request of the rc_cadmatch module.

Show JSON schema
{
   "title": "GetPosePriorRequest",
   "description": "The request arguments of a get pose prior service request of the rc_cadmatch module.",
   "type": "object",
   "properties": {
      "pose_prior_ids": {
         "anyOf": [
            {
               "items": {
                  "type": "string"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Pose Prior Ids"
      },
      "template_ids": {
         "anyOf": [
            {
               "items": {
                  "type": "string"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Template Ids"
      }
   }
}

Fields:
field pose_prior_ids: Optional[List[str]] = None
field template_ids: Optional[List[str]] = None
pydantic model voraus_roboception_app.modules.detection.cad_match.GetPosePriorResult

Bases: ServiceResponse

Results of the get pose prior service request of the rc_hand_eye_calibration module.

Show JSON schema
{
   "title": "GetPosePriorResult",
   "description": "Results of the get pose prior service request of the rc_hand_eye_calibration module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "pose_priors": {
         "items": {
            "$ref": "#/$defs/PosePriorsModel"
         },
         "title": "Pose Priors",
         "type": "array"
      }
   },
   "$defs": {
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "PosePriorsModel": {
         "description": "Pose Prior definition.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "template_id": {
               "title": "Template Id",
               "type": "string"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            }
         },
         "required": [
            "id",
            "template_id",
            "pose_frame",
            "pose"
         ],
         "title": "PosePriorsModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "pose_priors"
   ]
}

Fields:
Validators:

field pose_priors: List[PosePriorsModel] [Required]
Validated by:

SilhouetteMatch module

Implementation of the SilhouetteMatch detection module.

class voraus_roboception_app.modules.detection.silhouettematch.SilhouetteMatch(client, pipeline)

Bases: object

The SilhouetteMatch detection module.

Official API Documentation: https://doc.rc-cube.com/latest/en/silhouettematch.html

detect_object(object_to_detect, pose_frame='camera', robot_pose=None, object_plane_detection=False, offset=None, load_carrier_id=None, collision_detection=None)

Triggers the detection of objects with the SilhouetteMatch algorithm.

Description from roboception documentation: Detection of Objects- SilhouetteMatch

Parameters:
  • object_to_detect (ObjectToDetectModel) – object_id of the template which should be detected together with optional region_of_interest_2d_id.

  • pose_frame (str, optional) – Reference frame in which the poses will be returned, either “camera” or “external”. Defaults to “camera”. Defaults to “camera”.

  • robot_pose (Optional[PoseModel]) – Pose of the robot. Only required if pose_frame is set to “external” and the camera is mounted to the robot. Defaults to None.

  • object_plane_detection (Optional[bool], optional) – false if the objects are placed on a calibrated base plane, true if the objects surfaces are planar and the base plane is unknown or the objects are located on multiple different planes, e.g. stacks. Defaults to False.

  • offset (Optional[float], optional) – offset in meters by which the base-plane calibration will be shifted towards the camera. Defaults to None.

  • load_carrier_id (Optional[str], optional) – ID of the load carrier which contains the items to be detected. Defaults to None.

  • collision_detection (Optional[CollisionDetectionModel], optional) – CollisionDetectionModel if a collision check shall be performed. Defaults to None.

Returns:

The result of the SilhouetteMatch detection.

Return type:

SilhouetteMatchDetectObjectResult

node_name: str = 'rc_silhouettematch'
pydantic model voraus_roboception_app.modules.detection.silhouettematch.SilhouetteMatchDetectObjectRequest

Bases: BaseModel

The request arguments of a detect_object service request of the SilhouetteMatch module.

Show JSON schema
{
   "title": "SilhouetteMatchDetectObjectRequest",
   "description": "The request arguments of a detect_object service request of the SilhouetteMatch module.",
   "type": "object",
   "properties": {
      "object_to_detect": {
         "$ref": "#/$defs/ObjectToDetectModel"
      },
      "pose_frame": {
         "title": "Pose Frame",
         "type": "string"
      },
      "robot_pose": {
         "anyOf": [
            {
               "$ref": "#/$defs/PoseModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      },
      "object_plane_detection": {
         "anyOf": [
            {
               "type": "boolean"
            },
            {
               "type": "null"
            }
         ],
         "default": false,
         "title": "Object Plane Detection"
      },
      "offset": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": 0.0,
         "title": "Offset"
      },
      "load_carrier_id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Load Carrier Id"
      },
      "collision_detection": {
         "anyOf": [
            {
               "$ref": "#/$defs/CollisionDetectionModel"
            },
            {
               "type": "null"
            }
         ],
         "default": null
      }
   },
   "$defs": {
      "CollisionDetectionModel": {
         "description": "Definition of a CollisionDetection model.",
         "properties": {
            "gripper_id": {
               "title": "Gripper Id",
               "type": "string"
            },
            "pre_grasp_offset": {
               "$ref": "#/$defs/PosePositionModel"
            }
         },
         "required": [
            "gripper_id",
            "pre_grasp_offset"
         ],
         "title": "CollisionDetectionModel",
         "type": "object"
      },
      "ObjectToDetectModel": {
         "description": "Object to detect for the SilhouetteMatch module.",
         "properties": {
            "object_id": {
               "title": "Object Id",
               "type": "string"
            },
            "region_of_interest_2d_id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "title": "Region Of Interest 2D Id"
            }
         },
         "required": [
            "object_id",
            "region_of_interest_2d_id"
         ],
         "title": "ObjectToDetectModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      }
   },
   "required": [
      "object_to_detect",
      "pose_frame"
   ]
}

Fields:
field collision_detection: Optional[CollisionDetectionModel] = None
field load_carrier_id: Optional[str] = None
field object_plane_detection: Optional[bool] = False
field object_to_detect: ObjectToDetectModel [Required]
field offset: Optional[float] = 0.0
field pose_frame: str [Required]
field robot_pose: Optional[PoseModel] = None
pydantic model voraus_roboception_app.modules.detection.silhouettematch.SilhouetteMatchDetectObjectResult

Bases: ServiceResponse

The result of a detect_object service request of the SilhouetteMatch module.

Show JSON schema
{
   "title": "SilhouetteMatchDetectObjectResult",
   "description": "The result of a detect_object service request of the SilhouetteMatch module.",
   "type": "object",
   "properties": {
      "return_code": {
         "$ref": "#/$defs/ReturnCodeModel"
      },
      "timestamp": {
         "$ref": "#/$defs/TimeStampModel"
      },
      "load_carriers": {
         "items": {
            "$ref": "#/$defs/LoadCarrierModel"
         },
         "title": "Load Carriers",
         "type": "array"
      },
      "instances": {
         "items": {
            "$ref": "#/$defs/SilhouetteDetectionModel"
         },
         "title": "Instances",
         "type": "array"
      },
      "grasps": {
         "items": {
            "$ref": "#/$defs/GraspModelSilhouetteMatch"
         },
         "title": "Grasps",
         "type": "array"
      },
      "object_id": {
         "title": "Object Id",
         "type": "string"
      }
   },
   "$defs": {
      "GraspModelSilhouetteMatch": {
         "description": "A grasp of a silhouetteMatch command.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            },
            "instance_uuid": {
               "title": "Instance Uuid",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "priority": {
               "title": "Priority",
               "type": "integer"
            },
            "gripper_id": {
               "title": "Gripper Id",
               "type": "string"
            },
            "collision_checked": {
               "title": "Collision Checked",
               "type": "boolean"
            }
         },
         "required": [
            "id",
            "uuid",
            "instance_uuid",
            "pose",
            "pose_frame",
            "timestamp",
            "priority",
            "gripper_id",
            "collision_checked"
         ],
         "title": "GraspModelSilhouetteMatch",
         "type": "object"
      },
      "LoadCarrierModel": {
         "description": "Load carrier definition.\n\nPydantic model is incomplete, some of the parameters depend on each other, but this hierarchy is not implemented\nyet.",
         "properties": {
            "id": {
               "title": "Id",
               "type": "string"
            },
            "type": {
               "title": "Type",
               "type": "string"
            },
            "outer_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "inner_dimensions": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "rim_thickness": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "rim_step_height": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Rim Step Height"
            },
            "rim_ledge": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Position2DModel"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null
            },
            "height_open_side": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Height Open Side"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "overfilled": {
               "anyOf": [
                  {
                     "type": "boolean"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Overfilled"
            }
         },
         "required": [
            "id",
            "type",
            "outer_dimensions",
            "inner_dimensions",
            "pose_frame",
            "pose"
         ],
         "title": "LoadCarrierModel",
         "type": "object"
      },
      "PoseModel": {
         "description": "Pose definition using quaternion for rotation representation.",
         "properties": {
            "position": {
               "$ref": "#/$defs/PosePositionModel"
            },
            "orientation": {
               "$ref": "#/$defs/PoseOrientationModel"
            }
         },
         "required": [
            "position",
            "orientation"
         ],
         "title": "PoseModel",
         "type": "object"
      },
      "PoseOrientationModel": {
         "description": "Orientation as quaternion.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            },
            "w": {
               "title": "W",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z",
            "w"
         ],
         "title": "PoseOrientationModel",
         "type": "object"
      },
      "PosePositionModel": {
         "description": "3D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            },
            "z": {
               "title": "Z",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "title": "PosePositionModel",
         "type": "object"
      },
      "Position2DModel": {
         "description": "2D cartesian position.",
         "properties": {
            "x": {
               "title": "X",
               "type": "number"
            },
            "y": {
               "title": "Y",
               "type": "number"
            }
         },
         "required": [
            "x",
            "y"
         ],
         "title": "Position2DModel",
         "type": "object"
      },
      "ReturnCodeModel": {
         "description": "A unified return code that is shared along all types of requests.\n\nDifferent styles of return code and message formats exist in the API. They are all converted to this common model.\n\nAlways use the success flag to evaluate whether the request was successful or not.\nDepending on the request, a positive value might represent a successful or erroneous response.",
         "properties": {
            "value": {
               "title": "Value",
               "type": "integer"
            },
            "message": {
               "title": "Message",
               "type": "string"
            },
            "success": {
               "title": "Success",
               "type": "boolean"
            }
         },
         "required": [
            "value",
            "message",
            "success"
         ],
         "title": "ReturnCodeModel",
         "type": "object"
      },
      "SilhouetteDetectionModel": {
         "description": "An instance for SilhouetteMatch detections.",
         "properties": {
            "grasp_uuids": {
               "items": {
                  "type": "string"
               },
               "title": "Grasp Uuids",
               "type": "array"
            },
            "object_id": {
               "title": "Object Id",
               "type": "string"
            },
            "pose": {
               "$ref": "#/$defs/PoseModel"
            },
            "pose_frame": {
               "title": "Pose Frame",
               "type": "string"
            },
            "timestamp": {
               "$ref": "#/$defs/TimeStampModel"
            },
            "uuid": {
               "title": "Uuid",
               "type": "string"
            }
         },
         "required": [
            "grasp_uuids",
            "object_id",
            "pose",
            "pose_frame",
            "timestamp",
            "uuid"
         ],
         "title": "SilhouetteDetectionModel",
         "type": "object"
      },
      "TimeStampModel": {
         "description": "Timestamps of detections are split in seconds and nanoseconds since epoch.",
         "properties": {
            "sec": {
               "title": "Sec",
               "type": "integer"
            },
            "nsec": {
               "title": "Nsec",
               "type": "integer"
            }
         },
         "required": [
            "sec",
            "nsec"
         ],
         "title": "TimeStampModel",
         "type": "object"
      }
   },
   "required": [
      "return_code",
      "timestamp",
      "load_carriers",
      "instances",
      "grasps",
      "object_id"
   ]
}

Fields:
Validators:

field grasps: List[GraspModelSilhouetteMatch] [Required]
Validated by:
field instances: List[SilhouetteDetectionModel] [Required]
Validated by:
field load_carriers: List[LoadCarrierModel] [Required]
Validated by:
field object_id: str [Required]
Validated by:
field timestamp: TimeStampModel [Required]
Validated by: