Detection3DSettings< OBJECT_FIT_METHOD::MIXED_PLANE_FIT >

3D detection

Uses the RANSAC_PLANE_FIT and PLANE_FIT method. The MIXED_PLANE_FIT uses the plane, which is more parallel to the camera.

Member Functions

virtual OBJECT_FIT_METHOD type() const override

JSON Type: string +Requirement: Must be OBJECT_FIT_METHOD::MIXED_PLANE_FIT. Type of the 3D detection.

Member Variables

referenceNormal

REFERENCE_NORMAL, default: \{REFERENCE_NORMAL::CAMERA_PLANE\} JSON Type: (optional) string +Requirement: Must be a REFERENCE_NORMAL Only relevant for OBJECT_FIT_METHOD::MIXED_PLANE_FIT. The plane normals are compared with the selected reference normal. The plane normal which is closer to the reference normal is chosen in the end.

planeCenter

PLANE_CENTER, default: \{PLANE_CENTER::RANSAC_PLANE_FIT\} JSON Type: (optional) string +Requirement: Must be a PLANE_CENTER Only relevant for OBJECT_FIT_METHOD::MIXED_PLANE_FIT. Select which center point should be used. This influences only the height of the plane. The default is to use the center point from the ransac plane fit, since this point is usually more accurate (in regards to the height). The x and y coordinates are set by the ROI in the 2d detection step.

maxNumObjects

std::optional< int >, default: {100} JSON Type: (optional) int UNIMPLEMENTED +Requirement: Must be greater than zero. Maximum number of objects that should be computed in the 3D detection pipeline.

[[-2]] roiPercentage:: float, default: \{0.8f\} JSON Type: float +Requirement: Must be greater than zero. Dilate 2D object detection results by this factor. The resulting area is used to determine all points that are considered for the geometric fit.

[[-3]] minNumPoints:: int, default: {50} JSON Type: (optional) int +Requirement: Must be greater than zero. Minimum number of points required for the geometric fit.

[[-4]] centerStrategy:: CENTER_STRATEGY, default: \{CENTER_STRATEGY::REPROJECT_2D_CENTER\} JSON Type: (optional) string +Requirement: Must be a CENTER_STRATEGY. Type of the 3D center estimation strategy.

[[-5]] sizeStrategy:: SIZE_STRATEGY, default: \{SIZE_STRATEGY::REPROJECT_2D_DETECTION\} JSON Type: (optional) string +Requirement: Must be a SIZE_STRATEGY. Type of the 3D object size estimation strategy.

[[-6]] useKdeCorrection:: bool, default: {false} JSON Type: (optional) bool DEPRECATED: see shiftCorrection

[[-7]] shiftCorrection:: SHIFT_CORRECTION, default: \{SHIFT_CORRECTION::NONE\} JSON Type: (optional) string +Requirement: Must be a SHIFT_CORRECTION. Correct the detected object by shifts in teh direction specified in shiftReference

[[-8]] kdeAllowedShiftRange:: std::array< float, 2 >, default: \{0, 0.1\}

[[-9]] kdeShiftCorrectionFallback:: float, default: \{0.0\} If shift correction fails(i.e. outside of kdeAllowedShiftRange), shift correction will fallback to this value. Requirement: Must >= 0

[[-10]] shiftCorrectionPercentage:: float, default: \{1.0\} JSON Type: (optional) float +Requirement: Must be a within [0, 1]. While doing a shift correction, the only the x farthest/closest percent of the pointcloud will be considered (depending on the shift correction settings: CLOSEST/FARTHEST). This makes the shifting process less sensitive to outliers.

[[-11]] shiftReference:: SHIFT_REFERENCE, default: \{SHIFT_REFERENCE::OBJECT_NORMAL\} JSON Type: (optional) string +Requirement: Must be a SHIFT_REFERENCE. Set he direction detected objects are to be shifted in.

[[-12]] shortAxisAlignment:: AXIS_ALIGNMENT, default: \{AXIS_ALIGNMENT::FROM_FIT_METHOD\} JSON Type: (optional) string +Requirement: Must be a AXIS_ALIGNMENT. Aligning short axis of the detected object by the camera position.

[[-13]] longAxisAlignment:: AXIS_ALIGNMENT, default: \{AXIS_ALIGNMENT::FROM_FIT_METHOD\} JSON Type: (optional) string +Requirement: Must be a AXIS_ALIGNMENT. Aligning long axis of the detected object by the camera position.

Enumerations

Table 1. REFERENCE_NORMAL
Value Description

CAMERA_CENTER

Normals which are closer to the camera center will be selected.

CAMERA_PLANE

Normals which are closer to the camera plane will be selected.

Table 2. PLANE_CENTER
Value Description

RANSAC_PLANE_FIT

Use the center point coordinates of the ransac plane fit.

PLANE_FIT

Use the center point coordinates of the plane fit.

Table 3. OBJECT_FIT_METHOD
Value Description

PLANE_FIT

See Detection3DSettings<OBJECT_FIT_METHOD::PLANE_FIT>.

RANSAC_PLANE_FIT

See Detection3DSettings<OBJECT_FIT_METHOD::RANSAC_PLANE_FIT>.

MIXED_PLANE_FIT

See Detection3DSettings<OBJECT_FIT_METHOD::MIXED_PLANE_FIT>.

LINE_FIT_LONG_AXIS

See Detection3DSettings<OBJECT_FIT_METHOD::LINE_FIT_LONG_AXIS>.

GRIP_FROM_ENVIRONMENT

See Detection3DSettings<OBJECT_FIT_METHOD::GRIP_FROM_ENVIRONMENT>.

RANSAC_CYLINDER_FIT

See Detection3DSettings<OBJECT_FIT_METHOD::RANSAC_CYLINDER_FIT>.

OBJECT_MATCHING

See Detection3DSettings<OBJECT_FIT_METHOD::OBJECT_MATCHING>.

OBJECT_REFINEMENT

See Detection3DSettings<OBJECT_FIT_METHOD::OBJECT_REFINEMENT>.

Table 4. SIZE_STRATEGY
Value Description

REPROJECT_2D_DETECTION

Determine the size of the 3D object by reprojecting all centers of the 2D oriented bounding box sides into the object plane.

FROM_3D_POINTS

Determine the size of the 3D object from the 3D bounding box of all points that that lie inside the roiPercentage of the detected object.

Table 5. CENTER_STRATEGY
Value Description

REPROJECT_2D_CENTER

The 3D object center is determined by reprojecting the oriented bounding box center onto the object plane.

REPROJECT_2D_DETECTION

DEPRECATED! The 3D object center is determined by reprojecting the centers of all sides of the oriented bounding box onto the object plane. The average of all projected points defines the center point.

FROM_3D_BBOX

The 3D object center is chosen as the center of the topmost xy-plane of the computed 3D bounding box.

Table 6. SHIFT_CORRECTION
Value Description

NONE

Do not shift the object.

KDE

This feature shifts a detected object plane in the direction of its normal to the first echo. Consider the case when an object has holes and the camera observes points that lie under the object. Then a RANSAC_PLANE_FIT should be used to robustly detect one of the planes (either top or parallel one below). The kde correction then shifts the detected plane to the top.

CLOSEST

Shift the object along its normal direction such that it has the same height as the top-most point (i.e. closest to camera) of the subset of points used for the fit.

FARTHEST

Shift the object along its normal direction such that it has the same height as the bottom-most point (i.e. furthest to camera) of the subset of points used for the fit.

Table 7. SHIFT_REFERENCE
Value Description

OBJECT_NORMAL

Shift objects along object normal

OBJECT_RAY

Shift objects along the connection line between object and origin (camera position)

Table 8. AXIS_ALIGNMENT
Value Description

TO_CAMERA_AXIS

Align the indicated axis towards the camera axis

TO_CAMERA_PLANE

Align the indicated axis towards the camera plane

FROM_FIT_METHOD

Do not change axis alignments