Conventions¶
This page documents the coordinate systems, data representations, and naming conventions used throughout 123D. All source datasets are converted to these unified conventions during the conversion step so that downstream code can work with a single, consistent representation.
Coordinate System¶
123D uses a right-handed coordinate system following the ISO 8855 ground vehicle standard:
Z (up)
|
|
|________ Y (left)
/
/
X (forward)
Axis |
Direction |
|---|---|
X |
Forward (longitudinal) |
Y |
Left (lateral) |
Z |
Up (vertical) |
This convention applies to coordinates of the ego vehicle, and other agents or objects.
Rotation Conventions¶
Quaternions¶
We use quaternions to store or regularly express rotations. Quaternions use the scalar-first convention:
Component |
Index |
Description |
|---|---|---|
\(q_w\) |
|
Scalar (real) part |
\(q_x\) |
|
Imaginary i component |
\(q_y\) |
|
Imaginary j component |
\(q_z\) |
|
Imaginary k component |
Quaternions are always unit quaternions (normalized to length 1). The identity rotation is represented as \((1, 0, 0, 0)\).
Euler Angles¶
We have some utilities for working with Euler angles. Please be careful of rotations orders. We follow the Tait-Bryan ZYX intrinsic convention (yaw → pitch → roll):
Component |
Index |
Description |
|---|---|---|
Roll |
|
Rotation around the X axis |
Pitch |
|
Rotation around the Y axis |
Yaw |
|
Rotation around the Z axis |
The combined rotation matrix is computed as \(R = R_z(\text{yaw}) \cdot R_y(\text{pitch}) \cdot R_x(\text{roll})\).
Angles are always in radians and normalized to \([-\pi, \pi]\) where applicable.
Poses: SE(2) and SE(3)¶
SE(2): 2D Pose¶
A pose on the 2D plane, stored as a flat array of length 3:
Component |
Index |
Description |
|---|---|---|
x |
|
Position along the forward axis |
y |
|
Position along the left axis |
yaw |
|
Heading angle (rotation around Z) |
The corresponding homogeneous matrix is a \(3 \times 3\) transformation matrix:
SE(3): 3D Pose¶
A rigid-body pose in 3D, stored as a flat array of length 7:
Component |
Index |
Description |
|---|---|---|
x |
|
Position along the forward axis |
y |
|
Position along the left axis |
z |
|
Position along the up axis |
\(q_w\) |
|
Quaternion scalar part |
\(q_x\) |
|
Quaternion i component |
\(q_y\) |
|
Quaternion j component |
\(q_z\) |
|
Quaternion k component |
The corresponding homogeneous matrix is a \(4 \times 4\) transformation matrix:
Bounding Boxes¶
SE(2) Bounding Box¶
A 2D oriented bounding box, stored as a flat array of length 5:
Component |
Index |
Description |
|---|---|---|
x |
|
Center x position |
y |
|
Center y position |
yaw |
|
Heading angle |
length |
|
Extent along X (forward) |
width |
|
Extent along Y (left) |
SE(3) Bounding Box¶
A 3D oriented bounding box, stored as a flat array of length 10:
Component |
Index |
Description |
|---|---|---|
x, y, z |
|
Center position |
\(q_w, q_x, q_y, q_z\) |
|
Orientation quaternion |
length |
|
Extent along X (forward) |
width |
|
Extent along Y (left) |
height |
|
Extent along Z (up) |