Skip to content

4. Egomotion and Motion Compensation

crunchyapple edited this page Oct 31, 2025 · 1 revision

Egomotion Data

Vehicle egomotion (pose trajectory) is provided in labels/egomotion/ in an anchor frame:

  • The anchor frame is aligned with the vehicle's rig frame at the start of the clip (0 yaw at t=0)
  • This provides a consistent reference frame for tracking vehicle motion throughout the clip
  • Egomotion includes the vehicle's position, orientation, velocity, acceleration, and curvature over time

File Structure (HuggingFace):

labels/egomotion/egomotion.chunk_XXXX.zip
└── {clip_id}.egomotion.parquet  (~2,224 poses per clip, ~100Hz)

Egomotion Schema:

{
    # Timing
    'timestamp': int64,                 # Absolute timestamp in microseconds
    
    # Pose - Orientation (Quaternion)
    'qx': float64,                      # Quaternion X component
    'qy': float64,                      # Quaternion Y component
    'qz': float64,                      # Quaternion Z component
    'qw': float64,                      # Quaternion W (scalar)
    
    # Pose - Position in Anchor Frame (meters)
    'x': float64,                       # X position
    'y': float64,                       # Y position
    'z': float64,                       # Z position
    
    # Velocity in Anchor Frame (m/s)
    'vx': float64,                      # X velocity
    'vy': float64,                      # Y velocity
    'vz': float64,                      # Z velocity
    
    # Acceleration in Anchor Frame (m/s²)
    'ax': float64,                      # X acceleration
    'ay': float64,                      # Y acceleration
    'az': float64,                      # Z acceleration
    
    # Vehicle Dynamics
    'curvature': float64,               # Path curvature (1/meters, inverse turning radius)
}

The Egomotion Problem

While sensors scan the environment, the vehicle is moving. Without motion compensation:

  • Points captured at different times are in different reference frames
  • Moving objects appear smeared/distorted
  • Static world appears distorted due to ego-motion

Sensor-Specific Considerations:

  • LiDAR: 100ms spin time means first and last points are 100ms apart. Motion distortion worsens with higher vehicle speeds.
  • Radar: Faster scan rates result in less motion distortion compared to LiDAR.

Motion Compensation Strategies

Since every point has a timestamp indicating when it was captured, we can correct for vehicle motion by interpolating the vehicle pose at that specific time:

for point in pointcloud:
    vehicle_pose_at_point = interpolate_pose(point.timestamp)
    point_in_world = vehicle_pose_at_point @ point_in_sensor

Clone this wiki locally