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

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).

![Scene pose estimation](../../img/aruco_camera_pose_estimation.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](../../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",
                "marker_size": 5,
                "places": {
                    "0": {
                        "translation": [2.5, 2.5, 0],
                        "rotation": [0, 0, 0]
                    },
                    "1": {
                        "translation": [0, 25.5, 2],
                        "rotation": [0, 45, 0]
                    },
                    "2": {
                        "translation": [35.5, 0, 3],
                        "rotation": [-45, 0, 0]
                    }
                }
            } 
        }
    }
    ...
    "image_parameters": {
        ...
        "draw_scenes": {
            "MyScene": {
                "draw_aruco_markers_group": {
                    "draw_axes": {
                        "thickness": 3,
                        "length": 10
                    },
                    "draw_places": {
                        "color": [0, 0, 0],
                        "border_size": 1
                    },
                    "draw_places_axes": {
                        "thickness": 1,
                        "length": 2.5
                    }
                }
            }
        }
    }
}
```

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

### "MyScene"

The name of the [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).