PipelineSettings

A pipeline defines how to process a point cloud in order to obtain object orientations (in camera frame). It contains point cloud postprocessing steps, a definition of the ROI and a list of objects that should be computed.

Note: filtering sequence BoxFilters→ROR→downsampling→ RemoveNaN → SOR

Member Functions

bool hasObjectFrameBasedCollisionCloudFilter() const

== Member Variables

id

std::string, default: \{""\} JSON Type: string +Requirement: Must be unique and not empty. Identifier for the recording object.

radiusOutlierRemoval

std::optional< RadiusOutlierRemovalParameters >, default: \{std::nullopt\} Parameters for radius outlier removal filter. JSON Type: (optional) object

filters

std::vector< std::shared_ptr< CloudFilterParameterBase > >, default: \{\} filtering point cloud before any processing steps. JSON Type: array +pre: BaseFrame of Transform must not be BaseFrame::OBJECT (for now) Note: This will affect 3D object detection and collision checking.

downsampling

std::optional< std::array< float, 3 > >, default: \{std::nullopt\} Parameters for downsampling the point cloud using voxel grid. JSON Type: array +Requirement: Must contain three elements. The three elements define the voxel leaf size in x, y and z direction [m], it will

enableSOR

bool, default: {false} JSON Type: bool Enable or disable the statistic outlier removal filter that is applied to the recorded point cloud. It removes outliers for a better grip computation but increases processing time.

sorMeanK

int, default: {5} JSON Type: integer +Requirement: Must be larger than zero. Number of neighbours considered for the SOR filter.

sorStddevMulThresh

float, default: \{0.2f\} JSON Type: float +Requirement: Must be larger than zero. Threshold used to specify when a point is considered an outlier inthe SOR filter.

imageROI

cv::Rect, default: \{0, 0, 1280, 960\} JSON Type: image ROI (fields: x, y, width, height) +Requirement: Must define a ROI inside the image dimensions 1280 x 960.

collisionCloudFilters

std::vector< std::shared_ptr< CloudFilterParameterBase > >, default: \{\} filtering point cloud before collision check. JSON Type: array +Note: This will affect only collision checking.

collisionRobotFilter

std::vector< std::string >, default: \{\} JSON Type: (optional) array of strings Contains names of all robots that should be considered for collision checks. The active robot is tested against all robots specified in this filter.

collisionCloud

bool, default: {false} JSON Type: (optional) bool Indicates if the point cloud is considered for collision checks.

collisionPart

bool, default: {false} JSON Type: (optional) bool UNIMPLEMENTED Indicates if the gripped part is considered for collision checks.

collisionObjects

bool, default: {false} JSON Type: bool Defines if the detected objects are used for robot collision detection.

objectFilter

std::vector< std::string >, default: \{\} JSON Type: (optional) array of strings Contains names of all objects that should be computed. Considers all objects if left empty or missing.

reject2DObjectsOutsideROI

bool, default: {true} Whether reject 2D objects if its polygon is outside the ROI. JSON Type: (optional) bool Indicates if objects outside the ROI should be rejected.

numGripsPrecomputeMin

std::size_t, default: {0} JSON Type: (optional) int +Requirement: Must be larger or equal to zero. Number of grips that should at least be precomputed for the pipeline.

numGripsPrecomputeMax

std::size_t, default: {100} JSON Type: (optional) int +Requirement: Must be larger than zero. Number of grips that should at most be precomputed for the pipeline.

gripPointOrdering

std::optional< std::vector< std::array< float, 4 > > >, default: \{std::nullopt\} JSON Type: (optional) array of arrays (direction + epsilon) +Requirement: May contain n arrays of length 4 (3 * orientation + 1 * epsilon) The orientation part of the vector contains a direction to be sorted along, the epsilon part of the vector states how much deviation along one row defined by a vector may occur. The sorting/definition of rows is going to be in the same order as they appear in the array. The vectors are defined in the camera base. This means that sorting along z, y, x, would first fill up a row along x, then go the he next row one up in y, the finally go to the next layer in z. Positive x direction is from right to left, positive y direction is from bottom to top, positive z direction is from camera to scene. epsilon is corresponding to value of cosine(theta). -→ epsilon = 0.1 -→ angle tolerance = arccos(0.1) = 84.3 degrees

sorting

std::shared_ptr< SortingBase >, default: \{new Sort final result. default coordinates: GripTCPinRobotBase.