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 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:
- Returns:
The result of the LoadCarrier detection.
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:
- 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 definitionspose_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:
- Returns:
A DetectItemsResult.
- 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
- 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 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 camerapose_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:
- 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:
- Returns:
List of all requested pose priors
- 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 robot_pose:
Optional
[PoseModel
] = None
- 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" } } }
- 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:
- 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 object_to_detect:
ObjectToDetectModel
[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 timestamp:
TimeStampModel
[Required] - Validated by: