Object Definition

Ufil employs a simplified representation of 3D objects called a 2.5D object definition. This representation eliminates the z-component from position and orientation estimations, significantly reducing the state space. The object is depicted as a 3D bounding box, a rectangular prism that encompasses the object. The bounding box is defined by its center position, orientation, and dimensions (length, width, height). It encapsulates the object’s size, shape, and position. Since the z-position component is not estimated, the bounding box also assumes a zero roll and pitch. Ufil represents an object using a 2D pose with x, y, and yaw estimations. Estimations of 2D velocity and acceleration are possible but optional.

In addition to the 2D pose, Ufil introduces a 3D dimension, an existence probability, a feature vector, a classification vector, and an axis topology to the object definitions. Not all parts are used for all components of Ufil, but the ROS2 communication layer supports communications for all aspects of this object definition.

Ufil uses objects list to store and share objects. An object list is defined as:

\[\mathcal{O} = \{O_1, O_2,\dots, O_N\}\]

where \(N\) is the number of objects in the list.

Object List

Each object \(O\) is defined as:

\[O = \{ \mathbf{x}, \mathbf{P_x}, \mathbf{d}, \mathbf{P_d}, p_e, \mathbf{c}, \mathcal{A}, \mathbf{f}\}\]
  • \(\mathbf{x}\) is the state vector of the object,

  • \(\mathbf{P_x}\) is the covariance matrix of the state vector,

  • \(\mathbf{d}\) is the dimension vector of the object,

  • \(\mathbf{P_d}\) is the covariance matrix of the dimension vector,

  • \(p_e\) is the existence probability of the object,

  • \(\mathbf{c}\) is the classification vector of the object (optional),

  • \(\mathcal{A}\) is the axis topology of the object (optional).

  • \(\mathbf{f}\) is the feature vector of the object (optional),

The state \(\mathbf{x}\) of each object is representes as:

\[\mathbf{x} = \left[ p_x, p_y, v_x, v_y, a_x, a_y, \theta, \omega \right]^T,\]

where:

  • \(p_x, p_y\) are the Cartesian coordinates of the vehicle,

  • \(v_x, v_y\) is the velocity (optional),

  • \(a_x, a_y\) is the acceleration (optional),

  • \(\theta\) is the heading angle (orientation) (optional),

  • \(\omega\) is the heading angle rate.

A possible covariance \(\mathbf{P_x}\) of the state vector is represented as:

\[\begin{split}\mathbf{P_x} = \begin{bmatrix} \sigma_{p_x}^2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & \sigma_{p_y}^2 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & \sigma_{v_x}^2 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & \sigma_{v_y}^2 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & -1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & \sigma_{\theta}^2 & 0\\ 0 & 0 & 0 & 0 & 0 & 0 & 0 &\sigma_{\omega}^2 \end{bmatrix}\end{split}\]

where \(\sigma\) is the standard deviation of the corresponding component. The covariance matrix is a square matrix that describes the variance and covariance of the state vector. The diagonal elements represent the variance of each component, while the off-diagonal elements represent the covariance between different components. By definiton the covariance matrix is symmetric and positive semi-definite but in practive enforcing the matrix to be strictly positive definite is more desirable. The example above shows has \(-1\) for the acceleration components, which means that the acceleration is not estimated. The example also shows zeroes on the off-diagonal elements, which means that the components are not correlated. This is generally not the case for the true covariance matrix but estimation of cross-covariance is not easly archived.

Note

Only optional parameters can be set to \(-1\). The other values in \(\mathbf{P_x}\) must be positive or zero. The \(-1\) value is used to indicate that the corresponding component is not estimated. This is useful for components that are not relevant for the specific application or when the estimation is not available.

Note

The \(\mathbf{P_x}\) matrix must stay symmetric and positive definite. This means that the diagonal elements should be postive and not zero as zero values may lead to numerical instability. The diagonal elements should also be equal in both sides of the diagonal. The off-diagonal elements should be equal in both sides of the diagonal.

The dimension \(\mathbf{d}\) of the system is represented as:

\[\mathbf{d} = \left[ l, w, h \right]^T,\]

where:

  • \(l\) is the length of the vehicle,

  • \(w\) is the width,

  • \(h\) is the height (optional).

A possible covariance \(\mathbf{P_d}\) of the dimension vector is represented as:

\[\begin{split}\mathbf{P_d} = \begin{bmatrix} \sigma_{l}^2 & 0 & 0 \\ 0 & \sigma_{w}^2 & 0 \\ 0 & 0 & -1 \end{bmatrix}\end{split}\]

where \(\sigma\) is the standard deviation of the corresponding component. The covariance matrix is constructed analogously to the state vector covariance matrix. The diagonal elements represent the variance of each component, while the off-diagonal elements represent the covariance between different components. The same rules apply as for the state vector covariance matrix.

The existence probability \(p_e\) of the object is represented as:

\[p_e \in [0, 1]\]

where \(p_e\) is the probability that the object exists. The value of \(p_e\) is between 0 and 1, where 0 means that the object does not exist and 1 means that the object exists with certainty.

The classification vector \(\mathbf{c}\) of the object is represented as:

\[\mathbf{c} = \left[ c_{car}, c_{truck}, c_{motorcycle}, c_{bicycle}, c_{pedestrian}, c_{stationary}, c_{other} \right]^T,\]

where:

  • \(c_{car}\) is the probability that the object is a car,

  • \(c_{truck}\) is the probability that the object is a truck,

  • \(c_{motorcycle}\) is the probability that the object is a motorcycle,

  • \(c_{bicycle}\) is the probability that the object is a bicycle,

  • \(c_{pedestrian}\) is the probability that the object is a pedestrian,

  • \(c_{stationary}\) is the probability that the object is stationary,

  • \(c_{other}\) is the probability that the object is of another type or unknown.

The classification vector is a vector of probabilities that the object belongs to a certain class. The sum of all elements in the classification vector should be equal to 1.

The axis topology \(\mathcal{A}\) describes the spatial arrangement of the objects’s tires. It is represented as:

\[\mathcal{A} = \{A_1, A_2,\dots, A_M\}\]

where \(M\) is the number of axles in the list.

Each axle \(A\) is defined as:

\[A = \{ t_w, \sigma^2_{t_w}, t_d, \sigma^2_{t_d}, \mathbf{b} \}\]

where:

  • \(t_w\) is the track width of the axle,

  • \(\sigma^2_{t_w}\) is the variance of the track width,

  • \(t_d\) is the distance between center of the axle and the center of the vehicle,

  • \(\sigma^2_{t_d}\) is the variance of the distance between center of the axle and the center of the vehicle,

  • \(\mathbf{b}\) is a boolean vector indicating the presence of a tire.

Both variance need to be positive.

The tire presence vector \(\mathbf{b}\) is defined as:

\[\mathbf{b} = \left[b_1, b_2, \ldots, b_M\right]^T\]

where:

  • \(b_i\) is a boolean value indicating the presence of the tire \(i\) on axle. This one, two, or four elements depending on the axle configuration. The vector is ordered from left to right in driving direction.

Warning

The feature vector is not yet fully implemented in ufil. The message definition exists and the basic structure is in place, but the actual feature extraction and processing components are still under development.

The feature vector \(\mathbf{f}\) of the object is represented as:

\[\mathbf{f} = \left[ f_{FL}, f_{FR}, f_{RL}, f_{RR}, f_{L}, f_{R}, f_{F}, f_{B} f_{C}\right]^T,\]

where:

  • \(f_{FL}\) is the feature of the front left corner,

  • \(f_{FR}\) is the feature of the front right corner,

  • \(f_{RL}\) is the feature of the rear left corner,

  • \(f_{RR}\) is the feature of the rear right corner,

  • \(f_{L}\) is the feature of the left side,

  • \(f_{R}\) is the feature of the right side,

  • \(f_{F}\) is the feature of the front side,

  • \(f_{B}\) is the feature of the back side,

  • \(f_{C}\) is the feature of the center.

The feature vector is a boolean vector, where each element is either 0 or 1. A value of 1 indicates that the feature is available, while a value of 0 indicates that the feature is not available. For example, if a lidar sensor is used to track the object commonly an edge feature (L, R, F, B) or an corner feature (FL, FR, RL, RR) is available. If the object performs self state estimation, the feature vector including the center feature (C) is available.