<commit_before># ARticated
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
Master: [![Build Status](https://travis-ci.org/derpicated/articated.svg?branch=master)](https://travis-ci.org/derpicated/articated)
Devel: [![Build Status](https://travis-ci.org/derpicated/articated.svg?branch=devel)](https://travis-ci.org/derpicated/articated)

An augmented reality application.

![ARticated](./images/application/articated_application.jpg)

This augmented reality application uses ONLY camera images and some fancy math to track markers
across 3D space. It then draws virtual 3D objects as if they were part of reality.

## Developers

This application was developed as an educational project for two
Embedded Systems Engineering students, for their minor in Embedded Vision.
All vision processing, 2D to 3D transformation maths,
and rendering code has been written from scratch by:

-   [<NAME>](https://github.com/idelsink)
-   [<NAME>](https://github.com/Mercotui)

## Usage

Open the application, whether it be on desktop or an android phone,
and point the camera so that at least 3 markers are clearly in view.
Press the largest button to set the current position as reference.
Now you can move the camera around, keeping at least 3 markers in view.

## Markers

The application needs to track at least 3 unique markers to calculate the camera movement, although more can be used.

These markers are loosely defined groups of black dots on a white background.
The markers are identified by their dot count, so these have to be unique.
A minimum of 2 and a maximum of 9 dots are required for a marker to be valid.

See below, the markers can be drawn by hand. This configuration features marker #3, #4, and #5. Make sure to leave plenty of white-space between each marker, so they don't merge together.

![Markers](./images/drawn_markers.jpg)

## Dependencies

### Dekstop

-   Qt 5.7
-   OpenGL 4.1

### Android

-   Qt 5.7
-   OpenGL-ES 3.0
-   Android SDK + NDK

## Tested

Tested on:

-   Ubuntu 14.04.3 LTS ([See Travis-ci](https://travis-ci.org/derpicated/articated))
-   Fedora 24
-   Android 5

## Building

### Desktop

When building this application for desktop, pass the following CMake variables:

-   `Qt5_DIR`: Qt5 path

#### Example


```sh
mkdir build && cd build
cmake .. -DQt5_DIR=/home/user/Qt/5.7/gcc_64/lib/cmake/Qt5
```

### Android

When building this application for Android, pass the following CMake variables:

| Variable            | Type   |
|:--------------------|:-------|
| Qt5_DIR             | PATH   |
| QT_ANDROID_SDK_ROOT | PATH   |
| QT_ANDROID_ANT      | PATH   |
| ANDROID_NDK         | PATH   |
| JAVA_HOME           | PATH   |
| ANDROID             | ON/OFF |

#### Example<commit_msg>add extra android test version<commit_after># ARticated
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
Master: [![Build Status](https://travis-ci.org/derpicated/articated.svg?branch=master)](https://travis-ci.org/derpicated/articated)
Devel: [![Build Status](https://travis-ci.org/derpicated/articated.svg?branch=devel)](https://travis-ci.org/derpicated/articated)

An augmented reality application.

![ARticated](./images/application/articated_application.jpg)

This augmented reality application uses ONLY camera images and some fancy math to track markers
across 3D space. It then draws virtual 3D objects as if they were part of reality.

## Developers

This application was developed as an educational project for two
Embedded Systems Engineering students, for their minor in Embedded Vision.
All vision processing, 2D to 3D transformation maths,
and rendering code has been written from scratch by:

-   [<NAME>](https://github.com/idelsink)
-   [<NAME>](https://github.com/Mercotui)

## Usage

Open the application, whether it be on desktop or an android phone,
and point the camera so that at least 3 markers are clearly in view.
Press the largest button to set the current position as reference.
Now you can move the camera around, keeping at least 3 markers in view.

## Markers

The application needs to track at least 3 unique markers to calculate the camera movement, although more can be used.

These markers are loosely defined groups of black dots on a white background.
The markers are identified by their dot count, so these have to be unique.
A minimum of 2 and a maximum of 9 dots are required for a marker to be valid.

See below, the markers can be drawn by hand. This configuration features marker #3, #4, and #5. Make sure to leave plenty of white-space between each marker, so they don't merge together.

![Markers](./images/drawn_markers.jpg)

## Dependencies

### Dekstop

-   Qt 5.7
-   OpenGL 4.1

### Android

-   Qt 5.7
-   OpenGL-ES 3.0
-   Android SDK + NDK

## Tested

Tested on:

-   Ubuntu 14.04.3 LTS ([See Travis-ci](https://travis-ci.org/derpicated/articated))
-   Fedora 24
-   Android 5.1.1 and 6.0.1

## Building

### Desktop

When building this application for desktop, pass the following CMake variables:

-   `Qt5_DIR`: Qt5 path

#### Example


```sh
mkdir build && cd build
cmake .. -DQt5_DIR=/home/user/Qt/5.7/gcc_64/lib/cmake/Qt5
```

### Android

When building this application for Android, pass the following CMake variables:

| Variable            | Type   |
|:--------------------|:-------|
| Qt5_DIR             | PATH   |
| QT_ANDROID_SDK_ROOT | PATH   |
| QT_ANDROID_ANT      | PATH   |
| ANDROID_NDK         | PATH   |
| JAVA_HOME           | PATH   |
| ANDROID             | ON/OFF |

#### Example
{'fraction_non_alphanumeric': 0.10924824229313142, 'fraction_numerical': 0.014241932576167298, 'mean_word_length': 3.4348521183053555, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 16, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7402540', 'n_tokens_mistral': 1796, 'n_tokens_neox': 1664, 'n_words': 633}