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:\{newSort final result. default coordinates: GripTCPinRobotBase.