Giter Club home page Giter Club logo

yarrar's Introduction

libyarrar Build Status

A cross-platform Augmented Reality library written in C++11.

Strongly WIP, so don't expect to use this for anything real at the moment. :)

Overview

Current features

  • Supported platforms:
    • Linux
    • Windows
    • Android
    • iOS
    • Unity3D-plugin (Windows, Linux and Android). Unity 5.3 required.
  • Extendable pipeline architechture (see Architechture)
  • Marker tracking: multiple markers
  • OpenGL-rendering: only simple 3D-shapes supported for the moment
  • Support for sensor data:
    • Android: gyroscope, rotation vector (virtual sensor)

Roadmap

  • Support for more trackers
    • SLAM
    • Edge-based
    • Face
  • Platform support for OSX (native and Unity3D-plugin)
  • Platform support for iOS-Unity3D-plugin
  • Improved marker detection / different marker data-fields
  • Support for a proper rendering-library (Ogre3D or OpenSceneGraph)

Architechture

Yarrar is modeled as a pipeline, which consists of four stages. Each stage has one or more stage-handlers, which process the data from previous stage and pass it forward to next stage. Pipeline configuration is done with JSON-based configuration file (see Pipeline Configuration for details). Pipeline stages are:

  1. Dataprovider: Sensor data handling (ie. RGB-camera, depth-camera, accelerometer, gyroscope)
  2. Tracker: Pose tracking (ie. using markers, SLAM)
  3. SensorFusion: Pose accuracy improvement
  4. Render: Rendering the 3D-models on top of camera image

Image of Pipeline

Limitations in current implementation:

  • Only one dataprovider with RGB_CAMERA_FLAG set is supported
  • SensorFusion-stage is WIP

Dependencies

Yarrar depends heavily on C++11-features, so a fairly recent compiler is needed.

Library dependencies per compilation target:

Platform OpenCV 3.0 json11 eigen GLEW GLFW
Linux X X X X X
Windows X X X X X
Android X X X
iOS X X X
Unity3D (Windows) X X *
Unity3D (Android) X X *

* Currently not needed (doesn't support sensor fusion), but will become a dependency in the future.

Compiling and running tests

See Compiling for detailed instructions

Quickstart

Compile and run tests on Linux:

mkdir build
cd build
cmake ..
make
make test ARGS="-V"

Compiling examples

Android

  1. Build AAR (see Compiling).
  2. If you built it with build_aar.sh-script, .aar gets automatically copied to example/android/app/libs.
  3. Open and build example/android with gradle or Android studio.

iOS

  1. Build Yarrar.framework (see Compiling).
  2. Copy Yarrar.framework to example/ios-directory.
  3. Open and build example/ios/yarrarexample.xcodeproj with Xcode.

Windows/Linux

  1. See Quickstart. It will also compile example/desktop_webcam-example by default.

Unity

  1. Compile yarrar.unitypackage (see Compiling).
  2. Open up example/unity in Unity Editor. Basic structure should be set up.
Known issues (Unity)
  • When importing yarrar.unitypackage to Unity on Linux following error might appear:

Multiple plugins with the same name 'libyarrar' (found at 'Assets/yarrar/Plugins/x86_64/libyarrar.so' and 'Assets/yarrar/Plugins/Android/libyarrar.so'). That means one or more plugins are set to be compatible with Editor. Only one plugin at the time can be used by Editor.*

Fix this by deleting yarryar/Plugins/x86_64 if you wish to deploy to Android or yarryar/Plugins/Android if you wish to deploy to Linux.

  • Deploying to Android might fail, if you don't set correct architecture for .so-library. This can be done by selecting libyarrar.so-file from Project-view and setting CPU to ARMv7 from Inspector-window.

yarrar's People

Contributors

ndob avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

yarrar's Issues

Project status ? quick questions ?!

Hi Niki,

Hope you are all well !

Wanted to ask about the status of your project, was it a school project ? why did u stopped the developement of yarrar as it sounds really promising ?

Yarrar would be cool with the following additions:

Dependencies that would have made it easier to finish:

## Distributed Detections on mobile devices:

## Pipeline features:

I stop here as there are many others ^^ , and lots of people are making cool separate AR projects but no cross-platform pipeline available as open source project.

Let me know what was the background of yarrar and did you drop anything related toward AR or Unity3D... ?!

Have a good week !

Cheers,
Richard

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.