SolAR Overview

SolAR is a solution to easily and quickly implement custom camera pose estimation pipelines based on a set of vision and mathematics components in order to make them available to AR application developers.

Architecture Main Concepts

SolAR Core

The SolAR core handles everything that will allow the implementation of a pipeline:

  • SolAR Data Structures define the information that flow in the pipelines and are exchanged between components.

  • SolAR Components Interfaces define a standardized interface for the different categories of basic processing elements required to implement camera pose estimation (i.e.: key point extractor, descriptor computation, etc.). This unified interface is required to ensure interoperability between components allowing to easily swap one with another to improve the final camera pose estimation pipeline.

  • The SolAR Pipeline Manager handles the implementation of a pipeline by loading components, connecting them, and running the pipeline.

SolAR components

The SolAR Components are implementations of basic processing elements compliant with the SolAR components interfaces. Several components can implement the same component interface. In general, these components are created by wrapping computer vision libraries that could be either open-source (OpenCV, PCL, ROS, etc.) or proprietary. Each component can define its own parameters that will be used to fine tune the camera pose estimation solution.

Please note that components are grouped by SolAR modules. Basically, modules are libraries that collect components sharing a common element: purpose, framework, etc. XPCF also provides uniform component parametrization.

You can invoke a component implementation through an implmentation module.

Architecture Main Concepts

SolAR components handling

SolAR relies on the Cross Platform Component Framework (XPCF), a versatile framework that provides dynamic component instantiation and loading from modules. Using XPCF, and thanks to the unified SolAR interfaces, it is possible to build applications by picking and choosing different components in different modules at runtime without prior knowledge of the components when the application itself is compiled.

Please note that you can declare components by two manners.

  • createComponent

main.cpp
#include "SolARModuleManagerOpencv.h"
#include "SolARImageLoaderOpencv.h"
SRef<SolAR::api::image::IImageLoader> myImageLoader;
xpcf::ComponentFactory::createComponent< SolARImageLoaderOpencv>(gen(display::IImageLoader::UUID ), imageViewer);
  • Module.createComponent

main.cpp
#include "SolARModuleManagerOpencv.h"
#include "SolARImageLoaderOpencv.h"
SRef<SolAR::api::image::IImageLoader> myImageLoader = opencvModule.createComponent<display::IImageLoader >(MODULES::OPENCV::UUID::IMAGE_LOADER);

For more details, please refer to the XPCF website (coming soon).

Frequently Asked Questions

  1. What is SolAR?

    SolAR is an open source initiative to develop a framework for pose estimation that can be used for Augmented Reality (AR) applications.

  2. Who initiated the SolAR project?

    The b<>comInstitute of Research and Technology initiated the SolAR project after collecting the feedback of AR actors, AR end-users (industry, real-estate, medical, etc.), AR developers (essentially SMEs) and computer vision experts (academic researchers and research engineers from companies).

  3. Who can contribute to the SolAR project?

    Anyone can contribute to the SolAR project. Contributors only need to be proficient in C++ and computer vision skills.

  4. Can I use the SolAR framework for my AR applications?

    Of course! Just be wary of the licenses of the components used by the pose estimation pipelines you choose as each component can be under its own license, independently of the encompassing SolAR Apache v2 license.

Unresolved directive in programmer_guide.adoc - include::_contact.adoc[]