From 5a2f3b420303db6df3f9e68abcfb9bb937b6ccd7 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Wed, 6 Sep 2023 17:50:31 +0200 Subject: More work on ArUco markers pipeline documentation. --- .../aruco_camera_configuration_and_execution.md | 28 +++++------ .../aruco_markers_pipeline/aruco_scene.md | 56 ++++++++++++++++++++++ .../aruco_markers_pipeline/introduction.md | 4 +- 3 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 docs/user_guide/aruco_markers_pipeline/aruco_scene.md (limited to 'docs/user_guide/aruco_markers_pipeline') diff --git a/docs/user_guide/aruco_markers_pipeline/aruco_camera_configuration_and_execution.md b/docs/user_guide/aruco_markers_pipeline/aruco_camera_configuration_and_execution.md index 9b1db42..7b30fd1 100644 --- a/docs/user_guide/aruco_markers_pipeline/aruco_camera_configuration_and_execution.md +++ b/docs/user_guide/aruco_markers_pipeline/aruco_camera_configuration_and_execution.md @@ -3,7 +3,7 @@ Configure and execute ArUcoCamera Once [ArUco markers are placed into a scene](aruco_scene_creation.md) and [the camera optic have been calibrated](optic_parameters_calibration.md), everything is ready to setup an ArUco marker pipeline thanks to [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) class. -As it inherits from [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame), the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) class benefits from all the services of a [gaze analysis pipeline](./user_guide/gaze_analysis_pipeline/introduction.md). Besides, the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) class projects [ArUcoScenes](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene)'s layers into its own layers thanks to ArUco markers pose estimations made by its [ArUcoDetector](../../argaze.md/#argaze.ArUcoMarkers.ArUcoDetector). +As it inherits from [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame), the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) class benefits from all the services described in [gaze analysis pipeline section](./user_guide/gaze_analysis_pipeline/introduction.md). ![ArUco camera frame](../../img/aruco_camera_frame.png) @@ -11,24 +11,17 @@ As it inherits from [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame), the [ The [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) internal pipeline loads from a JSON configuration file thanks to [ArUcoCamera.from_json](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera.from_json) class method. -Here is a simple JSON ArUcoCamera configuration file example: +Here is a simple JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration file example: ```json { "name": "My FullHD camera", "size": [1920, 1080], "aruco_detector": { - "dictionary": { - "name": "DICT_APRILTAG_16h5" - }, + "dictionary": "DICT_APRILTAG_16h5", "marker_size": 5, "optic_parameters": "optic_parameters.json", }, - "scenes": { - "main_scene" : { - "aruco_markers_group": "aruco_description.json" - } - }, "image_parameters": { "background_weight": 1, "draw_detected_markers": { @@ -52,21 +45,22 @@ aruco_camera = ArUcoCamera.ArUcoCamera.from_json('./configuration.json') Now, let's understand the meaning of each JSON entry. -### Name (inherited from ArFrame) +### Name - *inherited from [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame)* The name of the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) frame. Basically useful for visualisation purpose. -### Size (inherited from ArFrame) +### Size - *inherited from [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame)* -The size of the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) frame in pixels. Be aware that gaze positions have to be in the same range of value. +The size of the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) frame in pixels. Be aware that gaze positions have to be in the same range of value to be projected in. -### ArUco detector +### ArUco Detector -... +The first [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) pipeline step is to detect ArUco markers inside input image. -### Scenes +The [ArUcoDetector](../../argaze.md/#argaze.ArUcoMarkers.ArUcoDetector) is in charge to detect ... -... +!!! warning + JSON *aruco_detector* entry is mandatory. ### Image parameters (inherited from ArFrame) diff --git a/docs/user_guide/aruco_markers_pipeline/aruco_scene.md b/docs/user_guide/aruco_markers_pipeline/aruco_scene.md new file mode 100644 index 0000000..2f37fa7 --- /dev/null +++ b/docs/user_guide/aruco_markers_pipeline/aruco_scene.md @@ -0,0 +1,56 @@ +Add an ArUcoScene +================= + +An [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) class defines ... + +Besides, the [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) class projects [ArUcoScenes](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene)'s layers into its own layers thanks to ArUco markers pose estimations made by its [ArUcoDetector](../../argaze.md/#argaze.ArUcoMarkers.ArUcoDetector). + +![ArUco scene](../../img/aruco_scene.png) + +## Add ArUcoScene to ArUcoCamera JSON configuration file + +An [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) instance can contains multiples [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene). + +Here is an extract from the JSON ArUcoCamera configuration file with a sample where one scene is added: + +```json +{ + "name": "My FullHD camera", + "size": [1920, 1080], + ... + "scenes": { + "MyScene" : { + "aruco_markers_group": "aruco_description.json" + }, + "layers": { + "MyLayer": { + "aoi_scene": "aoi_description.obj" + } + } + }, + "layers": { + "MyLayer": {} + } + ... +} +``` + +Now, let's understand the meaning of each JSON entry. + +### "MyLayer" + +The name of the [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene). Basically useful for visualisation purpose. + +### ArUco markers group + +... + +### Layers + +... + +### AOI scene + +The [AOIScene](../../argaze.md/#argaze.AreaOfInterest.AOIFeatures.AOIScene) defines a set of 2D [AreaOfInterest](../../argaze.md/#argaze.AreaOfInterest.AOIFeatures.AreaOfInterest) registered by name. + +![AOI Scene](../../img/ar_layer_aoi_scene.png) diff --git a/docs/user_guide/aruco_markers_pipeline/introduction.md b/docs/user_guide/aruco_markers_pipeline/introduction.md index ae174f3..77b93a2 100644 --- a/docs/user_guide/aruco_markers_pipeline/introduction.md +++ b/docs/user_guide/aruco_markers_pipeline/introduction.md @@ -18,8 +18,8 @@ To build your own ArUco markers pipeline, you need to know: * [How to setup ArUco markers into a scene](aruco_markers_description.md), * [How to calibrate optic parameters](optic_parameters_calibration.md), * [How to deal with an ArUcoCamera instance](aruco_camera_configuration_and_execution.md), -* [How to add ArScene instance](ar_scene.md), -* [How to visualize ArCamera and ArScenes](visualisation.md) +* [How to add ArLayer instance](ar_layer.md), +* [How to visualize ArUcoCamera and ArLayers](visualisation.md) More advanced features are also explained like: -- cgit v1.1