aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThéo de la Hogue2024-04-10 21:01:07 +0200
committerThéo de la Hogue2024-04-10 21:01:07 +0200
commit181278a40c65cb2fef6f643d9e1a56cf272a1725 (patch)
tree4a6f1551ea07ddd3cb24cb3ec60cee23bc42293b
parent5c4e71033a73f460780eb336e12256eb31fc0f4c (diff)
downloadargaze-181278a40c65cb2fef6f643d9e1a56cf272a1725.zip
argaze-181278a40c65cb2fef6f643d9e1a56cf272a1725.tar.gz
argaze-181278a40c65cb2fef6f643d9e1a56cf272a1725.tar.bz2
argaze-181278a40c65cb2fef6f643d9e1a56cf272a1725.tar.xz
Updating aruco markers documentation.
-rw-r--r--.gitignore5
-rw-r--r--docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md23
-rw-r--r--docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md18
-rw-r--r--docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md96
-rw-r--r--docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md160
-rw-r--r--docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md2
-rw-r--r--docs/user_guide/aruco_marker_pipeline/pose_estimation.md78
-rw-r--r--docs/user_guide/utils/demonstrations_scripts.md16
-rw-r--r--src/argaze/utils/demo/opencv_window_context.json (renamed from src/argaze/utils/demo/opencv_window_context_setup.json)1
-rw-r--r--src/argaze/utils/demo/pupillabs_live_stream_context.json (renamed from src/argaze/utils/demo/pupillabs_live_stream_context_setup.json)1
-rw-r--r--src/argaze/utils/demo/tobii_live_stream_context.json (renamed from src/argaze/utils/demo/tobii_live_stream_context_setup.json)1
-rw-r--r--src/argaze/utils/demo/tobii_post_processing_context.json (renamed from src/argaze/utils/demo/tobii_post_processing_context_setup.json)6
12 files changed, 215 insertions, 192 deletions
diff --git a/.gitignore b/.gitignore
index d42c8ae..cf78485 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,8 @@ _venv
_workaround
dist
site
+*.egg-info
+*.blend1
heatmap.png
edited_setup.json
-*.egg-info
-*.blend1 \ No newline at end of file
+tobii_record \ No newline at end of file
diff --git a/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md b/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md
index 410e2d7..7d666ba 100644
--- a/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md
+++ b/docs/user_guide/aruco_marker_pipeline/advanced_topics/aruco_detector_configuration.md
@@ -11,16 +11,19 @@ Here is an extract from the JSON [ArUcoCamera](../../../argaze.md/#argaze.ArUcoM
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- "aruco_detector": {
- "dictionary": "DICT_APRILTAG_16h5",
- "parameters": {
- "adaptiveThreshConstant": 10,
- "useAruco3Detection": 1
- }
- },
- ...
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ "aruco_detector": {
+ "dictionary": "DICT_APRILTAG_16h5",
+ "parameters": {
+ "adaptiveThreshConstant": 10,
+ "useAruco3Detection": 1
+ }
+ },
+ ...
+ }
+}
```
## Print ArUcoDetector parameters
diff --git a/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md b/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md
index 4a2f9ba..c9a06a6 100644
--- a/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md
+++ b/docs/user_guide/aruco_marker_pipeline/advanced_topics/scripting.md
@@ -6,11 +6,15 @@ This could be particularly useful for realtime AR interaction applications.
## Load ArUcoCamera configuration from dictionary
-First of all, [ArUcoCamera](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration can be loaded from a python dictionary.
+An [ArUcoCamera](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration can be loaded from a Python dictionary.
```python
+from argaze import DataFeatures
from argaze.ArUcoMarkers import ArUcoCamera
+# Set working directory to enable relative file path loading
+DataFeatures.set_working_directory('path/to/folder')
+
# Edit a dict with ArUcoCamera configuration
configuration = {
"name": "My FullHD camera",
@@ -47,10 +51,10 @@ configuration = {
}
# Load ArUcoCamera
-aruco_camera = ArUcoCamera.ArUcoCamera.from_dict(configuration)
+with ArUcoCamera.ArUcoCamera(**configuration) as aruco_camera:
-# Do something with ArUcoCamera
-...
+ # Do something with ArUcoCamera
+ ...
```
## Access to ArUcoCamera and ArScenes attributes
@@ -65,9 +69,9 @@ from argaze import ArFeatures
# Assuming the ArUcoCamera is loaded
...
-# Iterate over each ArUcoCamera scene
-for name, aruco_scene in aruco_camera.scenes.items():
- ...
+ # Iterate over each ArUcoCamera scene
+ for name, aruco_scene in aruco_camera.scenes.items():
+ ...
```
## Pipeline execution outputs
diff --git a/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md b/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md
index 124d8df..c4514f5 100644
--- a/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md
+++ b/docs/user_guide/aruco_marker_pipeline/aoi_3d_frame.md
@@ -13,63 +13,65 @@ Here is the previous extract where "Left_Screen" and "Right_Screen" AOI are defi
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- ...
- "scenes": {
- "MyScene" : {
- "aruco_markers_group": {
- ...
- },
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- "Left_Screen": [[0, 0, 0], [15, 0, 0], [0, 18.963333, -6.355470], [15, 18.963333, -6.355470]],
- "Right_Screen": [[20, 0, 0], [35, 0, 0], [20, 18.963337 ,-6.355472], [35, 18.963337, -6.355472]],
- "Control_Panel": [[49.5, 30, 18.333333], [55.5, 30, 18.333333], [49.5, 38, 18.333333], [55.5, 38, 18.333333]],
- "Window": [[-57.8, 5.5, -33.5], [46, 15.5, -35], [1.5, 53, -1], [50.2, 61, 6], [-35.85, 35, -15]]
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ ...
+ "scenes": {
+ "MyScene" : {
+ "aruco_markers_group": {
+ ...
+ },
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ "Left_Screen": [[0, 0, 0], [15, 0, 0], [0, 18.963333, -6.355470], [15, 18.963333, -6.355470]],
+ "Right_Screen": [[20, 0, 0], [35, 0, 0], [20, 18.963337 ,-6.355472], [35, 18.963337, -6.355472]],
+ "Control_Panel": [[49.5, 30, 18.333333], [55.5, 30, 18.333333], [49.5, 38, 18.333333], [55.5, 38, 18.333333]],
+ "Window": [[-57.8, 5.5, -33.5], [46, 15.5, -35], [1.5, 53, -1], [50.2, 61, 6], [-35.85, 35, -15]]
+ }
}
- }
- },
- "frames": {
- "Left_Screen": {
- "size": [768, 1024],
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- "LeftPanel": {
- "Rectangle": {
- "x": 0,
- "y": 0,
- "width": 768,
- "height": 180
- }
- },
- "CircularWidget": {
- "Circle": {
- "cx": 384,
- "cy": 600,
- "radius": 180
+ },
+ "frames": {
+ "Left_Screen": {
+ "size": [768, 1024],
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ "LeftPanel": {
+ "Rectangle": {
+ "x": 0,
+ "y": 0,
+ "width": 768,
+ "height": 180
+ }
+ },
+ "CircularWidget": {
+ "Circle": {
+ "cx": 384,
+ "cy": 600,
+ "radius": 180
+ }
}
}
- }
- }
- }
- },
- "Right_Screen": {
- "size": [768, 1024],
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- "GeoSector": [[724, 421], [537, 658], [577, 812], [230, 784], [70, 700], [44, 533], [190, 254], [537, 212]]
+ }
+ }
+ },
+ "Right_Screen": {
+ "size": [768, 1024],
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ "GeoSector": [[724, 421], [537, 658], [577, 812], [230, 784], [70, 700], [44, 533], [190, 254], [537, 212]]
+ }
}
}
}
}
}
}
+ ...
}
- ...
}
```
Now, let's understand the meaning of each JSON entry.
diff --git a/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md b/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md
index c004e7f..306e26a 100644
--- a/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md
+++ b/docs/user_guide/aruco_marker_pipeline/aoi_3d_projection.md
@@ -13,27 +13,29 @@ Here is the previous extract where one layer is added to [ArUcoScene](../../arga
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- ...
- "scenes": {
- "MyScene" : {
- "aruco_markers_group": {
- ...
- },
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- "Left_Screen": [[0, 0, 0], [15, 0, 0], [0, 18.963333, -6.355470], [15, 18.963333, -6.355470]],
- "Right_Screen": [[20, 0, 0], [35, 0, 0], [20, 18.963337, -6.355472], [35, 18.963337, -6.355472]],
- "Control_Panel": [[49.5, 30, 18.333333], [55.5, 30, 18.333333], [49.5, 38, 18.333333], [55.5, 38, 18.333333]],
- "Window": [[-57.8, 5.5, -33.5], [46, 15.5, -35], [1.5, 53, -1], [50.2, 61, 6], [-35.85, 35, -15]]
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ ...
+ "scenes": {
+ "MyScene" : {
+ "aruco_markers_group": {
+ ...
+ },
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ "Left_Screen": [[0, 0, 0], [15, 0, 0], [0, 18.963333, -6.355470], [15, 18.963333, -6.355470]],
+ "Right_Screen": [[20, 0, 0], [35, 0, 0], [20, 18.963337, -6.355472], [35, 18.963337, -6.355472]],
+ "Control_Panel": [[49.5, 30, 18.333333], [55.5, 30, 18.333333], [49.5, 38, 18.333333], [55.5, 38, 18.333333]],
+ "Window": [[-57.8, 5.5, -33.5], [46, 15.5, -35], [1.5, 53, -1], [50.2, 61, 6], [-35.85, 35, -15]]
+ }
}
- }
- }
+ }
+ }
}
+ ...
}
- ...
}
```
@@ -57,35 +59,37 @@ Here is the previous extract where one layer is added to [ArUcoCamera](../../arg
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- ...
- "scenes": {
- "MyScene" : {
- "aruco_markers_group": {
- ...
- },
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- ...
- }
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ ...
+ "scenes": {
+ "MyScene" : {
+ "aruco_markers_group": {
+ ...
+ },
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ ...
+ }
+ }
}
- }
+ }
+ },
+ "layers": {
+ "MyLayer": {}
}
- },
- "layers": {
- "MyLayer": {}
- }
- ...
- "image_parameters": {
...
- "draw_layers": {
- "MyLayer": {
- "draw_aoi_scene": {
- "draw_aoi": {
- "color": [255, 255, 255],
- "border_size": 1
+ "image_parameters": {
+ ...
+ "draw_layers": {
+ "MyLayer": {
+ "draw_aoi_scene": {
+ "draw_aoi": {
+ "color": [255, 255, 255],
+ "border_size": 1
+ }
}
}
}
@@ -122,44 +126,46 @@ Here is the previous extract where AOI matcher, AOI scan path and AOI scan path
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- ...
- "scenes": {
- "MyScene" : {
- "aruco_markers_group": {
- ...
- },
- "layers": {
- "MyLayer": {
- "aoi_scene": {
- ...
- }
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ ...
+ "scenes": {
+ "MyScene" : {
+ "aruco_markers_group": {
+ ...
+ },
+ "layers": {
+ "MyLayer": {
+ "aoi_scene": {
+ ...
+ }
+ }
}
- }
- }
- },
- "layers": {
- "MyLayer": {
- "aoi_matcher": {
- "DeviationCircleCoverage": {
- "coverage_threshold": 0.5
- }
- },
- "aoi_scan_path": {
- "duration_max": 30000
- },
- "aoi_scan_path_analyzers": {
- "Basic": {},
- "TransitionMatrix": {},
- "NGram": {
- "n_min": 3,
- "n_max": 5
+ }
+ },
+ "layers": {
+ "MyLayer": {
+ "aoi_matcher": {
+ "argaze.GazeAnalysis.DeviationCircleCoverage.AOIMatcher": {
+ "coverage_threshold": 0.5
+ }
+ },
+ "aoi_scan_path": {
+ "duration_max": 30000
+ },
+ "aoi_scan_path_analyzers": {
+ "argaze.GazeAnalysis.Basic.AOIScanPathAnalyzer": {},
+ "argaze.GazeAnalysis.TransitionMatrix.AOIScanPathAnalyzer": {},
+ "argaze.GazeAnalysis.NGram.AOIScanPathAnalyzer": {
+ "n_min": 3,
+ "n_max": 5
+ }
}
}
}
+ ...
}
- ...
}
```
diff --git a/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md b/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md
index d5672ea..84877ca 100644
--- a/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md
+++ b/docs/user_guide/aruco_marker_pipeline/configuration_and_execution.md
@@ -22,7 +22,7 @@ Here is a simple JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCa
"dictionary": "DICT_APRILTAG_16h5"
},
"gaze_movement_identifier": {
- "DispersionThresholdIdentification": {
+ "argaze.GazeAnalysis.DispersionThresholdIdentification.GazeMovementIdentifier": {
"deviation_max_threshold": 25,
"duration_min_threshold": 150
}
diff --git a/docs/user_guide/aruco_marker_pipeline/pose_estimation.md b/docs/user_guide/aruco_marker_pipeline/pose_estimation.md
index c684f60..affa232 100644
--- a/docs/user_guide/aruco_marker_pipeline/pose_estimation.md
+++ b/docs/user_guide/aruco_marker_pipeline/pose_estimation.md
@@ -13,46 +13,48 @@ Here is an extract from the JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMark
```json
{
- "name": "My FullHD camera",
- "size": [1920, 1080],
- ...
- "scenes": {
- "MyScene" : {
- "aruco_markers_group": {
- "dictionary": "DICT_APRILTAG_16h5",
- "places": {
- "0": {
- "translation": [17.5, 2.75, -0.5],
- "rotation": [-18.5, 0, 0],
- "size": 5
- },
- "1": {
- "translation": [46, 34, 18.333],
- "rotation": [0, 70, 0],
- "size": 5
- },
- "2": {
- "translation": [41, 4, 3.333],
- "rotation": [-60, 0, 0],
- "size": 5
+ "argaze.ArUcoMarkers.ArUcoCamera.ArUcoCamera": {
+ "name": "My FullHD camera",
+ "size": [1920, 1080],
+ ...
+ "scenes": {
+ "MyScene" : {
+ "aruco_markers_group": {
+ "dictionary": "DICT_APRILTAG_16h5",
+ "places": {
+ "0": {
+ "translation": [17.5, 2.75, -0.5],
+ "rotation": [-18.5, 0, 0],
+ "size": 5
+ },
+ "1": {
+ "translation": [46, 34, 18.333],
+ "rotation": [0, 70, 0],
+ "size": 5
+ },
+ "2": {
+ "translation": [41, 4, 3.333],
+ "rotation": [-60, 0, 0],
+ "size": 5
+ }
}
- }
- }
- }
- },
- ...
- "image_parameters": {
+ }
+ }
+ },
...
- "draw_scenes": {
- "MyScene": {
- "draw_aruco_markers_group": {
- "draw_axes": {
- "thickness": 3,
- "length": 10
- },
- "draw_places": {
- "color": [0, 0, 0],
- "border_size": 1
+ "image_parameters": {
+ ...
+ "draw_scenes": {
+ "MyScene": {
+ "draw_aruco_markers_group": {
+ "draw_axes": {
+ "thickness": 3,
+ "length": 10
+ },
+ "draw_places": {
+ "color": [0, 0, 0],
+ "border_size": 1
+ }
}
}
}
diff --git a/docs/user_guide/utils/demonstrations_scripts.md b/docs/user_guide/utils/demonstrations_scripts.md
index a162a49..16b209f 100644
--- a/docs/user_guide/utils/demonstrations_scripts.md
+++ b/docs/user_guide/utils/demonstrations_scripts.md
@@ -14,16 +14,16 @@ Collection of command-line scripts for demonstration purpose.
Load ArFrame with a single ArLayer from **demo_gaze_analysis_setup.json** file then, simulate gaze position using mouse pointer to illustrate gaze features.
```shell
-python -m argaze ./src/argaze/utils/demo/opencv_window_context_setup.json
+python -m argaze ./src/argaze/utils/demo/opencv_window_context.json
```
## Tobii Pro Glasses 2
### Tobii live stream context
!!! note
- this demonstration requires to print **A3_demo.pdf** file located in *./src/argaze/utils/demo_data/* folder on A3 paper sheet.
+ this demonstration requires to print **A3_demo.pdf** file located in *./src/argaze/utils/demo/* folder on A3 paper sheet.
-Edit **tobii_live_stream_context_setup.json** file as below with your own parameters values:
+Edit **tobii_live_stream_context.json** file as below with your own parameters values:
```json
{
@@ -42,6 +42,7 @@ Edit **tobii_live_stream_context_setup.json** file as below with your own parame
"sys_mems_freq": 100
},
"pipeline": "aruco_markers_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_times": true,
"draw_exceptions": true
@@ -53,15 +54,15 @@ Edit **tobii_live_stream_context_setup.json** file as below with your own parame
Then, execute this command:
```shell
-python -m argaze ./src/argaze/utils/demo/tobii_live_stream_context_setup.json
+python -m argaze ./src/argaze/utils/demo/tobii_live_stream_context.json
```
### Tobii post-processing context
!!! note
- this demonstration requires to print **A3_demo.pdf** file located in *./src/argaze/utils/demo_data/* folder on A3 paper sheet.
+ this demonstration requires to print **A3_demo.pdf** file located in *./src/argaze/utils/demo/* folder on A3 paper sheet.
-Edit **tobii_post_processing_context_setup.json** file as below with your own parameters values:
+Edit **tobii_post_processing_context.json** file as below with your own parameters values:
```json
{
@@ -69,6 +70,7 @@ Edit **tobii_post_processing_context_setup.json** file as below with your own pa
"name": "Tobii Pro Glasses 2 post-processing",
"segment": "record/segments/1",
"pipeline": "aruco_markers_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_times": true,
"draw_exceptions": true
@@ -80,5 +82,5 @@ Edit **tobii_post_processing_context_setup.json** file as below with your own pa
Then, execute this command:
```shell
-python -m argaze ./src/argaze/utils/demo/tobii_post_processing_context_setup.json
+python -m argaze ./src/argaze/utils/demo/tobii_post_processing_context.json
```
diff --git a/src/argaze/utils/demo/opencv_window_context_setup.json b/src/argaze/utils/demo/opencv_window_context.json
index da7dc78..d10ac01 100644
--- a/src/argaze/utils/demo/opencv_window_context_setup.json
+++ b/src/argaze/utils/demo/opencv_window_context.json
@@ -2,6 +2,7 @@
"argaze.utils.contexts.OpenCV.Window" : {
"name": "OpenCV Window",
"pipeline": "gaze_analysis_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_times": true,
"draw_exceptions": true
diff --git a/src/argaze/utils/demo/pupillabs_live_stream_context_setup.json b/src/argaze/utils/demo/pupillabs_live_stream_context.json
index 3837a19..df1e988 100644
--- a/src/argaze/utils/demo/pupillabs_live_stream_context_setup.json
+++ b/src/argaze/utils/demo/pupillabs_live_stream_context.json
@@ -2,6 +2,7 @@
"argaze.utils.contexts.PupilLabs.LiveStream" : {
"name": "PupilLabs",
"pipeline": "aruco_markers_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_times": true,
"draw_exceptions": true
diff --git a/src/argaze/utils/demo/tobii_live_stream_context_setup.json b/src/argaze/utils/demo/tobii_live_stream_context.json
index 275d77f..db021de 100644
--- a/src/argaze/utils/demo/tobii_live_stream_context_setup.json
+++ b/src/argaze/utils/demo/tobii_live_stream_context.json
@@ -14,6 +14,7 @@
"sys_mems_freq": 100
},
"pipeline": "aruco_markers_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_something": false,
"draw_times": true,
diff --git a/src/argaze/utils/demo/tobii_post_processing_context_setup.json b/src/argaze/utils/demo/tobii_post_processing_context.json
index 9225fca..fc05541 100644
--- a/src/argaze/utils/demo/tobii_post_processing_context_setup.json
+++ b/src/argaze/utils/demo/tobii_post_processing_context.json
@@ -1,9 +1,9 @@
{
"argaze.utils.contexts.TobiiProGlasses2.PostProcessing" : {
"name": "Tobii Pro Glasses 2 post-processing",
- "segment": "/Users/robotron/Developpements/ArGaze/_projects/PFE/data/4rcbdzk/segments/1",
- "debug": false,
- "pipeline": "/Users/robotron/Developpements/ArGaze/_projects/PFE/configuration.json",
+ "segment": "./src/argaze/utils/demo/tobii_record/segments/1",
+ "pipeline": "aruco_markers_pipeline.json",
+ "catch_exceptions": true,
"image_parameters": {
"draw_times": true,
"draw_exceptions": true