From 2f65eeb2ed01d27817c42122c5284c9d5e608753 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Thu, 23 Nov 2023 02:27:59 +0100 Subject: Refactoring aruco markers pipeline illustrations. --- docs/img/aoi_3d_description.png | Bin 16928 -> 18836 bytes docs/img/aruco_camera_aoi_frame.png | Bin 49405 -> 29756 bytes docs/img/aruco_camera_aoi_projection.png | Bin 37858 -> 23343 bytes docs/img/aruco_camera_frame.png | Bin 31515 -> 16033 bytes .../aruco_camera_gaze_movement_identification.png | Bin 36834 -> 19449 bytes docs/img/aruco_camera_markers_detection.png | Bin 34318 -> 18927 bytes docs/img/aruco_camera_pose_estimation.png | Bin 34695 -> 19171 bytes docs/img/aruco_markers_description.png | Bin 16455 -> 15645 bytes docs/img/aruco_markers_pipeline.png | Bin 0 -> 86582 bytes docs/img/gaze_analysis_pipeline.png | Bin 100908 -> 92777 bytes docs/img/scene.png | Bin 41117 -> 25098 bytes .../aruco_markers_pipeline/aoi_3d_description.md | 41 +++++++++++++------- .../aruco_markers_pipeline/aoi_3d_frame.md | 35 +++++++++++------ .../aruco_markers_pipeline/aoi_3d_projection.md | 6 ++- .../aruco_markers_description.md | 42 ++++++++++----------- .../aruco_markers_pipeline/introduction.md | 4 +- .../aruco_markers_pipeline/pose_estimation.md | 10 ++--- 17 files changed, 83 insertions(+), 55 deletions(-) create mode 100644 docs/img/aruco_markers_pipeline.png diff --git a/docs/img/aoi_3d_description.png b/docs/img/aoi_3d_description.png index caf7efc..74d73f9 100644 Binary files a/docs/img/aoi_3d_description.png and b/docs/img/aoi_3d_description.png differ diff --git a/docs/img/aruco_camera_aoi_frame.png b/docs/img/aruco_camera_aoi_frame.png index f21cc8d..b05a9e0 100644 Binary files a/docs/img/aruco_camera_aoi_frame.png and b/docs/img/aruco_camera_aoi_frame.png differ diff --git a/docs/img/aruco_camera_aoi_projection.png b/docs/img/aruco_camera_aoi_projection.png index df1ec4c..a0794d9 100644 Binary files a/docs/img/aruco_camera_aoi_projection.png and b/docs/img/aruco_camera_aoi_projection.png differ diff --git a/docs/img/aruco_camera_frame.png b/docs/img/aruco_camera_frame.png index 0825f18..b92ee2a 100644 Binary files a/docs/img/aruco_camera_frame.png and b/docs/img/aruco_camera_frame.png differ diff --git a/docs/img/aruco_camera_gaze_movement_identification.png b/docs/img/aruco_camera_gaze_movement_identification.png index 34cc74f..620dc21 100644 Binary files a/docs/img/aruco_camera_gaze_movement_identification.png and b/docs/img/aruco_camera_gaze_movement_identification.png differ diff --git a/docs/img/aruco_camera_markers_detection.png b/docs/img/aruco_camera_markers_detection.png index 4066662..38c22cf 100644 Binary files a/docs/img/aruco_camera_markers_detection.png and b/docs/img/aruco_camera_markers_detection.png differ diff --git a/docs/img/aruco_camera_pose_estimation.png b/docs/img/aruco_camera_pose_estimation.png index ebc1993..833fb34 100644 Binary files a/docs/img/aruco_camera_pose_estimation.png and b/docs/img/aruco_camera_pose_estimation.png differ diff --git a/docs/img/aruco_markers_description.png b/docs/img/aruco_markers_description.png index d7c139c..f6adc35 100644 Binary files a/docs/img/aruco_markers_description.png and b/docs/img/aruco_markers_description.png differ diff --git a/docs/img/aruco_markers_pipeline.png b/docs/img/aruco_markers_pipeline.png new file mode 100644 index 0000000..4872e25 Binary files /dev/null and b/docs/img/aruco_markers_pipeline.png differ diff --git a/docs/img/gaze_analysis_pipeline.png b/docs/img/gaze_analysis_pipeline.png index 42b8630..314c0cc 100644 Binary files a/docs/img/gaze_analysis_pipeline.png and b/docs/img/gaze_analysis_pipeline.png differ diff --git a/docs/img/scene.png b/docs/img/scene.png index e7edd88..097d8f6 100644 Binary files a/docs/img/scene.png and b/docs/img/scene.png differ diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md b/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md index b02bc9e..4228ce7 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md +++ b/docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md @@ -3,7 +3,7 @@ Describe 3D AOI Now [scene pose is estimated](aruco_markers_description.md) thanks to ArUco markers description, [areas of interest (AOI)](../../argaze.md/#argaze.AreaOfInterest.AOIFeatures.AreaOfInterest) need to be described into the same 3D referential. -In the example scene, the screen and the sheet are considered as areas of interest. +In the example scene, the two screens, the control panel and the window are considered as areas of interest. ![3D AOI description](../../img/aoi_3d_description.png) @@ -21,18 +21,31 @@ All AOI need to be described from same origin than markers in a [right-handed 3D OBJ file format could be exported from most 3D editors. ``` obj -o Sheet -v 14.200000 -3.000000 28.350000 -v 35.200000 -3.000000 28.350000 -v 14.200000 -3.000000 -1.35 -v 35.200000 -3.000000 -1.35 +o Left_Screen +v 0.000000 -0.000000 -0.000000 +v 15.000000 -0.000000 -0.000000 +v 0.000000 18.963333 -6.355470 +v 15.000000 18.963333 -6.355470 f 1 2 4 3 -o Screen -v 2.750000 2.900000 -0.500000 -v 49.250000 2.900000 -0.500000 -v 2.750000 29.100000 -0.500000 -v 49.250000 29.100000 -0.500000 +o Right_Screen +v 20.000000 0.000000 -0.000000 +v 35.000000 0.000000 -0.000000 +v 20.000000 18.963337 -6.355472 +v 35.000000 18.963337 -6.355472 f 5 6 8 7 +o Control_Panel +v 49.500000 30.000000 18.333333 +v 55.500000 30.000000 18.333333 +v 49.500000 38.000000 18.333333 +v 55.500000 38.000000 18.333333 +f 9 10 12 11 +o Window +v -57.800000 5.500000 -33.500000 +v 46.000000 15.500000 -35.000000 +v 1.500000 53.000000 -1.000000 +v 50.200000 61.000000 6.000000 +v -35.850000 35.000000 -15.000000 +f 13 14 16 15 17 ``` Here are common OBJ file features needed to describe AOI: @@ -47,7 +60,9 @@ JSON file format allows to describe AOI vertices. ``` json { - "Sheet": [[14.2, -3, 28.35], [35.2, -3, 28.35], [14.2, -3, -1.35], [35.2, -3, -1.35]], - "Screen": [[2.75, 2.9, -0.5], [49.25, 2.9, -0.5], [2.75, 29.1, -0.5], [49.25, 29.1, -0.5]] + "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]] } ``` diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md b/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md index f1ae1f6..eb3452f 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md +++ b/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md @@ -9,7 +9,7 @@ When an 3D AOI of the scene contains others coplanar 3D AOI, like a screen with The [ArFrame](../../argaze.md/#argaze.ArFeatures.ArFrame) class defines a rectangular area where timestamped gaze positions are projected in and inside which they need to be analyzed. -Here is the previous extract where "Screen" AOI is defined as a frame into [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) configuration: +Here is the previous extract where "Left_Screen" and "Right_Screen" AOI are defined as a frame into [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) configuration: ```json { @@ -24,37 +24,48 @@ Here is the previous extract where "Screen" AOI is defined as a frame into [ArUc "layers": { "MyLayer": { "aoi_scene": { - "Sheet": [[14.2, -3, 28.35], [35.2, -3, 28.35], [14.2, -3, -1.35], [35.2, -3, -1.35]], - "Screen": [[2.75, 2.9, -0.5], [49.25, 2.9, -0.5], [2.75, 29.1, -0.5], [49.25, 29.1, -0.5]] + "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": { - "Screen": { - "size": [1920, 1080], + "Left_Screen": { + "size": [768, 1024], "layers": { "MyLayer": { "aoi_scene": { - "GeoSector": [[860, 160], [1380, 100], [1660, 400], [1380, 740], [1440, 960], [920, 920], [680, 800], [640, 560]], "LeftPanel": { "Rectangle": { "x": 0, "y": 0, - "width": 350, - "height": 1080 + "width": 768, + "height": 180 } }, "CircularWidget": { "Circle": { - "cx": 1800, - "cy": 120, - "radius": 80 + "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]] + } + } + } + } } } } diff --git a/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md b/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md index 8c7310b..370a2ed 100644 --- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md +++ b/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md @@ -24,8 +24,10 @@ Here is the previous extract where one layer is added to [ArUcoScene](../../arga "layers": { "MyLayer": { "aoi_scene": { - "Sheet": [[14.2, -3, 28.35], [35.2, -3, 28.35], [14.2, -3, -1.35], [35.2, -3, -1.35]], - "Screen": [[2.75, 2.9, -0.5], [49.25, 2.9, -0.5], [2.75, 29.1, -0.5], [49.25, 29.1, -0.5]] + "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]] } } } diff --git a/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md b/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md index 6380f88..ebbeec7 100644 --- a/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md +++ b/docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md @@ -3,7 +3,7 @@ Set up ArUco markers First of all, ArUco markers needs to be printed and placed into the scene. -Here is an example scene where markers are surrounding a workspace with a screen and a sheet on the table (considering the sheet stays static for the moment). +Here is an example scene where markers are surrounding a workspace with two screens, a control panel and a window. ![Scene](../../img/scene.png) @@ -61,23 +61,23 @@ OBJ file format could be exported from most 3D editors. ``` obj o DICT_APRILTAG_16h5#0_Marker -v 0.000000 0.000000 0.000000 -v 5.000000 0.000000 0.000000 -v 0.000000 5.000000 0.000000 -v 5.000000 5.000000 0.000000 -f 1//1 2//1 4//1 3//1 +v 15.000000 0.378741 0.330527 +v 20.000000 0.378741 0.330527 +v 15.000000 5.120359 -1.255996 +v 20.000000 5.120359 -1.255996 +f 1 2 4 3 o DICT_APRILTAG_16h5#1_Marker -v -0.855050 24.000002 4.349232 -v 0.855050 24.000002 -0.349231 -v -0.855050 29.000002 4.349232 -v 0.855050 29.000002 -0.349231 -f 5//2 6//2 8//2 7//2 +v 43.500000 31.428055 18.333317 +v 48.500000 31.428055 18.333317 +v 43.500000 36.428055 18.333317 +v 48.500000 36.428055 18.333317 +f 5 6 8 7 o DICT_APRILTAG_16h5#2_Marker -v 44.000000 0.000000 9.500000 -v 49.000000 0.000000 9.500000 -v 44.000000 -0.000000 4.500000 -v 49.000000 -0.000000 4.500000 -f 9//3 10//3 12//3 11//3 +v 38.500000 2.678055 5.498381 +v 43.500000 2.678055 5.498381 +v 38.500000 5.178055 1.168253 +v 43.500000 5.178055 1.168253 +f 9 10 12 11 ``` Here are common OBJ file features needed to describe ArUco markers places: @@ -99,16 +99,16 @@ JSON file format allows to describe markers places using translation and euler a "marker_size": 5, "places": { "0": { - "translation": [2.5, 2.5, 0], - "rotation": [0, 0, 0] + "translation": [17.5, 2.75, -0.5], + "rotation": [-18.5, 0, 0] }, "1": { - "translation": [0, 26.5, 2], + "translation": [46, 34, 18.333], "rotation": [0, 70, 0] }, "2": { - "translation": [46.5, 0, 7], - "rotation": [-90, 0, 0] + "translation": [41, 4, 3.333], + "rotation": [-60, 0, 0] } } } diff --git a/docs/user_guide/aruco_markers_pipeline/introduction.md b/docs/user_guide/aruco_markers_pipeline/introduction.md index 37ab055..94370f4 100644 --- a/docs/user_guide/aruco_markers_pipeline/introduction.md +++ b/docs/user_guide/aruco_markers_pipeline/introduction.md @@ -9,9 +9,9 @@ The OpenCV library provides a module to detect fiducial markers into a picture a The ArGaze [ArUcoMarkers submodule](../../argaze.md/#argaze.ArUcoMarkers) eases markers creation, markers detection and 3D scene pose estimation through a set of high level classes. - +First, let's look at the schema below: it gives an overview of the main notions involved in the following chapters. - +![ArUco markers pipeline](../../img/aruco_markers_pipeline.png) To build your own ArUco markers pipeline, you need to know: diff --git a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md b/docs/user_guide/aruco_markers_pipeline/pose_estimation.md index 6b58b24..853c4a8 100644 --- a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md +++ b/docs/user_guide/aruco_markers_pipeline/pose_estimation.md @@ -23,16 +23,16 @@ Here is an extract from the JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMark "marker_size": 5, "places": { "0": { - "translation": [2.5, 2.5, 0], - "rotation": [0, 0, 0] + "translation": [17.5, 2.75, -0.5], + "rotation": [-18.5, 0, 0] }, "1": { - "translation": [0, 26.5, 2], + "translation": [46, 34, 18.333], "rotation": [0, 70, 0] }, "2": { - "translation": [46.5, 0, 7], - "rotation": [-90, 0, 0] + "translation": [41, 4, 3.333], + "rotation": [-60, 0, 0] } } } -- cgit v1.1