The SolAR framework has been designed to easily assemble a set of SolAR vision components to build vision pipelines adressing AR services. To ensure the interoperability, a concrete vision component must implement one of the more than 50 interfaces currently defined in the SolAR framework. Thus, a SolAR pipeline assembler can easily choose and connect SolAR vision components together to assemble a vision pipeline, and he can easily swap on component by another one to improve or adapt the pipeline to a dedicated device or task. This modularity aims at creating an ecosystem where researchers and vision expert will be able to easily share, promote or make their research results accessible to a large community to help the adoption of augmented reality.
Each component processes input data and streams the processing output to feed the input of other components. Thus, each processing can be performed in parallel by buffering data between components to optimize the global vision pipeline. Components exchange data with strong types defined by the data structures available in the framework to ensure strong interfaces and avoid the connection of components with incompatible data.
Also, each concrete implementation of a SolAR component can define its own parameters to provide configuration genericity. This configuration is very simple with SolAR and allow to configure the pipeline at load time thanks to a simple xml file, and even at runtime through the SolAR API.
As it is difficult to manage tens, hundreds or even thousands of components independently (i.e. one shared library per component), SolAR components must be grouped into SolAR modules (i.e. a unique shared library embedded a set of concrete implementation of SolAR components). Thus, it will be much more easy to manage the publication of modules which can be organized according to the creator’s choice (a module dedicated to a third party such as OpenCV, to a research institution, to a company, to a dedicated pipeline assembly, etc.).