aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 90fe5c31b7a74dc2558ac34660f65ce636a83a86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
**ArGaze** is a python toolkit to deal with gaze tracking in Augmented Reality (AR) environment.

The ArGaze toolkit provides solutions to build 3D modeled AR environment based on ArUco markers and so ease experimentation design with wearable eye tracker. Gaze fixations and saccades can be realtime projected on to Areas Of Interest (AOI) onto AR environment for live interactions.  

# Architecture

ArGaze is divided in submodules dedicated to various specifics features:

* `argaze.ArFeatures`: Main classes used to load and manage AR environement assets.
* `argaze.GazeFeatures`: Generic gaze data structures definitions.
* `argaze.GazeAnalysis`: Class interface to work with various gaze analysis algorithms.
* `argaze.ArUcoMarkers`: ArUco markers generator, detector, camera calibration, ...
* `argaze.AreaOfInterest`: Area Of Interest (AOI) scene management for 2D and 3D environment.
* `argaze.TobiiGlassesPro2`: A gaze tracking device interface.
* `argaze.utils`: Collection of command-line high level features scripts based on ArGaze toolkit.

# Installation

Consider that all inline commands below have to be executed into ArGaze root folder.

- Install build tool package: 

```
pip install build
```

- Then, build ArGaze package: 

```
python -m build
```

- Then, install ArGaze package (replace VERSION by what has been built into dist folder):

```
pip install ./dist/argaze-VERSION.whl
```

.. note:: As Argaze library developper
   *You should prefer to install the package in developer mode to test live code changes:*

   ```
   pip install -e .
   ```

# Documentation

## Wiki

The [wiki](https://git.recherche.enac.fr/projects/argaze/wiki) provides many explanations about how works ArGaze, what is possible to do and code samples.

## Cookbook

The `argaze.utils` submodule is a good place to get ready made code examples.

## Code

ArGaze code documentation is based on [pdoc](https://pdoc.dev/).
To generate html documentation: 

- Install 'pdoc' package:

```
pip install pdoc
```

- Then, build documentation into doc folder:

```
pdoc -o ./doc ./src/argaze/ 
```

.. note:: As Argaze library developper
   *You should prefer to create a local html server to watch live documentation changes:*

   ```
   pdoc ./src/argaze/
   ```

# Test

ArGaze package unitary tests are based on [unittest](https://docs.python.org/fr/3.10/library/unittest.html) module.  
Test files tree structure is mirroring the file tree structure of src/argaze folder.

To run all unitary tests:

```
python -m unittest discover ./src/argaze.test "*.py"
```

To run only submodule unitary tests:

```
python -m unittest discover ./src/argaze.test/SUBMODULE "*.py"
```

To run only a single unitary test file from a submodule:

```
python -m unittest discover ./src/argaze.test/SUBMODULE/ TEST_FILE.py
```

.. note:: Verbose mode
   *Use -v option to get more details.*