aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/aruco_markers_pipeline
diff options
context:
space:
mode:
authorThéo de la Hogue2023-09-27 18:02:34 +0200
committerThéo de la Hogue2023-09-27 18:02:34 +0200
commitfbf4c80b9e7dabb6e2bbcb94df44e627de5646dc (patch)
tree1c7f0984c3b84a6db1511b555e9734afe9bee4de /docs/user_guide/aruco_markers_pipeline
parent1a0dc73d98fdbe0d45523ca3ac914928b0ae775a (diff)
downloadargaze-fbf4c80b9e7dabb6e2bbcb94df44e627de5646dc.zip
argaze-fbf4c80b9e7dabb6e2bbcb94df44e627de5646dc.tar.gz
argaze-fbf4c80b9e7dabb6e2bbcb94df44e627de5646dc.tar.bz2
argaze-fbf4c80b9e7dabb6e2bbcb94df44e627de5646dc.tar.xz
Updating illustrations.
Diffstat (limited to 'docs/user_guide/aruco_markers_pipeline')
-rw-r--r--docs/user_guide/aruco_markers_pipeline/aoi_3d_description.md33
-rw-r--r--docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md30
-rw-r--r--docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md5
-rw-r--r--docs/user_guide/aruco_markers_pipeline/aruco_markers_description.md30
-rw-r--r--docs/user_guide/aruco_markers_pipeline/introduction.md6
-rw-r--r--docs/user_guide/aruco_markers_pipeline/pose_estimation.md8
6 files changed, 61 insertions, 51 deletions
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 5a1a16e..502f905 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
Once [ArUco markers are placed into a scene](aruco_markers_description.md), [areas of interest (AOI)](../../argaze.md/#argaze.AreaOfInterest.AOIFeatures.AreaOfInterest) need to be described into the same 3D referential.
-In the example scene, each screen is considered as an area of interest more the blue triangle area inside the top screen.
+In the example scene, the screen and the sheet are considered as areas of interest.
![3D AOI description](../../img/aoi_3d_description.png)
@@ -21,26 +21,20 @@ 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 YellowSquare
-v 6.200003 -7.275252 25.246159
-v 31.200003 -7.275252 25.246159
-v 6.200003 1.275252 1.753843
-v 31.200003 1.275252 1.753843
+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
s off
f 1 2 4 3
-o GrayRectangle
-v 2.500000 2.500000 -0.500000
-v 37.500000 2.500000 -0.500000
-v 2.500000 27.500000 -0.500000
-v 37.500000 27.500000 -0.500000
+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
s off
f 5 6 8 7
-o BlueTriangle
-v 12.500002 7.500000 -0.500000
-v 27.500002 7.500000 -0.500000
-v 20.000002 22.500000 -0.500000
-s off
-f 9 10 11
```
Here are common OBJ file features needed to describe AOI:
@@ -55,8 +49,7 @@ JSON file format allows to describe AOI vertices.
``` json
{
- "YellowSquare": [[6.2, -7.275252, 25.246159], [31.2, -7.275252, 25.246159], [31.2, 1.275252, 1.753843], [6.2, 1.275252, 1.753843]],
- "GrayRectangle": [[2.5, 2.5, -0.5], [37.5, 2.5, -0.5], [37.5, 27.5, -0.5], [2.5, 27.5, -0.5]],
- "BlueTriangle": [[12.5, 7.5, -0.5], [27.5, 7.5, -0.5], [20, 22.5, -0.5]]
+ "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]]
}
```
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 8075426..032e2b6 100644
--- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md
+++ b/docs/user_guide/aruco_markers_pipeline/aoi_3d_frame.md
@@ -3,11 +3,13 @@ Define a 3D AOI as a frame
When an 3D AOI of the scene contains others coplanar 3D AOI, like a screen with GUI elements displayed on, it is better to described them as 2D AOI inside 2D coordinates system related to the containing 3D AOI.
+![3D AOI frame](../../img/aruco_camera_aoi_frame.png)
+
## Add ArFrame to ArUcoScene
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 "MyScreen" AOI is defined as a frame into [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) configuration:
+Here is the previous extract where "Screen" AOI is defined as a frame into [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) configuration:
```json
{
@@ -22,18 +24,34 @@ Here is the previous extract where "MyScreen" AOI is defined as a frame into [Ar
"layers": {
"MyLayer": {
"aoi_scene": {
- "MyScreen": [[2.5, 2.5, -0.5], [37.5, 2.5, -0.5], [37.5, 27.5, -0.5], [2.5, 27.5, -0.5]]
+ "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]]
}
}
},
"frames": {
- "MyScreen": {
- "size": [350, 250],
+ "Screen": {
+ "size": [1920, 1080],
"layers": {
"MyLayer": {
"aoi_scene": {
- "BlueTriangle": [[100, 50], [250, 50], [175, 200]]
- }
+ "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
+ }
+ },
+ "CircularWidget": {
+ "Circle": {
+ "cx": 1800,
+ "cy": 120,
+ "radius": 80
+ }
+ }
+ }
}
}
}
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 acbe31d..0d58d9a 100644
--- a/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md
+++ b/docs/user_guide/aruco_markers_pipeline/aoi_3d_projection.md
@@ -24,9 +24,8 @@ Here is the previous extract where one layer is added to [ArUcoScene](../../arga
"layers": {
"MyLayer": {
"aoi_scene": {
- "YellowSquare": [[6.2, -7.275252, 25.246159], [31.2, -7.275252, 25.246159], [31.2, 1.275252, 1.753843], [6.2, 1.275252, 1.753843]],
- "GrayRectangle": [[2.5, 2.5, -0.5], [37.5, 2.5, -0.5], [37.5, 27.5, -0.5], [2.5, 27.5, -0.5]],
- "BlueTriangle": [[12.5, 7.5, -0.5], [27.5, 7.5, -0.5], [20, 22.5, -0.5]]
+ "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]]
}
}
}
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 b3ea2bb..3addcab 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 multi-screen workspace with a triangle area inside one of them.
+Here is an example scene where markers are surrounding a workspace with a screen and a sheet on the table.
![Scene](../../img/scene.png)
@@ -69,19 +69,19 @@ vn 0.0000 0.0000 1.0000
s off
f 1//1 2//1 4//1 3//1
o DICT_APRILTAG_16h5#1_Marker
-v -1.767767 23.000002 3.767767
-v 1.767767 23.000002 0.232233
-v -1.767767 28.000002 3.767767
-v 1.767767 28.000002 0.232233
-vn 0.7071 0.0000 0.7071
+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
+vn 0.9397 0.0000 0.3420
s off
f 5//2 6//2 8//2 7//2
o DICT_APRILTAG_16h5#2_Marker
-v 33.000000 -1.767767 4.767767
-v 38.000000 -1.767767 4.767767
-v 33.000000 1.767767 1.232233
-v 38.000000 1.767767 1.232233
-vn 0.0000 0.7071 0.7071
+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
+vn 0.0000 1.0000 -0.0000
s off
f 9//3 10//3 12//3 11//3
```
@@ -110,12 +110,12 @@ JSON file format allows to describe markers places using translation and euler a
"rotation": [0, 0, 0]
},
"1": {
- "translation": [0, 25.5, 2],
- "rotation": [0, 45, 0]
+ "translation": [0, 26.5, 2],
+ "rotation": [0, 70, 0]
},
"2": {
- "translation": [35.5, 0, 3],
- "rotation": [-45, 0, 0]
+ "translation": [46.5, 0, 7],
+ "rotation": [-90, 0, 0]
}
}
}
diff --git a/docs/user_guide/aruco_markers_pipeline/introduction.md b/docs/user_guide/aruco_markers_pipeline/introduction.md
index 5a07b49..26294f7 100644
--- a/docs/user_guide/aruco_markers_pipeline/introduction.md
+++ b/docs/user_guide/aruco_markers_pipeline/introduction.md
@@ -1,11 +1,11 @@
Overview
========
-This section explains how to build augmented reality pipelines based on ArUco Markers technology for various use cases.
+This section explains how to build augmented reality pipelines based on [ArUco Markers technology](https://www.sciencedirect.com/science/article/abs/pii/S0031320314000235) for various use cases.
-The OpenCV library provides a module to detect fiducial markers into a picture and estimate their poses (cf [OpenCV ArUco tutorial page](https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html)).
+The OpenCV library provides a module to detect fiducial markers into a picture and estimate their poses.
-![OpenCV ArUco markers](https://pyimagesearch.com/wp-content/uploads/2020/12/aruco_generate_tags_header.png)
+![OpenCV ArUco markers](../../img/opencv_aruco.png)
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.
diff --git a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md b/docs/user_guide/aruco_markers_pipeline/pose_estimation.md
index 5dcde6f..6027039 100644
--- a/docs/user_guide/aruco_markers_pipeline/pose_estimation.md
+++ b/docs/user_guide/aruco_markers_pipeline/pose_estimation.md
@@ -27,12 +27,12 @@ Here is an extract from the JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMark
"rotation": [0, 0, 0]
},
"1": {
- "translation": [0, 25.5, 2],
- "rotation": [0, 45, 0]
+ "translation": [0, 26.5, 2],
+ "rotation": [0, 70, 0]
},
"2": {
- "translation": [35.5, 0, 3],
- "rotation": [-45, 0, 0]
+ "translation": [46.5, 0, 7],
+ "rotation": [-90, 0, 0]
}
}
}