VisionX Overview

Purpose

VisionX provides mechanisms to handle images and pointclouds in ArmarX. This includes image and pointcloud transport, either locally or over network. For local transfer, shared memory is used. For network transfer, Ice is used.

The two main component interfaces are:

The two main components provided by VisionX are image providers and image processors

The same concept is followed for pointclouds with the visionx::PointCloud::PointCloudProvider and visionx::PointCloud::PointCloudProcessor.

When both images and pointclouds are provided, the visionx::PointCloud::CapturingPointCloudAndImageProviderInterface should be implemented. Components that process both images and pointclouds can inherit from the visionx::PointCloud::PointCloudAndImageProcessor.

Vision algorithms that can be used by different components, and therefore should be compiled to be a small lib, are located in the folder vision_algorithms.

Object localization

When objects need to be localized, this is triggered and the location information is obtained via MemoryX. Information about that can be found here: How to retrieve an object from MemoryX

An explanation how to implement your own object localizer can be found here: How to implement an object localizer

Point cloud components

Point clouds, a larger set of 3D points, allow for creating a discretized representation of the current scene. In general, RGB-D images are captured with an active camera or stereo vision system and then processed to a point cloud data format.

RGB and depth image captured with an Asus Xtion PRO camera

Please refer to the howto Implementing a PointCloudProvider if you wish to implement your on point cloud provider. A detailed description how to implement your own point cloud processor can be found here: Implementing a generic PointCloudProcessor

Interface Documentation

Documentation of interfaces available in ArmarXCore is available on the Slice Documentation page.

See also
Efficient RANSAC for Point Cloud Shape Detection