aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/aruco_markers_pipeline/pose_estimation.md
blob: 7f6573ca6c4d8474eed8e2408358cea5ddf57ab2 (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
Estimate scene pose
===================

Once [ArUco markers are placed into a scene](aruco_markers_description.md) and [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) is [configured](configuration_and_execution.md), scene pose can be estimated.

![Scene pose estimation](../../img/aruco_camera_pose_estimation.png)

## Add ArUcoScene to ArUcoCamera JSON configuration file

An [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) class defines a space with [ArUco markers inside](aruco_markers_description.md) helping to estimate scene pose when they are watched by [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera).

Here is an extract from the JSON [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration file with a sample where one scene is added and displayed:

```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
                    }
                }
            } 
        }
    },
    ...
    "image_parameters": {
        ...
        "draw_scenes": {
            "MyScene": {
                "draw_aruco_markers_group": {
                    "draw_axes": {
                        "thickness": 3,
                        "length": 10
                    },
                    "draw_places": {
                        "color": [0, 0, 0],
                        "border_size": 1
                    }
                }
            }
        }
    }
}
```

Now, let's understand the meaning of each JSON entry.

### *scenes*

An [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) instance can contains multiples [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) stored by name.

### MyScene

The name of an [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene). Basically useful for visualisation purpose.

### *aruco_markers_group*

The 3D places of ArUco markers into the scene as defined at [ArUco markers description chapter](aruco_markers_description.md). Thanks to this description, it is possible to estimate the pose of [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) in [ArUcoCamera](../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) frame.

!!! note

    [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) pose estimation is done when calling the [ArUcoCamera.watch](../../argaze.md/#argaze.ArFeatures.ArCamera.watch) method.

### *draw_scenes*

The drawing parameters of each loaded [ArUcoScene](../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) in [ArUcoCamera.image](../../argaze.md/#argaze.ArFeatures.ArFrame.image).