|
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 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.
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 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.
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
Documentation of interfaces available in ArmarXCore is available on the Slice Documentation page.