> For the complete documentation index, see [llms.txt](https://stage-precision.gitbook.io/grid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stage-precision.gitbook.io/grid/spatial-interactive-experiences/building-an-interactive-tracking-project/align-the-sensors.md).

# Align the Sensors

Before multiple sensors can be processed together, their point clouds must describe the same physical environment in the same project coordinate system.

Alignment establishes this shared spatial reference.

For a typical multi-sensor project, the recommended workflow is:

**Floor-align the first sensor → Fine-tune it manually → Use it as the spatial reference → Point-align additional sensors → Fine-tune the overlap**

This approach combines the speed of the alignment tools with manual adjustment where the limited resolution of individual scan lines makes visual judgment more reliable.

***

## Align the First Sensor

For the first 3D sensor, **Floor Alignment** is usually the fastest way to establish a useful initial orientation.

The sensor already provides spatial measurements, so no external measurement of the floor is required.

Floor Alignment determines the floor plane and places it at **Z = 0**. Afterwards, the remaining rotation and position can be adjusted manually.

### Add the Floor Alignment Tool

1. Select the **Sensor Object** in the Project Tree.
2. Open **Tools** in the Inspector.
3. Click the **+** button.
4. Select **Floor Alignment**.

<div align="left"><figure><img src="/files/dHKwpxLm6XdcR4jQ6xFW" alt="" width="333"><figcaption></figcaption></figure></div>

The Floor Alignment tool is now added to the Sensor Object.

### Add Floor Reference Points

Floor Alignment requires at least three points on the physical floor.

1. In the **Floor Alignment** tool, click the **+** button three times.

   <div align="left"><figure><img src="/files/zXC79ivUXd5dxecvvuzB" alt="" width="319"><figcaption></figcaption></figure></div>
2. For each reference entry, click **Point Picker**.
3. The mouse cursor changes to indicate that point picking is active.
4. Select a clearly visible point on the physical floor.

<div align="left"><figure><img src="/files/IL4Vwrl6cNrzw4Lhvd8I" alt=""><figcaption></figcaption></figure></div>

A sphere is displayed at the selected location as visual feedback.

There are two ways to select a point:

* **Click** directly on a visible point to select it immediately.
* **Click and hold**, move across the point cloud while keeping the mouse button pressed, and release when the desired point is selected.

The second method can make it easier to select a specific measurement from a dense or difficult viewing angle.

{% hint style="success" %}
Choose three floor points that form a **large triangle** across the visible floor area. Avoid selecting three points close together.
{% endhint %}

### Apply the Floor Alignment

After all floor reference points have been selected, click the **Play** button in the upper-right corner of the Floor Alignment tool.

Grid Studio calculates the floor plane and updates the Sensor Object so that the detected floor is aligned to **Z = 0**.

<div align="left"><figure><img src="/files/EOTq1csr6dEyqrTYgB4Z" alt=""><figcaption></figcaption></figure></div>

Check the result immediately before making any further adjustments.

{% hint style="warning" %}
Depending on the physical orientation of the sensor, Floor Alignment may produce a mathematically valid result with the sensor on the wrong side of the floor plane. The point cloud may therefore appear upside down.

Correct this before continuing with manual positioning.
{% endhint %}

### Correct an Upside-Down Alignment

If the point cloud is upside down after Floor Alignment, do not simply rotate the Sensor Object itself.

The sensor position has also been calculated relative to the floor plane and must be flipped together with its orientation.

To correct it:

1. Create a temporary **Folder** at the project origin and leave its transform at its default.
2. Drag the **Sensor Object** below the Folder so that it becomes a child.
3. Rotate the **Folder** by **180° around X**.
4. Move the Sensor Object out of the Folder again.
5. Remove the temporary Folder.

When the Sensor Object is detached, it keeps its resulting global transform.

<div align="left"><figure><img src="/files/Fqpclsw2SFyNWtRB6f6e" alt=""><figcaption></figcaption></figure></div>

### Manually Position the First Sensor

After Floor Alignment, the sensor is leveled and the detected floor is positioned at **Z = 0**.

The remaining step is to define how the physical environment is oriented within the Grid Studio project.

Select the Sensor Object and activate the **Viewport transform gizmo**. Switch the gizmo from **Object** to **World** orientation.

Using World orientation allows you to adjust the sensor relative to the project coordinate system instead of its current local axes.

<figure><img src="/files/bsJuOJNrhMHayJnBBaRN" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
While the transform gizmo is active, hold **ALT** when rotating or navigating the Viewport.

Without **ALT**, the same mouse interaction normally used to rotate the Viewport can manipulate the selected object instead. This can accidentally change the Sensor Object's alignment.
{% endhint %}

{% hint style="info" %}
When using the Viewport gizmos, you can temporarily enable transform snapping with the keyboard:

* Hold **CTRL** to snap position changes in **50 cm** increments and rotation changes in **5°** increments.
* Hold **CTRL + SHIFT** for finer snapping in **10 cm** position increments and **1°** rotation increments.
  {% endhint %}

Use the Viewport handles to adjust:

* The sensor's horizontal position in the project space
* Its rotation around the vertical world axis

This establishes a practical **project origin and heading** for the physical environment.

<figure><img src="/files/Mszb7tV3NWL6vyQyBCbS" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For manual alignment, prefer the Viewport gizmo in **World** orientation instead of editing the Sensor Object's relative Transform parameters directly in the Inspector.
{% endhint %}

{% hint style="warning" %}
After finishing the adjustment, leave the transform gizmo mode and return the Viewport to its normal navigation mode. This helps prevent accidentally moving or rotating the Sensor Object later.
{% endhint %}

### Fine-Tune Around a Reference Point

For small rotational corrections, it is often easier to rotate the sensor around a point in the environment instead of around the Sensor Object's own pivot.

For example, one corner may already match correctly while a wall further away is still slightly rotated.

To temporarily create a different rotation pivot:

1. Add a **Tracker** Object.
2. Position the Tracker's visible sphere at the point that should remain fixed.

   <figure><img src="/files/nAwHZyUBmvJe9727nNEV" alt=""><figcaption></figcaption></figure>
3. Drag the Sensor Object below the Tracker so that it becomes a child.
4. Rotate the Tracker to correct the remaining angular error.

   <figure><img src="/files/yVdU0xLWYSbd0A0JiYuK" alt=""><figcaption></figcaption></figure>
5. Move the Sensor Object out of the Tracker again.
6. Remove the temporary Tracker.

The Sensor Object keeps its resulting global transform when it is detached.

{% hint style="info" %}
This technique is particularly useful for small angular corrections. Rotating around the Sensor Object itself may move an already-correct reference point, while the temporary Tracker allows that position to remain fixed.
{% endhint %}

Once the first sensor matches the environment well, it can be used as the spatial reference for the remaining sensors.

***

## Align Additional Sensors

Once the first sensor establishes the project coordinate system, align each additional sensor against the already aligned point cloud.

For most multi-sensor installations, the most practical approach is to repeat the same basic process used for the first sensor:

**Floor Align → Check Orientation → Position → Match a Reference → Rotate Around That Reference → Verify**

### Floor Align the Next Sensor

Select the next Sensor Object and repeat the **Floor Alignment** process.

This establishes the same floor level and removes most of the sensor's initial rotational offset.

After applying Floor Alignment, immediately verify that the sensor is on the correct side of the floor plane.

If the result is upside down, use the same temporary Folder technique described earlier to flip the complete transform.

<figure><img src="/files/T98g6IxBMyJcJU6OrRTG" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Grid Studio also provides a **Point Align** tool that can calculate a sensor transform from multiple known point correspondences.

This can be useful when several sensors share clearly identifiable reference points. In many real-world LiDAR installations, however, differences in viewing angle, occlusion, and scan-line resolution make suitable shared reference points difficult to identify reliably.

For this reason, the workflow in this guide uses Floor Alignment followed by manual spatial matching. Point Align is covered separately in the **Calibration & Alignment** documentation.
{% endhint %}

### Compare Both Point Clouds

Display the already aligned sensor and the new sensor at the same time.

Use different colors for the two point clouds so that their spatial relationship is easy to see.

At this stage, both sensors should already agree on the floor plane, but their horizontal position and heading will normally still differ.

<figure><img src="/files/fsdThUxR3V263uM9VAQt" alt=""><figcaption></figcaption></figure>

### Match a First Reference

Switch the Viewport transform gizmo to **World** orientation.

Move the new Sensor Object until one clearly recognizable structural feature matches the already aligned point cloud.

Useful references include:

* A corner
* A long wall edge
* A pillar
* Another clearly defined permanent structure

Focus on matching one location first rather than trying to align the entire point cloud at once.

<figure><img src="/files/c9cYjiOcmFUe5FHuleUa" alt=""><figcaption></figcaption></figure>

### Rotate Around the Matched Reference

Once one reference position matches, place a temporary **Tracker** at that location.

1. Position the Tracker at the matched reference.
2. Make the new Sensor Object a child of the Tracker.
3. Rotate the Tracker until another wall, edge, or larger structural feature aligns.
4. Detach the Sensor Object again.

The Sensor Object keeps its resulting global transform.

Using the matched location as the temporary pivot prevents that reference from moving while correcting the remaining angular difference.

<figure><img src="/files/5a2Zse4zyRkKBU7uBHXT" alt=""><figcaption></figcaption></figure>

### Refine the Remaining Alignment

Inspect the point clouds from several directions.

If another rotational error remains, repeat the same technique using a suitable pivot and the required axis.

Work in small steps:

**Match one reference → rotate around it → inspect the wider environment → correct the next remaining error**

The goal is a consistent match across the useful tracking area, not perfect point-for-point overlap.

***

## Fine-Tune Additional Sensors

Manual fine adjustment is a normal part of multi-sensor alignment.

Display the newly aligned sensor together with the already aligned reference sensor or its VBO Snapshot and compare their shared geometry.

### Compare the Point Clouds

Keep both point clouds visible at the same time and use clearly different colors for each sensor.

This makes it much easier to identify:

* Offset surfaces
* Angular differences
* Misaligned walls
* Diverging edges
* Areas where the sensors already overlap correctly

### Check the Sensor Scale

Point Align may slightly modify the **Scale** of the Sensor Object as part of the calculated transform.

For example, a Scale value of `1` may become `0.98` or `1.1`.

For professional LiDAR sensors with reliable distance measurements, the physical scale of the point cloud is normally already known. In this case, reset the Sensor Object's Scale to **1** before continuing with manual fine alignment.

{% hint style="info" %}
Only reset the Scale when you know that the sensor provides correctly scaled spatial measurements. The purpose is to correct position and orientation rather than compensate for alignment inaccuracies by scaling the sensor data.
{% endhint %}

### Match a First Reference

Find a clearly recognizable structural feature that is visible in both point clouds.

Good references can include:

* A long edge
* A wall
* A corner
* A large permanent object

Use the normal transform handles of the Sensor Object to move the newly aligned sensor until this first reference matches as closely as possible.

Focus on establishing one reliable matching position first.

Because LiDAR point clouds consist of individual measurements and scan lines, do not expect every point from two different sensors to overlap exactly. Larger structural features provide a more useful reference.

### Rotate Around the Matched Reference

Once a useful reference position matches, use a temporary Tracker as a rotation pivot.

1. Add a **Tracker** Object.
2. Position its visible sphere at the reference position that should remain fixed.
3. Drag the Sensor Object below the Tracker.
4. Rotate the Tracker until another visible edge, wall, or surface aligns with the reference point cloud.
5. Move the Sensor Object out of the Tracker again.

This allows the first matched position to stay fixed while the angular relationship between the two point clouds is corrected.

### Correct Remaining Angular Errors

After correcting one direction, inspect the point clouds from other viewing angles.

A remaining error may require an additional correction around another axis.

If necessary:

1. Choose another useful reference position.
2. Place a temporary Tracker at that location.
3. Parent the Sensor Object to the Tracker.
4. Rotate around the required axis.
5. Detach the Sensor Object again.

Work with small corrections and repeatedly inspect the result from several viewpoints rather than trying to solve every remaining error with a single large transform.

***

## Verify the Alignment

Once the sensor appears correctly aligned, inspect the complete shared tracking area.

Compare recognizable static geometry such as:

* Floors
* Ceilings
* Long walls
* Structural edges
* Corners
* Large permanent objects
* Areas seen by multiple sensors

The goal is not perfect point-for-point overlap. Different sensor positions and scan patterns will naturally produce different measurements.

Instead, look for a consistent spatial relationship between the point clouds across the useful tracking area.

{% hint style="success" %}
Different sensor colors and VBO Snapshots are particularly useful during this stage. Keep them visible until you are confident that the complete sensor setup shares the same project coordinate system.
{% endhint %}

Repeat the **Point Align → Scale Check → Manual Fine-Tuning** workflow for every remaining sensor.

Once all sensors are aligned, they are ready to be combined and processed as a shared point cloud.

Continue with **Create the Point Cloud Volume**.
