# Importing Data in the 3D Multi-Sensor Fusion Labeling Tool

{% hint style="info" %}
3DMSFT Data must be in a bucket you have connected to Ango Hub through [storage integrations](https://docs.imerit.net/data/storages), and  Ango Hub must have read and write permissions to the bucket.
{% endhint %}

{% hint style="info" %}
To import pre-annotations, please follow read [Importing Pre-labelled Annotations](#importing-pre-labelled-annotations).
{% endhint %}

To import assets into the Ango Hub 3D multi-sensor fusion (3DMSF) tool , you will need to prepare a folder for each asset you wish to import. This folder must adhere to the format outlined on this page and must be located in a cloud storage bucket you have previously connected to Ango Hub using [storage integrations](https://docs.imerit.net/data/storages).

You will then place the link to that folder in a JSON you will upload onto the Ango Hub platform, either by dragging and dropping it from the UI, or from the SDK, or from Ango Hub's File Explorer.

## JSON Format

Here is a sample JSON used to import one 3DMSFT asset:

```json
[
  {
    "data": "storage-name/folder/folder",
    "externalId": "my_external_id_of_choice",
    "editorType": "pct"
  }
]
```

The only difference from a standard import JSON is the fact that you must add the `editorType` property and set it to `pct`, and that the data URL is to a folder rather than a single file.

## Folder Format

### LiDAR Data (Required)

LiDAR files must be placed in a subfolder named `lidar`. In the following example, and from now on for the rest of this section, we will create an example folder for an asset with two frames.

```
ROOT
│
└──lidar
   │
   ├──00000-ca9a282c9e77460f8360f564131a8af5.las
   └──00001-39586f9d59004284a7114a68825e8eec.las
```

{% hint style="info" %}
The 3DMSF tool supports point cloud (Radar, LiDAR) files in the **.las** and **.pcd** format.
{% endhint %}

### Image Data

You can add corresponding image data, in either the .jpg or .png format.

With the exception of the file extension, the images must have the same filename as their corresponding lidar file.

Please place your image files in subfolders with the follow names:

```
ROOT
│
├──lidar
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.las
│  └──00001-39586f9d59004284a7114a68825e8eec.las
│
├──CAM_BACK
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_BACK_LEFT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_BACK_RIGHT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_FRONT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_FRONT_LEFT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
└──CAM_FRONT_RIGHT
   │
   ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
   └──00001-39586f9d59004284a7114a68825e8eec.jpg
```

### Calibration Data

If calibration data is available, you may provide it in two ways:

#### When calibration information is the same for all frames

Create a subfolder named `calibration` and within it, add calibration information in a file named `calibration.json`:

```
ROOT
│
├──lidar
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.las
│  └──00001-39586f9d59004284a7114a68825e8eec.las
│
├──...<image data and other subfolders>
│
└──calibration
   │
   └──calibration.json
```

#### When calibration information is different for each frame

Create a subdolder called `calibration` and provide calibration .json data using the same filenames as their respective lidar files:

```
ROOT
│
├──lidar
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.las
│  └──00001-39586f9d59004284a7114a68825e8eec.las
│
├──<other subfolders>
│
└──calibration
   │
   └──00000-ca9a282c9e77460f8360f564131a8af5.json
      00001-39586f9d59004284a7114a68825e8eec.json
```

#### Calibration Data Format

The following is a sample calibration .json file in the format accepted by the 3DMSF:

<details>

<summary>Sample calibration .json</summary>

```json
{
    "calibration": [
        {
            "name": "las"
        },
        {
            "name": "top_left",
            "extrinsic": {
                "elements": [
                    -0.45932028878157577,
                    0.8881625791580727,
                    0.013860205513981646,
                    0,
                    0.013487377588441811,
                    0.02257518929768711,
                    -0.9996541659363805,
                    0,
                    -0.8881683190473507,
                    -0.45897450235438314,
                    -0.02234822653254135,
                    0,
                    -0.3624692129261298,
                    -0.3264286767132519,
                    -0.14261184674068425,
                    1.0000000000000002
                ]
            },
            "intrinsic": {
                "type": "pinhole",
                "focal_length": [
                    2368.3885645558503,
                    2364.775446260659
                ],
                "principal_point": [
                    1023.5,
                    767.5
                ],
                "distortion_model": "brown",                
                "distortion_coeffs": [
                    -0.18073668989736824,
                    0.12354259489517272,
                    0.0010549736922921442,
                    -0.00003499145176613645,
                    0.04489462478983391
                ],
                "cut_angle_lower": [],
                "cut_angle_upper": []
            }
        },
        {
            "name": "top_mid",
            "extrinsic": {
                "elements": [
                    0.04606459694705569,
                    0.9988330364531003,
                    0.014512690928439211,
                    0,
                    0.02776824380672721,
                    0.013242141819897059,
                    -0.9995266731387968,
                    0,
                    -0.998552441058553,
                    0.046445785275962485,
                    -0.027125845352793818,
                    0,
                    -0.07214367387671071,
                    0.21658406915669223,
                    -0.2675007838890805,
                    1
                ]
            },
            "intrinsic": {
                "type": "pinhole",
                "focal_length": [
                    2422.2559456651516,
                    2416.3771161529075
                ],
                "principal_point": [
                    1023.5,
                    767.5
                ],
                "distortion_model": "brown",
                "distortion_coeffs": [
                    -0.18556961331502048,
                    0.10583281806661132,
                    -0.001467792676586933,
                    -0.000699103163397734,
                    0.1153640967021715
                ],
                "cut_angle_lower": [],
                "cut_angle_upper": []
            }
        },
        {
            "name": "top_right",
            "extrinsic": {
                "elements": [
                    0.5257683318264426,
                    0.8506074342518913,
                    -0.005886768540918364,
                    0,
                    -0.0030026807511701883,
                    -0.005064559610083951,
                    -0.9999826669219133,
                    0,
                    -0.8506225044969986,
                    0.5257768947294758,
                    -0.00010868248799881679,
                    0,
                    -0.061373007191811796,
                    0.6639156039020208,
                    -0.13078671127573838,
                    1.0000000000000002
                ]
            },
            "intrinsic": {
                "type": "pinhole",
                "focal_length": [
                    2365.420466392311,
                    2361.2991996525857
                ],
                "principal_point": [
                    1023.5,
                    767.5
                ],
                "distortion_model": "brown",
                "distortion_coeffs": [
                    -0.17409497767201468,
                    0.08401455091460913,
                    0.00011858287852733618,
                    0.0002621776167037798,
                    0.10365871528250893
                ],
                "cut_angle_lower": [],
                "cut_angle_upper": []
            }
        }
    ]
}
```

</details>

And the following is an explanation of each field in the calibration .json file to provide:

<details>

<summary>Sensor Identifier</summary>

*<mark style="color:green;">**name**</mark>*

**Type:** string

**Description:** Unique identifier of the sensor within the system.

**Examples:**

* las: Reference sensor (typically LiDAR)
* top\_left: Camera mounted on the top-left of the vehicle
* top\_mid: Camera mounted on the top-middle of the vehicle
* top\_right: Camera mounted on the top-right of the vehicle

</details>

<details>

<summary>Extrinsic Parameters</summary>

*<mark style="color:green;">**extrinsic**</mark>*

Defines the rigid body transformation from the sensor coordinate system to the reference coordinate system (usually the LiDAR frame).

*<mark style="color:green;">**extrinsic.elements**</mark>*

**Type:** array of 16 numbers

**Description:** A 4 × 4 homogeneous transformation matrix (cam\_to\_velo) stored in column-major order. This matrix encodes the rotation and translation of the sensor relative to the reference frame.

```
Element Order
[
  R11,
  R21,
  R31,
  0,
  R12,
  R22,
  R32,
  0,
  R13,
  R23,
  R33,
  0,
  Tx,
  Ty,
  Tz,
  1
]
```

where:

* *<mark style="color:green;">**Rij**</mark>* : Elements of the 3 × 3 rotation matrix
* *<mark style="color:green;">**Tx, Ty, Tz**</mark>* : Translation offsets (in meters)

**Interpretation:** This transformation converts a 3D point expressed in the sensor coordinate frame into the reference (LiDAR) coordinate frame.

</details>

<details>

<summary>Intrinsic Parameters</summary>

*<mark style="color:green;">**intrinsic**</mark>*

Defines the internal camera model used to project 3D points onto the 2D image plane.

***

**1. Camera Model**

*<mark style="color:green;">**intrinsic.type**</mark>*

**Type:** string

**Description:** Camera projection model.

**Supported values:**

* "pinhole" : Standard pinhole camera model

***

**2. Focal Length**

*<mark style="color:green;">**intrinsic.focal\_length**</mark>*

**Type:** array \[fx, fy]

**Description:** Focal lengths of the camera expressed in pixels.

* fx : Focal length in the x-direction
* fy : Focal length in the y-direction

***

**3. Principal Point**

*<mark style="color:green;">**intrinsic.principal\_point**</mark>*

**Type:** array \[cx, cy]

**Description:** Optical center of the image in pixel coordinates.

* cx : x-coordinate of the principal point
* cy : y-coordinate of the principal point

***

**4. Distortion Model**

*<mark style="color:green;">**intrinsic.distortion\_model**</mark>*

**Type:** string

**Description:** Lens distortion model used by the camera.

**Supported values:**

* "brown" : Brown–Conrady distortion model

***

**5. Distortion Coefficients**

*<mark style="color:green;">**intrinsic.distortion\_coeffs**</mark>*

**Type:** array

**Description:** Distortion coefficients corresponding to the selected distortion model.

For the Brown–Conrady model, coefficients are ordered as:

\[k1, k2, p1, p2, k3]

**where:**

* k1, k2, k3 : Radial distortion coefficients
* p1, p2 : Tangential distortion coefficients

***

**6. Angular Cut-Off (Optional)**

*<mark style="color:green;">**intrinsic.cut\_angle\_lower,**</mark>*<mark style="color:green;">**&#x20;**</mark><mark style="color:green;">**intrinsic.cut\_angle\_upper**</mark>

**Type:** array

**Description:** Optional angular limits used to restrict projection based on viewing angle.

* If set to an empty array \[], no angular filtering is applied.
* If specified, only points within the defined angular range are projected

</details>

### Ego Vehicle Data

If present, you may include velocity data about the ego vehicle. This will enable the 3DMSF tool "Merge Point Cloud" functionality, allowing you to see all frames at once.

Ego vehicle data must be placed in a .json file in a subfolder named `ego_data`. Each file must have the same filename as the related lidar file.

```
ROOT
│
├──lidar
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.las
│  └──00001-39586f9d59004284a7114a68825e8eec.las
│
├──<other subfolders>
│
└──ego_data
   │
   └──00000-ca9a282c9e77460f8360f564131a8af5.json
      00001-39586f9d59004284a7114a68825e8eec.json
```

#### Ego Vehicle Data Format

The following is a sample ego vehicle data .json file in the format accepted by the 3DMSF:

<details>

<summary>Sample ego vehicle data .json</summary>

```json
{
    "ego": {
        "utmHeading_deg": 0,
        "utmX_m": 0,
        "utmY_m": 0,
        "utmZ_m": 0,
        "transformationMatrix": [
            0.9999929255939899,
            4.728399942020017e-05,
            -0.003761186806903719,
            11.892164028919069,
            -3.5267784361846035e-05,
            0.9999948960054691,
            0.003194795642111974,
            -0.010200761971645989,
            0.0037613186725421227,
            -0.003194640392105233,
            0.9999878233031683,
            0.0471942646689083,
            0.0,
            0.0,
            0.0,
            1.0
        ],
        "timestamp_epoch_ns": 1725652171522264150
    }
}
```

</details>

And the following is an explanation of each field in the ego vehicle .json file to provide:

<details>

<summary>Ego vehicle data file field explanation</summary>

`utmX_m`: The distance the object has moved along the x-axis (in meters) with respect to the 1st frame.

`utmY_m`: The distance the object has moved along the y-axis (in meters) with respect to the 1st frame.

`utmZ_m`: The distance the object has moved along the z-axis (in meters) with respect to the 1st frame.

`utmHeading_deg`: Angle of Z rotation (Yaw)

`transformationMatrix`:  Current frame lidar coordinate system displacement from the reference frame lidar coordinate system. The matrix is in row major format.&#x20;

```
Element Order : [ R11, R12, R13, Tx,
                  R21, R22, R23, Ty,
                  R31, R32, R33, Tz,
                  0,   0,   0,   1 ]
```

If we have complete transformation Matrix details we ignore utmX\_m, utmY\_m, utmZ\_m and utmHeading\_deg. Hence in the sample we put those value as zero.

`timestamp_epoch_ns`: timestamp of this frame capture in nanoseconds.

</details>

***

A folder with all optional data included would therefore look like the following:

```
ROOT
│
├──lidar
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.las
│  └──00001-39586f9d59004284a7114a68825e8eec.las
│
├──CAM_BACK
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_BACK_LEFT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_BACK_RIGHT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_FRONT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_FRONT_LEFT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──CAM_FRONT_RIGHT
│  │
│  ├──00000-ca9a282c9e77460f8360f564131a8af5.jpg
│  └──00001-39586f9d59004284a7114a68825e8eec.jpg
│
├──ego_data
│  │
│  └──00000-ca9a282c9e77460f8360f564131a8af5.json
│     00001-39586f9d59004284a7114a68825e8eec.json
│
└──calibration
   │
   └──00000-ca9a282c9e77460f8360f564131a8af5.json
      00001-39586f9d59004284a7114a68825e8eec.json
```

## Importing PCT data using the File Explorer

From your project, click on *Add Data*, then enter the File Explorer tab. Navigate to the folder containing your PCT sub-folders and data. Click on it to select it. Enable the *PCT Upload* toggle, then click on *Upload*. Your folder will be imported as PCT data.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FqPwq6HbJqMQxDlV5BhqM%2Fimage.png?alt=media&#x26;token=88697df6-2184-47b6-a7c5-01111ff8ec93" alt=""><figcaption></figcaption></figure>

## Importing Pre-labelled Annotations

### **Create a Folder for Pre-Labelled Annotations**

1. Prepare the data folder structure.
2. Store the prelabled annotations in the lidar\_annotation folder.

For example, if you have 100 frames, the corresponding files should be named as: 1.json, 2.json, 3.json, and so on up to 100.json.

{% hint style="info" %}
Prelabled annotations are stored as JSON files, one json per frame
{% endhint %}

The JSON schema needed to create prelabled files (supports cuboid, 2D bbox, 3Dpolyline).

<details>

<summary>json schema for prelabled file:</summary>

<pre class="language-json" data-line-numbers><code class="lang-json">{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Annotation File",
  "type": "object",
  "properties": {
    "annotations": {
      "type": "array",
      "items": {
        "type": "object",
        "oneOf": [
          {
            "if": {
              "properties": {
                "object_type": {
                  "const": "rectangle"
                }
              }
            },
            "then": {
              "required": [
                "object_type",
                "geometry"
              ],
              "properties": {
                "object_type": {
                  "const": "rectangle"
                },
                "class": {
                  "type": "string"
                },
                "identity": {
                  "type": [
                    "integer",
                    "string"
                  ]
                },
                "reference_folder": {
                  "type": "string"
                },
                "geometry": {
                  "type": "object",
                  "properties": {
                    "coordinates": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "x": {
                            "type": "number"
                          },
                          "y": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "x",
                          "y"
                        ]
                      },
                      "minItems": 4,
                      "maxItems": 4
                    }
                  },
                  "required": [
                    "coordinates"
                  ]
                },
                "taxonomy_attribute": {
                  "type": "object"
                },
                "isGeometryKeyFrame": {
                  "type": "boolean"
                },
                "origin": {
                  "type": "string"
                },
                "prelabel": {
                  "type": "object",
                  "properties": {
                    "modelName": {
                      "type": "string"
                    },
                    "modelVersion": {
                      "type": "string"
                    },
                    "confidenceScore": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "object_type": {
                  "const": "cuboid"
                }
              }
            },
            "then": {
              "required": [
                "object_type",
                "geometry"
              ],
              "properties": {
                "object_type": {
                  "const": "cuboid"
                },
                "id": {
                  "type": "string"
                },
                "class": {
                  "type": "string"
                },
                "identity": {
                  "type": [
                    "integer",
                    "string"
                  ]
                },
                "classId": {
                  "type": [
                    "string",
                    "integer"
                  ]
                },
                "geometry": {
                  "type": "object",
                  "properties": {
                    "position": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ]
                    },
                    "rotation": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ]
                    },
                    "boxSize": {
                      "type": "object",
                      "properties": {
                        "x": {
                          "type": "number"
                        },
                        "y": {
                          "type": "number"
                        },
                        "z": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "x",
                        "y",
                        "z"
                      ]
                    }
                  },
                  "required": [
                    "position",
                    "rotation",
                    "boxSize"
                  ]
                },
                "taxonomy_attribute": {
                  "type": "object"
                },
                "isGeometryKeyFrame": {
                  "type": "boolean"
                },
                "isAttributeKeyFrame": {
                  "type": "boolean"
                },
                "origin": {
                  "type": "string"
                },
                "prelabel": {
                  "type": "object",
                  "properties": {
                    "modelName": {
                      "type": "string"
                    },
                    "modelVersion": {
                      "type": "string"
                    },
                    "confidenceScore": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "object_type": {
                  "const": "polyline"
                }
              }
            },
            "then": {
              "required": [
                "object_type",
                "geometry"
              ],
              "properties": {
                "object_type": {
                  "const": "polyline"
                },
                "id": {
                  "type": "string"
                },
                "identity": {
                  "type": [
                    "integer",
                    "string"
                  ]
                },
                "geometry": {
                  "type": "object",
                  "properties": {
                    "points": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "position": {
                            "type": "object",
                            "properties": {
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "z": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "x",
                              "y",
                              "z"
                            ]
                          }
                        },
                        "required": [
                          "position"
                        ]
                      }
                    },
                    "thickness": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "points",
                    "thickness"
                  ]
                },
                "taxonomy_attribute": {
                  "type": "object"
                },
                "origin": {
                  "type": "string"
                },
                "prelabel": {
                  "type": "object",
                  "properties": {
                    "modelName": {
                      "type": "string"
                    },
                    "modelVersion": {
                      "type": "string"
                    },
                    "confidenceScore": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        ]
      }
    }
  },
  "required": [
    "annotations"
  ]
<strong>}
</strong></code></pre>

</details>

**Sample/snippet of Cuboid, 2D Bbox, 3D Polyline**

{% tabs %}
{% tab title="Cuboid" %}
{% code lineNumbers="true" %}

```json
{
  "annotations": [
    {
      "id" : "10e3547e-0ffc-11f0-beff-c9af1eb6b655", // Optional - UUIDv4 ID for all annotations across sequence
      "class": "car",
      "object_type": "cuboid",
      "taxonomy_attribute": {},
      "geometry": {
        "position": { // Position in metres
          "x": 5.992325288342432,
          "y": 4.904602559666202,
          "z": 1.5813289166406617
        },
        "rotation": { // Rotation in Euler angles (in radian) with ZYX order 
          "x": 0,
          "y": 0,
          "z": 0
        },
        "boxSize": { 
          "x": 4.837695807772452,
          "y": 4.519224086476998,
          "z": 2.4204508776208957
        }
      },
      "identity": 1, // Identity must start from 1
      "isGeometryKeyFrame": true, // Geometry key frame remains untouched with interpolation 
      "origin": "Customer",// With 'Customer' label, labeller is able identify prelabels on point cloud tool, and origin of label
      "prelabel": {
        "modelName": "Pvrcnn",// Optional - To help collect statistics, model name
        "modelVersion": "v1",// Optional - To help collect statistics, model version
        "confidenceScore": "0.8"// Option - Confidence score of annotation
      }
    }
  ]
}
```

{% endcode %}
{% endtab %}

{% tab title="2D Bbox" %}

```json
{
  "annotations": [
    {
      "class": "Vehicle",
      "object_type": "rectangle",
      "identity": 3,
      "reference_folder": "rearward_left_bottom_medium_ID060",
      "geometry": {
        "coordinates": [
          {
            "x": 855.318048,
            "y": 2158.155112
          },
          {
            "x": 855.318048,
            "y": 861.2488400000001
          },
          {
            "x": 2784.83608,
            "y": 861.2488400000001
          },
          {
            "x": 2784.83608,
            "y": 2158.155112
          }
        ]
      },
      "taxonomy_attribute": {},
      "isGeometryKeyFrame": true, // Geometry key frame remains untouched with interpolation 
      "origin": "Customer",// With 'Customer' label, labeller is able identify prelabels on point cloud tool, and origin of label
      "prelabel": {
        "modelName": "Pvrcnn",// Optional - To help collect statistics, model name
        "modelVersion": "v1",// Optional - To help collect statistics, model version
        "confidenceScore": "0.8"// Optional - Confidence score of annotation
      }
    }
  ]
}
```

{% endtab %}

{% tab title="3D Polyline " %}
{% code lineNumbers="true" %}

```json
{
  "annotations": [
  
    {
      "id" : "10e2447e-0ffc-11f0-b0dd-c9af1eb6b655", // Optional - UUIDv4 ID for all annotations across sequence
      "class": "lane",
      "object_type": "polyline",
      "taxonomy_attribute": {},
      "geometry": {

        "points": [
          {
            "position": {
              "x": -5.910736083984375,
              "y": 0.7063865661621094,
              "z": -0.001922607421875
            }
          },
          {
            "position": {
              "x": 4.194019317626953,
              "y": -2.124612808227539,
              "z": 0.3410773277282715
            }
          },
          {
            "position": {
              "x": -3.438983917236328,
              "y": -7.768611907958984,
              "z": 2.552077293395996
            }
          },
          {
            "position": {
              "x": -11.68572998046875,
              "y": -6.034612655639648,
              "z": 5.980077266693115
            }
          },
          {
            "position": {
              "x": -10.565982818603516,
              "y": -5.695611953735352,
              "z": 3.379077434539795
            }
          },
          {
            "position": {
              "x": -7.793731689453125,
              "y": -2.306612014770508,
              "z": 0.15207719802856445
            }
          },
          {
            "position": {
              "x": -17.27798080444336,
              "y": -7.60261344909668,
              "z": 2.255077362060547
            }
          }
        ],
        "thickness": 0
      },
      "identity": 1,   // Identity must start from 1
      "origin": "Customer",// With 'Customer' label, labeller is able identify prelabels on point cloud tool, and origin of label
      "prelabel": {
        "modelName": "Pvrcnn",// Optional - To help collect statistics, model name
        "modelVersion": "v1",// Optional - To help collect statistics, model version
        "confidenceScore": "0.8"// Optional - Confidence score of annotation
      }
    }
  ]
}


```

{% endcode %}
{% endtab %}
{% endtabs %}
