---
title: 모션 보상
slug: api-guide/ko/GnPW43s3O9j4gz8kGeQm8
docTags: 
createdAt: 2024-12-17T10:30:58.000Z
---

어떤 라이다 구성이든 어노테이션할 때 발생하는 근본적인 문제는, 결과로 나온 포인트 클라우드가 한 순간의 스냅샷이 아니라 라이다 스윕이 이루어진 시간 구간에 걸쳐 기록된다는 점입니다. 이로 인해 어노테이션 중 문제가 발생하는데, 객체가 라이다 스윕 도중 움직일 수 있고, 예를 들어 3D 박스로 차를 어노테이션하려고 하면 그 박스는 실제 차의 크기를 나타내지 못하게 됩니다. 이 문제는 모션 보상을 통해 완화할 수 있으며, 이는 포인트 클라우드 내 모든 포인트의 타임스탬프를 동기화하는 방식입니다.

자차의 관성 측정 장치(IMU) 데이터를 포함시키면 라이다 스윕이 이루어지는 동안 차가 어떻게 움직였는지에 대한
정확한 궤적을 얻을 수 있습니다. 이를 통해
포인트 클라우드 내 포인트들이 같은 시점을 나타내도록 조정하는 모션 보상을 수행할 수 있습니다.

또한, 제공된 포인트 클라우드의 각 포인트에는 모션 보상이 동작할 수 있도록 유닉스 타임스탬프(나노초 단위)가 지정되어 있어야 합니다.

포인트를 모션 보상할 시점은 `unix_timestamp` 파라미터로 지정할 수 있습니다. 지정하지 않으면 각 프레임에 대해 프레임 내 모든 포인트의 중앙값 시각이 대신 사용됩니다.

모션 보상은 다중 라이다 구성에서처럼 여러 라이다 스윕에 대해 한 번에 어노테이션을 수행할 때나, 여러 프레임에 걸쳐 포인트 클라우드가 집계될 때 특히 중요합니다.

:::hint{type="warning"}
### 모든 유닉스 타임스탬프는 나노초 단위여야 합니다

모션 보상이 올바르게 동작하려면 일관된 시간 단위를 사용하는 것이 중요합니다. 따라서 모든 유닉스 타임스탬프는 나노초 단위로 제공되어야 합니다.
:::

포인트 클라우드 내 모든 타임스탬프와 제공된 `unix_timestamp`는 imu 데이터의 타임스탬프 범위 내에 포함되어야 함에 유의하세요. 그렇지 않으면 씬 생성이 실패합니다.

IMU 데이터는 객체의 루트에 다음과 같은 방식으로 `IMUData` 객체 목록으로 제공됩니다.

```python

from kognic.io.model.ego import IMUData
from kognic.io.model.calibration import Position, RotationQuaternion
from kognic.io.model.scene.lidars_and_cameras_sequence import LidarsAndCamerasSequence, Frame

from kognic.io.client import KognicIOClient

imu_data = [
    IMUData(
        position=Position(x=-10.44, y=126.06, z=78.817),
        rotation_quaternion=RotationQuaternion(x=-1.0, y=0.5, z=1, w=0),
        timestamp=1665997200597027072 # ns
    ),
    ...
]

frames = [
    Frame(..., unix_timestamp = 1665997358832901120),
    Frame(..., unix_timestamp = 1665997503951270144),
]


lidars_and_cam_seq = LidarsAndCamerasSequence(
    ...,
    imu_data = imu_data,
    frames = frames,
)


client = KognicIOClient()
client.lidars_and_cameras_sequence.create(
    lidars_and_cam_seq,
    project="project-ext-id",
    dryrun=True,
)
```

:::hint{type="success"}
### dryrun을 사용하여 검증하기

메서드 호출 시 `dryrun` 파라미터를 true로 설정하면 API를 사용해 씬을 검증하지만 실제로 생성하지는 않습니다.
:::

## 모션 보상 활성화/비활성화

기본적으로 IMU 데이터가 제공되면 라이다 포인트 클라우드가 있는 씬에 대해 모션 보상이 수행됩니다.

모션 보상 활성화 여부는 [씬 기능 플래그](docId\:ZczicgMDIRwPIy6xIaslN)로 제어됩니다. 기본적으로는 활성화되어 있지만, 빈 기능 플래그를 제공하여 비활성화할 수 있습니다.

```python
from kognic.io.model.scene.feature_flags import FeatureFlags

client.lidars_and_cameras_sequence.create(
    ...,
    feature_flags=FeatureFlags()
)
```

포인트 클라우드가 이미 Kognic 플랫폼 외부에서 모션 보상된 경우 모션 보상을 비활성화하는 것이 바람직할 수 있습니다.
