+ reg
+ reg.drone
+ reg.drone.physics
+ reg.drone.physics.acoustics
+ reg.drone.physics.acoustics.Note (v0.1) [extent 12.0 bytes] [max length 12.0 bytes]
Description of a generic musical note in terms of basic physical quantities. This type may be used to control sound notification emitters assuming the best effort policy: if the requested parameters exceed the capabilities of the emitter, the closest possible values should be assumed.
+ uavcan.si.unit.frequency.Scalar (v1.0) frequency [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 hertz [max length 4.0 bytes]
+ uavcan.si.unit.duration.Scalar (v1.0) duration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 second [max length 4.0 bytes]
+ uavcan.si.unit.power.Scalar (v1.0) acoustic_power [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 watt [max length 4.0 bytes]
+ reg.drone.physics.dynamics
+ reg.drone.physics.dynamics.rotation
+ reg.drone.physics.dynamics.rotation.Planar (v0.1) [extent 16.0 bytes] [max length 16.0 bytes]
Positive torque is co-directed with positive position/velocity/acceleration. Provided states may allow the consumer to deduce certain hidden states such as the moment of inertia.
+ reg.drone.physics.kinematics.rotation.Planar (v0.1) kinematics [extent 12.0 bytes] [max length 12.0 bytes]
Rotation about an axis.
+ uavcan.si.unit.angle.Scalar (v1.0) angular_position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian [max length 4.0 bytes]
+ uavcan.si.unit.angular_velocity.Scalar (v1.0) angular_velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second [max length 4.0 bytes]
+ uavcan.si.unit.angular_acceleration.Scalar (v1.0) angular_acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second_per_second [max length 4.0 bytes]
+ uavcan.si.unit.torque.Scalar (v1.0) torque [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 newton_meter [max length 4.0 bytes]
NaN if unknown
+ reg.drone.physics.dynamics.rotation.PlanarTs (v0.1) [extent 23.0 bytes] [max length 23.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.dynamics.rotation.Planar (v0.1) value [extent 16.0 bytes] [max length 16.0 bytes]
Positive torque is co-directed with positive position/velocity/acceleration. Provided states may allow the consumer to deduce certain hidden states such as the moment of inertia.
+ reg.drone.physics.kinematics.rotation.Planar (v0.1) kinematics [extent 12.0 bytes] [max length 12.0 bytes]
Rotation about an axis.
+ uavcan.si.unit.angle.Scalar (v1.0) angular_position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian [max length 4.0 bytes]
+ uavcan.si.unit.angular_velocity.Scalar (v1.0) angular_velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second [max length 4.0 bytes]
+ uavcan.si.unit.angular_acceleration.Scalar (v1.0) angular_acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second_per_second [max length 4.0 bytes]
+ uavcan.si.unit.torque.Scalar (v1.0) torque [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 newton_meter [max length 4.0 bytes]
NaN if unknown
+ reg.drone.physics.dynamics.translation
+ reg.drone.physics.dynamics.translation.Linear (v0.1) [extent 16.0 bytes] [max length 16.0 bytes]
Positive force is co-directed with positive position/velocity/acceleration. Provided kinetic states may allow the consumer to deduce certain hidden states such as the mass of the load.
+ reg.drone.physics.kinematics.translation.Linear (v0.1) kinematics [extent 12.0 bytes] [max length 12.0 bytes]
Movement along an axis.
+ uavcan.si.unit.length.Scalar (v1.0) position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter [max length 4.0 bytes]
+ uavcan.si.unit.velocity.Scalar (v1.0) velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second [max length 4.0 bytes]
+ uavcan.si.unit.acceleration.Scalar (v1.0) acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second_per_second [max length 4.0 bytes]
+ uavcan.si.unit.force.Scalar (v1.0) force [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 newton [max length 4.0 bytes]
NaN if unknown
+ reg.drone.physics.dynamics.translation.LinearTs (v0.1) [extent 23.0 bytes] [max length 23.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.dynamics.translation.Linear (v0.1) value [extent 16.0 bytes] [max length 16.0 bytes]
Positive force is co-directed with positive position/velocity/acceleration. Provided kinetic states may allow the consumer to deduce certain hidden states such as the mass of the load.
+ reg.drone.physics.kinematics.translation.Linear (v0.1) kinematics [extent 12.0 bytes] [max length 12.0 bytes]
Movement along an axis.
+ uavcan.si.unit.length.Scalar (v1.0) position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter [max length 4.0 bytes]
+ uavcan.si.unit.velocity.Scalar (v1.0) velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second [max length 4.0 bytes]
+ uavcan.si.unit.acceleration.Scalar (v1.0) acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second_per_second [max length 4.0 bytes]
+ uavcan.si.unit.force.Scalar (v1.0) force [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 newton [max length 4.0 bytes]
NaN if unknown
+ reg.drone.physics.electricity
+ reg.drone.physics.electricity.Power (v0.1) [extent 8.0 bytes] [max length 8.0 bytes]
DC or AC line electric power quantities. Generally, the following current sign convention applies: - Positive current flows from the electric power supply network to the load (e.g., an actuator). - If the electric network is the load itself powered from a source (e.g., battery), the current is negative.
+ uavcan.si.unit.electric_current.Scalar (v1.0) current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
+ reg.drone.physics.electricity.PowerTs (v0.1) [extent 15.0 bytes] [max length 15.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.electricity.Power (v0.1) value [extent 8.0 bytes] [max length 8.0 bytes]
DC or AC line electric power quantities. Generally, the following current sign convention applies: - Positive current flows from the electric power supply network to the load (e.g., an actuator). - If the electric network is the load itself powered from a source (e.g., battery), the current is negative.
+ uavcan.si.unit.electric_current.Scalar (v1.0) current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
+ reg.drone.physics.electricity.Source (v0.1) [extent 16.0 bytes] [max length 16.0 bytes]
A generic source or sink of electric power (battery, turbogenerator, braking resistor, etc.). Low-pass filtering should be applied to avoid aliasing effects (as is the case everywhere else).
+ reg.drone.physics.electricity.Power (v0.1) power [extent 8.0 bytes] [max length 8.0 bytes]
DC or AC line electric power quantities. Generally, the following current sign convention applies: - Positive current flows from the electric power supply network to the load (e.g., an actuator). - If the electric network is the load itself powered from a source (e.g., battery), the current is negative.
+ uavcan.si.unit.electric_current.Scalar (v1.0) current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
Total instant load power. Positive current flows into the source (power sinking). Negative current flows from the source to the power supply network (power sourcing).
+ uavcan.si.unit.energy.Scalar (v1.0) energy [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 joule [max length 4.0 bytes]
A pessimistic estimate of the amount of energy that can be reclaimed from the source in its current state. This may be dependent on the state of charge/health (for batteries), temperature, load profile, humidity, etc. Negative values may be reported to indicate overdischarge or depletion of the reserve energy. This value approximates (full_energy + int(load_power dt)) plus the environmental influences on the source. Having the instant power, the time to depletion is estimated as (energy/-power). When charging (for batteries), the remaining time to full charge can be found similarly as ((full_energy-energy)/power). For the sake of illustration, if this type was used to represent the state of a braking resistor, then this value would be negative indicating the amount of dissipated energy.
+ uavcan.si.unit.energy.Scalar (v1.0) full_energy [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 joule [max length 4.0 bytes]
A pessimistic estimate of the amount of energy that can be reclaimed from a fresh source (fully fueled generator or a fully charged battery) under the current conditions (SoH, temperature, load profile, etc).
+ reg.drone.physics.electricity.SourceTs (v0.1) [extent 23.0 bytes] [max length 23.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.electricity.Source (v0.1) value [extent 16.0 bytes] [max length 16.0 bytes]
A generic source or sink of electric power (battery, turbogenerator, braking resistor, etc.). Low-pass filtering should be applied to avoid aliasing effects (as is the case everywhere else).
+ reg.drone.physics.electricity.Power (v0.1) power [extent 8.0 bytes] [max length 8.0 bytes]
DC or AC line electric power quantities. Generally, the following current sign convention applies: - Positive current flows from the electric power supply network to the load (e.g., an actuator). - If the electric network is the load itself powered from a source (e.g., battery), the current is negative.
+ uavcan.si.unit.electric_current.Scalar (v1.0) current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
Total instant load power. Positive current flows into the source (power sinking). Negative current flows from the source to the power supply network (power sourcing).
+ uavcan.si.unit.energy.Scalar (v1.0) energy [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 joule [max length 4.0 bytes]
A pessimistic estimate of the amount of energy that can be reclaimed from the source in its current state. This may be dependent on the state of charge/health (for batteries), temperature, load profile, humidity, etc. Negative values may be reported to indicate overdischarge or depletion of the reserve energy. This value approximates (full_energy + int(load_power dt)) plus the environmental influences on the source. Having the instant power, the time to depletion is estimated as (energy/-power). When charging (for batteries), the remaining time to full charge can be found similarly as ((full_energy-energy)/power). For the sake of illustration, if this type was used to represent the state of a braking resistor, then this value would be negative indicating the amount of dissipated energy.
+ uavcan.si.unit.energy.Scalar (v1.0) full_energy [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 joule [max length 4.0 bytes]
A pessimistic estimate of the amount of energy that can be reclaimed from a fresh source (fully fueled generator or a fully charged battery) under the current conditions (SoH, temperature, load profile, etc).
+ reg.drone.physics.kinematics
+ reg.drone.physics.kinematics.cartesian
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ reg.drone.physics.kinematics.cartesian.PointState (v0.1) [extent 36.0 bytes] [max length 36.0 bytes]
The kinematic state of a point, as opposed to that of a body, is devoid of rotation information. Therefore, the velocity is specified in the parent coordinate frame.
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.velocity.Vector3 (v1.0) velocity [extent 12.0 bytes] [max length 12.0 bytes]
+ reg.drone.physics.kinematics.cartesian.PointStateVar (v0.1) [extent 60.0 bytes] [max length 60.0 bytes]
See PointState for details.
+ reg.drone.physics.kinematics.cartesian.PointVar (v0.1) position [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.2) velocity [extent 24.0 bytes] [max length 24.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.unit.velocity.Vector3 (v1.0) value [extent 12.0 bytes] [max length 12.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.cartesian.PointStateVarTs (v0.1) [extent 67.0 bytes] [max length 67.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.cartesian.PointStateVar (v0.1) value [extent 60.0 bytes] [max length 60.0 bytes]
See PointState for details.
+ reg.drone.physics.kinematics.cartesian.PointVar (v0.1) position [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.2) velocity [extent 24.0 bytes] [max length 24.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.unit.velocity.Vector3 (v1.0) value [extent 12.0 bytes] [max length 12.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.cartesian.PointVar (v0.1) [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ reg.drone.physics.kinematics.cartesian.PoseVar (v0.1) [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.PoseVarTs (v0.1) [extent 89.0 bytes] [max length 89.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.cartesian.PoseVar (v0.1) value [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.State (v0.1) [extent 64.0 bytes] [max length 64.0 bytes]
First-order kinematic state of a body in space: pose and twist. The pose defines a coordinate system transformation from the parent frame to the child frame. The twist is specified in the child frame (body frame).
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) pose [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) twist [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ reg.drone.physics.kinematics.cartesian.StateVar (v0.1) [extent 148.0 bytes] [max length 148.0 bytes]
See State for details. This type extends it with covariance matrices.
+ reg.drone.physics.kinematics.cartesian.PoseVar (v0.1) pose [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) twist [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.cartesian.StateVarTs (v0.1) [extent 155.0 bytes] [max length 155.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.cartesian.StateVar (v0.1) value [extent 148.0 bytes] [max length 148.0 bytes]
See State for details. This type extends it with covariance matrices.
+ reg.drone.physics.kinematics.cartesian.PoseVar (v0.1) pose [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Cartesian coordinates of a point in space.
+ uavcan.si.unit.length.WideVector3 (v1.0) value [extent 24.0 bytes] [max length 24.0 bytes]
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) twist [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.cartesian.TwistVarTs (v0.1) [extent 73.0 bytes] [max length 73.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) value [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.geodetic
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ reg.drone.physics.kinematics.geodetic.PointState (v0.1) [extent 36.0 bytes] [max length 36.0 bytes]
The kinematic state of a point, as opposed to that of a body, is devoid of rotation information. Therefore, the velocity is specified in the parent coordinate frame.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.velocity.Vector3 (v1.0) velocity [extent 12.0 bytes] [max length 12.0 bytes]
+ reg.drone.physics.kinematics.geodetic.PointStateVar (v0.1) [extent 60.0 bytes] [max length 60.0 bytes]
See PointState for details.
+ reg.drone.physics.kinematics.geodetic.PointVar (v0.1) position [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix. The position covariance is defined relative to a tangential plane through the specified latitude/longitude. Element ordering: latitude, longitude, altitude. It is chosen to match the axis ordering of the NED frame.
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.2) velocity [extent 24.0 bytes] [max length 24.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.unit.velocity.Vector3 (v1.0) value [extent 12.0 bytes] [max length 12.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.geodetic.PointStateVarTs (v0.1) [extent 67.0 bytes] [max length 67.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.geodetic.PointStateVar (v0.1) value [extent 60.0 bytes] [max length 60.0 bytes]
See PointState for details.
+ reg.drone.physics.kinematics.geodetic.PointVar (v0.1) position [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix. The position covariance is defined relative to a tangential plane through the specified latitude/longitude. Element ordering: latitude, longitude, altitude. It is chosen to match the axis ordering of the NED frame.
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.2) velocity [extent 24.0 bytes] [max length 24.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.unit.velocity.Vector3 (v1.0) value [extent 12.0 bytes] [max length 12.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.geodetic.PointVar (v0.1) [extent 36.0 bytes] [max length 36.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[meter^2] Upper-right triangle of the covariance matrix. The position covariance is defined relative to a tangential plane through the specified latitude/longitude. Element ordering: latitude, longitude, altitude. It is chosen to match the axis ordering of the NED frame.
+ reg.drone.physics.kinematics.geodetic.Pose (v0.1) [extent 40.0 bytes] [max length 40.0 bytes]
Zero rotation is the state where the axes of the body frame are aligned with the axes of the local NED frame: X points north, Y points east, Z points down.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ reg.drone.physics.kinematics.geodetic.PoseVar (v0.1) [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
Zero rotation is the state where the axes of the body frame are aligned with the axes of the local NED frame: X points north, Y points east, Z points down.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.geodetic.State (v0.1) [extent 64.0 bytes] [max length 64.0 bytes]
First-order kinematic state of a body near the surface of a planet. The pose defines a coordinate system transformation from the parent frame to the child frame. The twist is specified in the child frame (body frame).
+ reg.drone.physics.kinematics.geodetic.Pose (v0.1) pose [extent 40.0 bytes] [max length 40.0 bytes]
Zero rotation is the state where the axes of the body frame are aligned with the axes of the local NED frame: X points north, Y points east, Z points down.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) twist [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ reg.drone.physics.kinematics.geodetic.StateVar (v0.1) [extent 148.0 bytes] [max length 148.0 bytes]
See State for details. This type extends it with covariance matrices.
+ reg.drone.physics.kinematics.geodetic.PoseVar (v0.1) pose [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
Zero rotation is the state where the axes of the body frame are aligned with the axes of the local NED frame: X points north, Y points east, Z points down.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) twist [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.geodetic.StateVarTs (v0.1) [extent 155.0 bytes] [max length 155.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.geodetic.StateVar (v0.1) value [extent 148.0 bytes] [max length 148.0 bytes]
See State for details. This type extends it with covariance matrices.
+ reg.drone.physics.kinematics.geodetic.PoseVar (v0.1) pose [extent 82.0 bytes] [max length 82.0 bytes]
+ reg.drone.physics.kinematics.geodetic.Pose (v0.1) value [extent 40.0 bytes] [max length 40.0 bytes]
Zero rotation is the state where the axes of the body frame are aligned with the axes of the local NED frame: X points north, Y points east, Z points down.
+ reg.drone.physics.kinematics.geodetic.Point (v0.1) position [extent 24.0 bytes] [max length 24.0 bytes]
Geodetic position: latitude, longitude, and altitude. The order is chosen to match the axis ordering of the NED frame. The size and layout of this structure is equal to the Cartesian pose type.
saturated float64 latitude [max length 8.0 bytes]
[radian]
saturated float64 longitude [max length 8.0 bytes]
[radian]
+ uavcan.si.unit.length.WideScalar (v1.0) altitude [extent 8.0 bytes] [max length 8.0 bytes]
saturated float64 meter [max length 8.0 bytes]
Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL.
+ uavcan.si.unit.angle.Quaternion (v1.0) orientation [extent 16.0 bytes] [max length 16.0 bytes]
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: [parent frame] [child (body) frame] translation along axis rotation about axis X Y Z X Y Z +----------------------------------------------- X position | Y position | m^2 m*rad Z position | X rotation | Y rotation | rad^2 Z rotation |
+ reg.drone.physics.kinematics.cartesian.TwistVar (v0.1) twist [extent 66.0 bytes] [max length 66.0 bytes]
+ reg.drone.physics.kinematics.cartesian.Twist (v0.1) value [extent 24.0 bytes] [max length 24.0 bytes]
Motion of a rigid body in 3D space defined in the body frame.
+ uavcan.si.unit.velocity.Vector3 (v1.0) linear [extent 12.0 bytes] [max length 12.0 bytes]
Linear velocity in the body frame.
+ uavcan.si.unit.angular_velocity.Vector3 (v1.0) angular [extent 12.0 bytes] [max length 12.0 bytes]
Angular velocity about the fixed axes of the body frame (extrinsic).
+ saturated float16[21] covariance_urt [max length 42.0 bytes]
saturated float16
Upper-right triangle of the covariance matrix: translation along axis rotation about axis X Y Z X Y Z +---------------------------------------------- X velocity | Y velocity | (m/s)^2 (m*rad)/s^2 Z velocity | X angular velocity | Y angular velocity | (rad/s)^2 Z angular velocity |
+ reg.drone.physics.kinematics.rotation
+ reg.drone.physics.kinematics.rotation.Planar (v0.1) [extent 12.0 bytes] [max length 12.0 bytes]
Rotation about an axis.
+ uavcan.si.unit.angle.Scalar (v1.0) angular_position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian [max length 4.0 bytes]
+ uavcan.si.unit.angular_velocity.Scalar (v1.0) angular_velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second [max length 4.0 bytes]
+ uavcan.si.unit.angular_acceleration.Scalar (v1.0) angular_acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second_per_second [max length 4.0 bytes]
+ reg.drone.physics.kinematics.rotation.PlanarTs (v0.1) [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.rotation.Planar (v0.1) value [extent 12.0 bytes] [max length 12.0 bytes]
Rotation about an axis.
+ uavcan.si.unit.angle.Scalar (v1.0) angular_position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian [max length 4.0 bytes]
+ uavcan.si.unit.angular_velocity.Scalar (v1.0) angular_velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second [max length 4.0 bytes]
+ uavcan.si.unit.angular_acceleration.Scalar (v1.0) angular_acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 radian_per_second_per_second [max length 4.0 bytes]
+ reg.drone.physics.kinematics.translation
+ reg.drone.physics.kinematics.translation.Linear (v0.1) [extent 12.0 bytes] [max length 12.0 bytes]
Movement along an axis.
+ uavcan.si.unit.length.Scalar (v1.0) position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter [max length 4.0 bytes]
+ uavcan.si.unit.velocity.Scalar (v1.0) velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second [max length 4.0 bytes]
+ uavcan.si.unit.acceleration.Scalar (v1.0) acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second_per_second [max length 4.0 bytes]
+ reg.drone.physics.kinematics.translation.LinearTs (v0.1) [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.translation.Linear (v0.1) value [extent 12.0 bytes] [max length 12.0 bytes]
Movement along an axis.
+ uavcan.si.unit.length.Scalar (v1.0) position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter [max length 4.0 bytes]
+ uavcan.si.unit.velocity.Scalar (v1.0) velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second [max length 4.0 bytes]
+ uavcan.si.unit.acceleration.Scalar (v1.0) acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second_per_second [max length 4.0 bytes]
+ reg.drone.physics.kinematics.translation.LinearVarTs (v0.1) [extent 25.0 bytes] [max length 25.0 bytes]
This is a structural subtype of LinearTs. Use best guess if the error variance is unknown.
+ reg.drone.physics.kinematics.translation.LinearTs (v0.1) value [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.kinematics.translation.Linear (v0.1) value [extent 12.0 bytes] [max length 12.0 bytes]
Movement along an axis.
+ uavcan.si.unit.length.Scalar (v1.0) position [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter [max length 4.0 bytes]
+ uavcan.si.unit.velocity.Scalar (v1.0) velocity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second [max length 4.0 bytes]
+ uavcan.si.unit.acceleration.Scalar (v1.0) acceleration [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 meter_per_second_per_second [max length 4.0 bytes]
saturated float16 position_error_variance [max length 2.0 bytes]
[meter^2]
saturated float16 velocity_error_variance [max length 2.0 bytes]
[(meter/second)^2]
saturated float16 acceleration_error_variance [max length 2.0 bytes]
[(meter/second^2)^2]
+ reg.drone.physics.kinematics.translation.Velocity1VarTs (v0.1) [extent 13.0 bytes] [max length 13.0 bytes]
Linear velocity with timestamp and covariance. Observe that this is a structural subtype of uavcan.si.sample.velocity.Scalar.1.0. For a non-timestamped estimate without covariance use the raw SI type directly.
+ uavcan.si.sample.velocity.Scalar (v1.0) value [extent 11.0 bytes] [max length 11.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
saturated float32 meter_per_second [max length 4.0 bytes]
saturated float16 error_variance [max length 2.0 bytes]
[(meter/second)^2]
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.2) [extent 24.0 bytes] [max length 24.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.unit.velocity.Vector3 (v1.0) value [extent 12.0 bytes] [max length 12.0 bytes]
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.kinematics.translation.Velocity3Var (v0.1) [deprecated] [extent 31.0 bytes] [max length 31.0 bytes]
Linear velocity with covariance. Observe that this is a structural subtype of uavcan.si.unit.velocity.Scalar.1.0.
+ uavcan.si.sample.velocity.Vector3 (v1.0) value [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ saturated float32[3] meter_per_second [max length 12.0 bytes]
saturated float32
+ saturated float16[6] covariance_urt [max length 12.0 bytes]
saturated float16
[(meter/second)^2] Upper-right triangle of the covariance matrix.
+ reg.drone.physics.optics
+ reg.drone.physics.optics.HighColor (v0.1) [extent 2.0 bytes] [max length 2.0 bytes]
Color in the standard 16-bit 5-6-5 RGB format (green is wider due to non-uniform color sensitivity of the human eye). https://en.wikipedia.org/wiki/High_color For reasons of unification, a monochrome light can be modeled using the same type, where the brightness is defined as the mean of the color components normalized to one: brightness = (red/MAX_RED + green/MAX_GREEN + blue/MAX_BLUE) / 3
saturated uint5 red [max length 5 bits]
saturated uint6 green [max length 6 bits]
saturated uint5 blue [max length 5 bits]
saturated uint5 MAX_RED = 31
saturated uint6 MAX_GREEN = 63
saturated uint5 MAX_BLUE = 31
+ reg.drone.physics.thermodynamics
+ reg.drone.physics.thermodynamics.PressureTempVarTs (v0.1) [extent 21.0 bytes] [max length 21.0 bytes]
Timestamped fluid pressure and temperature (sampled synchronously) with covariance. Observe that this is a structural subtype of uavcan.si.sample.pressure.Scalar.1.0.
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ uavcan.si.unit.pressure.Scalar (v1.0) pressure [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 pascal [max length 4.0 bytes]
+ uavcan.si.unit.temperature.Scalar (v1.0) temperature [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
+ saturated float16[3] covariance_urt [max length 6.0 bytes]
saturated float16
The upper-right triangle of the covariance matrix (following the matrix packing rules defined in Specification). 0 -- pascal^2 1 -- pascal*kelvin 2 -- kelvin^2
+ reg.drone.physics.time
+ reg.drone.physics.time.TAI64 (v0.1) [extent 8.0 bytes] [max length 8.0 bytes]
Standard TAI64N time label (https://cr.yp.to/libtai/tai64.html). Quote from the source: TAI stands for Temps Atomique International, the current international real-time standard. One TAI second is defined as the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the cesium atom. TAI also specifies a frame of reference. Further discussion of special relativity is outside the scope of this document. A TAI64 label is an integer between 0 and 2^64 referring to a particular second of real time. Integer s refers to: - the TAI second beginning exactly 2^62 - s seconds before the beginning of 1970 TAI, if s is between 0 inclusive and 2^62 exclusive; or - the TAI second beginning exactly s - 2^62 seconds after the beginning of 1970 TAI, if s is between 2^62 inclusive and 2^63 exclusive.
saturated int64 tai64n [max length 8.0 bytes]
[nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI.
+ reg.drone.physics.time.TAI64Var (v0.1) [extent 12.0 bytes] [max length 12.0 bytes]
+ reg.drone.physics.time.TAI64 (v0.1) value [extent 8.0 bytes] [max length 8.0 bytes]
Standard TAI64N time label (https://cr.yp.to/libtai/tai64.html). Quote from the source: TAI stands for Temps Atomique International, the current international real-time standard. One TAI second is defined as the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the cesium atom. TAI also specifies a frame of reference. Further discussion of special relativity is outside the scope of this document. A TAI64 label is an integer between 0 and 2^64 referring to a particular second of real time. Integer s refers to: - the TAI second beginning exactly 2^62 - s seconds before the beginning of 1970 TAI, if s is between 0 inclusive and 2^62 exclusive; or - the TAI second beginning exactly s - 2^62 seconds after the beginning of 1970 TAI, if s is between 2^62 inclusive and 2^63 exclusive.
saturated int64 tai64n [max length 8.0 bytes]
[nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI.
saturated float32 error_variance [max length 4.0 bytes]
[second^2] Error variance, in second squared, of the time estimate. Infinity indicates that the time estimates are not yet available. A non-positive value indicates that the error variance is unknown.
+ reg.drone.physics.time.TAI64VarTs (v0.1) [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.time.TAI64Var (v0.1) value [extent 12.0 bytes] [max length 12.0 bytes]
+ reg.drone.physics.time.TAI64 (v0.1) value [extent 8.0 bytes] [max length 8.0 bytes]
Standard TAI64N time label (https://cr.yp.to/libtai/tai64.html). Quote from the source: TAI stands for Temps Atomique International, the current international real-time standard. One TAI second is defined as the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the cesium atom. TAI also specifies a frame of reference. Further discussion of special relativity is outside the scope of this document. A TAI64 label is an integer between 0 and 2^64 referring to a particular second of real time. Integer s refers to: - the TAI second beginning exactly 2^62 - s seconds before the beginning of 1970 TAI, if s is between 0 inclusive and 2^62 exclusive; or - the TAI second beginning exactly s - 2^62 seconds after the beginning of 1970 TAI, if s is between 2^62 inclusive and 2^63 exclusive.
saturated int64 tai64n [max length 8.0 bytes]
[nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI.
saturated float32 error_variance [max length 4.0 bytes]
[second^2] Error variance, in second squared, of the time estimate. Infinity indicates that the time estimates are not yet available. A non-positive value indicates that the error variance is unknown.
+ reg.drone.service
+ reg.drone.service.actuator
+ reg.drone.service.actuator.common
An actuator is a device that actuates a mechanical load using electric energy from the high-voltage DC power bus. There are multiple kinds of actuators with a dedicated namespace for each; additionally, this "common" namespace hosts certain elements shared between several (or all) kinds.
+ reg.drone.service.actuator.common.FaultFlags (v0.1) [extent 2.0 bytes] [max length 2.0 bytes]
A collection of detailed fault flags indicating problems detected by the service provider. A fault flag is set when the corresponding parameter exceeds its safe operating area (SOA) as defined by the vendor; see https://en.wikipedia.org/wiki/Safe_operating_area. As long as at least one flag is set, the service health should not be NOMINAL.
saturated bool overload [max length 1 bits]
The load is above SOA or regeneration below the SOA.
saturated bool voltage [max length 1 bits]
Supply voltage is above or below the SOA.
saturated bool motor_temperature [max length 1 bits]
saturated bool controller_temperature [max length 1 bits]
Temperature is above or below the SOA.
saturated bool velocity [max length 1 bits]
The absolute velocity of the load is above the SOA.
saturated bool mechanical [max length 1 bits]
The load cannot be driven due to a mechanical failure.
saturated bool vibration [max length 1 bits]
The mechanical vibration level exceeds the SOA.
saturated bool configuration [max length 1 bits]
Configuration is missing or invalid.
saturated bool control_mode [max length 1 bits]
The requested control mode is not supported by the actuator.
void6 [max length 6 bits]
saturated bool other [max length 1 bits]
None of the above (vendor-specific).
+ reg.drone.service.actuator.common.Feedback (v0.1) [extent 63.0 bytes] [max length 67.0 bytes]
This high-rate feedback should be published once immediately after a setpoint is applied. It follows that the publication rate of these messages equals that of the setpoint messages. When setpoint messages are not being emitted, the publication rate is implementation-defined, but it should not be lower than the defined limit. The priority of this message should be the same as that of the corresponding setpoint message.
+ reg.drone.service.common.Heartbeat (v0.1) heartbeat [extent 2.0 bytes] [max length 2.0 bytes]
The function of the service heartbeat is similar to that of the node heartbeat defined in the standard namespace, except that it is used on a per-service basis, meaning that there may be more than one publisher per node. The service heartbeat should be published either on a separate subject, or as a structural supertype of a service-specific status subject. The publication rate is service-specific but it should not be lower than 1 Hz. This is a structural subtype of the Readiness type.
+ reg.drone.service.common.Readiness (v0.1) readiness [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ uavcan.node.Health (v1.0) health [extent 1.0 bytes] [max length 1.0 bytes]
Abstract component health information. If the node performs multiple activities (provides multiple network services), its health status should reflect the status of the worst-performing activity (network service). Follows: https://www.law.cornell.edu/cfr/text/14/23.1322 https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_25.1322-1.pdf section 6
saturated uint2 value [max length 2 bits]
saturated uint2 NOMINAL = 0
The component is functioning properly (nominal).
saturated uint2 ADVISORY = 1
A critical parameter went out of range or the component encountered a minor failure that does not prevent the subsystem from performing any of its real-time functions.
saturated uint2 CAUTION = 2
The component encountered a major failure and is performing in a degraded mode or outside of its designed limitations.
saturated uint2 WARNING = 3
The component suffered a fatal malfunction and is unable to perform its intended function.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
Any service that is not in the SLEEP state should publish its heartbeat (or a derived status) at least at this rate.
If ENGAGED, the actuator provides service according to its nominal performance characteristics. Otherwise, no availability guarantees are provided. Notice that the feedback type is a structural subtype of the heartbeat type, so one can subscribe to a feedback subject using the heartbeat type. Similarly, the heartbeat type is a structural subtype of the Readiness type, meaning that one can use the Readiness type as well.
saturated int8 demand_factor_pct [max length 1.0 bytes]
[percent] Percentage of the maximum rated output intensity. May exceed +-100% in case of overload. Positive value indicates that power is applied to the load; negative indicates that power is being sunk from the load into the actuator power source. The consumer of this message may leverage this information to manage the control loop saturation.
+ reg.drone.service.actuator.common.Status (v0.1) [extent 63.0 bytes] [max length 67.0 bytes]
Auxiliary actuator status information published at a low rate asynchronously, usually at 1 Hz. It is mostly intended for diagnostics and logging purposes. In this revision this type is common for all kinds of actuators, but in the future it may be replaced with per-kind specializations.
+ uavcan.si.unit.temperature.Scalar (v1.0) motor_temperature [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
+ uavcan.si.unit.temperature.Scalar (v1.0) controller_temperature [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
Sampled temperatures. If multiple values are available, reduction is implementation-defined.
saturated uint32 error_count [max length 4.0 bytes]
Incremented once per occurrence. Reset to zero when ENGAGED. The exact definition of what constitutes an error is implementation-dependent.
+ reg.drone.service.actuator.common.FaultFlags (v0.1) fault_flags [extent 2.0 bytes] [max length 2.0 bytes]
A collection of detailed fault flags indicating problems detected by the service provider. A fault flag is set when the corresponding parameter exceeds its safe operating area (SOA) as defined by the vendor; see https://en.wikipedia.org/wiki/Safe_operating_area. As long as at least one flag is set, the service health should not be NOMINAL.
saturated bool overload [max length 1 bits]
The load is above SOA or regeneration below the SOA.
saturated bool voltage [max length 1 bits]
Supply voltage is above or below the SOA.
saturated bool motor_temperature [max length 1 bits]
saturated bool controller_temperature [max length 1 bits]
Temperature is above or below the SOA.
saturated bool velocity [max length 1 bits]
The absolute velocity of the load is above the SOA.
saturated bool mechanical [max length 1 bits]
The load cannot be driven due to a mechanical failure.
saturated bool vibration [max length 1 bits]
The mechanical vibration level exceeds the SOA.
saturated bool configuration [max length 1 bits]
Configuration is missing or invalid.
saturated bool control_mode [max length 1 bits]
The requested control mode is not supported by the actuator.
void6 [max length 6 bits]
saturated bool other [max length 1 bits]
None of the above (vendor-specific).
+ reg.drone.service.actuator.common.sp
This is a collection of weakly-typed primitives used to control groups of actuators synchronously. Actuators are expected to subscribe using the largest array type. Publishers would choose the array type depending on the number of actuators in the group. The actuators would be expecting the largest array type, where the missing elements will be zero-filled automatically by the protocol stack thanks to the Implicit Zero Extension Rule (refer to the UAVCAN Specification for details). The physical meaning of the values contained in the array is defined by the respective actuator service specification. If ratiometric control is used, then the range should be [-1, +1]. It follows that a standalone actuator (that is not a member of any group) is just a special case of a group of 1, where the setpoint type is a single scalar. The UAVCAN Specification might benefit from supporting flexible array fields to avoid having to deal with redundant similar types: https://en.wikipedia.org/wiki/Flexible_array_member, so that instead of having multiple types that differ only in size of the array fields, one could just say `float16[0] value` such that the size of zero indicates that the array is a flex array.
+ reg.drone.service.actuator.common.sp.Scalar (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
saturated float16 value [max length 2.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector2 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector3 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector4 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector6 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector8 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.common.sp.Vector31 (v0.1) [extent 512.0 bytes] [max length 516.0 bytes]
+ reg.drone.service.actuator.esc
The electronic speed controller (ESC) service is designed for controlling and monitoring electric drives. From the standpoint of this standard, an electric drive is just a special case of a servo. For generality, COTS electric drives are recommended to also support the servo interface defined in the adjacent namespace. ESCs (drives) are segregated into groups. Each ESC in a group has an index that is unique within the group. Drives in a group are commanded synchronously by publishing a message containing an array of setpoints. There are several subjects defined: - Setpoint array subject. Every participant subscribes to the same setpoint subject. Every message is consumed by all participants according to their index in the group. The setpoint subject defines the group. There may be an arbitrary number of such groups in the network. - Readiness subject. Every participant subscribes to the same readiness control subject which is used to command the state of the group: sleep, standby, or engaged. In many cases there will be one global subject controlling the state of the entire system; in other cases there will be dedicated controls on a per-subsystem basis. - Individual subjects, whose subject-ID is offset from the setpoint subject-ID `S` as a function of group member index `i` as specified below. SUBJECT NAME SUBJECT TYPE SUBJECT-ID +----------------+ | Controller |---------+------------+----... setpoint reg.drone.service.actuator.common.sp.* S | |-------+-)----------+-)----... readiness reg.drone.service.common.Readiness S+1 +----------------+ | | | | ^ ^ ^ ^ ^ ^ ^ ^ v v v v | | | | | | | | +---------+ +---------+ | | | | | | | | |Drive i=0| |Drive i=1| ... | | | | | | | | +---------+ +---------+ | | | | | | | | | | | | | | | | | | | | | | | +-----+ | | | | | | | feedback reg.drone.service.actuator.common.Feedback S+(i+1)*5+1 | | | | | | +---------+ | | | | | | status reg.drone.service.actuator.common.Status S+(i+1)*5+2 | | | | | +-------------+ | | | | | power reg.drone.physics.electricity.PowerTs S+(i+1)*5+3 | | | | +-----------------+ | | | | dynamics reg.drone.physics.dynamics.rotation.PlanarTs S+(i+1)*5+4 | | | | | | | | | | | +---------------------------+ | | | | | +-------------------------------+ | | | +-----------------------------------+ | +---------------------------------------+ Therefore, in order to configure a group member, one has to set up two parameters: the setpoint subject-ID and the group member index. Notice that the physics subjects are timestamped. Vendor/application-specific subjects are not shown here; their subject-IDs are implementation-defined. Vendors are encouraged to publish additional data (e.g., temperatures) on separate subjects. SETPOINT SUBJECT The setpoint subject is ignored unless the drive is ENGAGED. As long as the drive is not ENGAGED, it shall not apply any power to the load excepting non-operational scenarios such as maintenance and diagnostics, which are outside of the scope of this service definition. More on readiness and safety in the next section. Upon reception of a setpoint message, a group participant fetches its setpoint from the array using the array element whose index equals the index of the group participant. By virtue of the Implicit Zero Extension Rule, if the message is too short, the setpoint will be interpreted as zero. If no valid setpoint was received in CONTROL_TIMEOUT or a lower implementation-specific value, the drive should assume a zero setpoint for safety reasons. The minimum setpoint publication period should be at least twice lower than its timeout. While stopped, the drive may either allow the load to freewheel or it may force it to a particular parking position, depending on the implementation requirements. The actual state of the load may be continuously reported using the dynamics subject. Notice that per the safety rule introduced earlier, the parking position may be impossile to enforce unless the drive is ENGAGED because it may require delivering power to the load. The setpoint message types that can be used to command a group of drives are defined in reg.drone.service.actuator.common.sp; please read the documentation related to that namespace for further information. Servo setpoint message types may also be supported on an implementation-specific basis for enhanced interoperability. If the group is controlled using different setpoint subjects concurrently, the behavior is implementation-defined. The following control modes are defined, none of which are mandatory to support. The control mode in use is to be specified using the register API. This service does not support switching the control mode or setting the motion profile at runtime; for that, please refer to the servo service. 0. Ratiometric voltage control. Each setpoint scalar is a value normalized/saturated in [-1, +1] representing the Q-axis/phase/armature (depending on the type of the drive) voltage as a fraction of the maximum. This control mode emulates the behavior of a typical RCPWM-controlled BLDC drive. 1. Ratiometric current/torque control. Each setpoint scalar is a value normalized/saturated in [-1, +1] representing the Q-axis/phase/armature (depending on the type of the drive) current as a fraction of the maximum. A negative setpoint during forward rotation (positive during reverse rotation) commands braking. 2. Speed control. Each setpoint scalar contains the target angular velocity of the load in radian/second. -. More control modes may be added later. Which control modes are supported is implementation-defined. Considerations that apply to all control modes: - Negative setpoint values represent reversal; a positive setpoint is co-directed with positive rotation/torque. - If reverse operation is not supported, negative values should be clamped to zero. - A non-finite setpoint is to be treated as zero. READINESS SUBJECT The default state is STANDBY. While in this state, the drive is not allowed to deliver power to the load, and the setpoint subject is ignored. The drive shall enter this state automatically if the readiness subject is not updated for CONTROL_TIMEOUT. While the drive is ENGAGED, the setpoint commands are processed normally as described in the adjacent section. If the drive does not support bidirectional operation, implementations are recommended to ensure that the load is driven at some minimum power level (idling) while the drive is ENGAGED regardless of the commanded setpoint, unless such behavior is deemed incompatible with the functional requirements of the controlled drive. If the selected readiness state is SLEEP, the behavior is implementation-defined. Implementations are recommended to power off the high-voltage circuitry and all non-essential components (e.g., LED indication, sensors, etc.) to minimize the power consumption. Implementations are recommended to announce transitions between the readiness states using audiovisual feedback. The worst-case state transition latency is not defined. The controlling element (that is, the unit that publishes to the setpoint and readiness subjects) is expected to monitor the actual readiness status of each component using the feedback subject. For example, a sensorless electric motor drive may choose to spool-up before entering the ENGAGED state, which would obviously take time; as soon as the spool-up is finished, the drive would switch its reported status from STANDBY to ENGAGED, thereby indicating that it is ready for normal operation. PUBLISHED SUBJECTS The following subjects shall be published immediately after a new setpoint is applied even if the drive is STANDBY: SUBJECT RECOMMENDED PRIORITY --------------------------------------------- feedback same as the setpoint power second to the setpoint dynamics second to the setpoint If no setpoint is being published, these subjects should continue being updated at least at 1/MAX_PUBLICATION_PERIOD. The publication rate requirements do not apply if the readiness state is SLEEP. If the setpoint publication rate exceeds 50 Hz, implementations are allowed (but not required) to throttle these subjects by dropping some of the messages such that the publication rate of each subject does not exceed 50 Hz. Implementations operating over Classic CAN are recommended to do this. The other subjects may be published at an implementation-defined rate and priority, which should be consistent across the group. Implementations are encouraged to provide additional subjects for enhanced feedback and monitoring. The measurements carried by the published messages should be low-pass filtered with an adequate cutoff frequency to avoid aliasing effects. Implementations should strive to sample all parameters simultaneously. If a float-typed reported quantity is unknown, the corresponding value should be NaN. CONVENTIONS AND ASSUMPTIONS A drive powers a rotary mechanical load that may be connected via a gearbox. It is the responsibility of the drive to account for the gear ratio of the gearbox when calculating related parameters such as angular velocity or torque. It is assumed that there is a well-defined direction of rotation that is referred to as forward rotation. A positive angular velocity represents forward rotation. Likewise, forward torque is positive. It is assumed that the drive is powered from a DC electric power supply network. A positive electric current represents current flowing from the network into the drive, also referred to as the state of driving/motoring. The opposite -- braking/regeneration -- is represented by negative current. Excepting edge cases and transients, torque and current are generally of the same sign. The above is summarized on the following four-quadrant diagram: +velocity ^ braking,| forward, negative| positive power | power -----------+----------> +torque/current reverse,| braking, positive| negative power | power
+ reg.drone.service.actuator.servo
A servo can actuate either a translational or rotary load using electric power from the high-voltage DC bus. The type of load (translational or rotational) dictates which type is used for commanding the setpoint and reporting the status: - reg.drone.physics.dynamics.rotation.Planar[Ts] - reg.drone.physics.dynamics.translation.Linear[Ts] For generality, either or both of these types are referred to as "timestamped dynamics" or "non-timestamped dynamics". The default readiness state is STANDBY. While in this state, the servo is not allowed to apply force to the load, and the setpoint subject is ignored. The servo shall enter the STANDBY state automatically if the readiness subject is not updated for CONTROL_TIMEOUT. The subjects defined by this service are shown on the following canvas. Implementers are encouraged to add custom subjects with additional data. Notice that the physics subjects are timestamped. SUBJECT NAME SUBJECT TYPE RATE +------------+ setpoint +------------+ (non-timestamped dynamics) (see below) R | |----------------->| | | | readiness | | reg.drone.service.common.Readiness any | |----------------->| | | | feedback | | reg.drone.service.actuator.common.Feedback R | |<-----------------| | | Controller | status | Servo | reg.drone.service.actuator.common.Status any | |<-----------------| | | | power | | reg.drone.physics.electricity.PowerTs R | |<-----------------| | | | dynamics | | (timestamped dynamics) R | |<-----------------| | +------------+ +------------+ Should it be necessary to control a group of servos in lockstep, an arbitrary number of them may subscribe to the same setpoint subject (their published subjects would be different of course). If the servo is ENGAGED, setpoint messages are processed as follows: the first field of the kinematic setpoint type that contains a finite value is taken as the commanded setpoint. The following non-negative finite fields define the motion profile, where negative and non-finite values are ignored. For example, a translational dynamics message containing the following values: position = +0.35 velocity = NaN acceleration = NaN force = 30 ...is interpreted as follows: position the load at 0.35 meters relative to the neutral, limit the force to 30 newton, do not limit the velocity and acceleration. Here is another example: angular position = NaN angular velocity = +400 angular acceleration = NaN torque = 50 which is interpreted as follows: reach the angular velocity of 400 radian/second in the forward direction, limit the torque to 50 newton*meters, do not limit the acceleration. The motion profile parameters that are not supported are to be silently ignored by the servo. If the commanded parameter cannot be controlled by the servo, the setpoint is to be ignored. For example, in the second example above, if the servo does not support angular velocity control, the setpoint message would be discarded. The above describes the typical use case where each servo is controlled over a dedicated setpoint subject independently (or a group of servos are controlled in lockstep using the same setpoint subject). Some applications may require synchronous independent control of multiple servos in a group, similar to ESC. To address this, a compliant servo should support another operating mode where the controlled quantity (position, velocity, force, etc.) is selected statically along with the motion profile (using the register API), and the servo subscribes to the setpoint subject of type "reg.drone.service.actuator.common.sp.*". Having its index in the group configured statically, the servo fetches the setpoint from the appropriate index in the setpoint array. The resulting topology closely resembles that of the ESC service: SUBJECT NAME SUBJECT TYPE +----------------+ | Controller |---------+------------+----... setpoint reg.drone.service.actuator.common.sp.* | |-------+-)----------+-)----... readiness reg.drone.service.common.Readiness +----------------+ | | | | ^ ^ ^ ^ ^ ^ ^ ^ v v v v | | | | | | | | +---------+ +---------+ | | | | | | | | |Servo i=0| |Servo i=1| ... | | | | | | | | +---------+ +---------+ | | | | | | | | | | | | | | | | | | | | | | | +-----+ | | | | | | | feedback reg.drone.service.actuator.common.Feedback | | | | | | +---------+ | | | | | | status reg.drone.service.actuator.common.Status | | | | | +-------------+ | | | | | power reg.drone.physics.electricity.PowerTs | | | | +-----------------+ | | | | dynamics (timestamped dynamics) | | | | | | | | | | | +---------------------------+ | | | | | +-------------------------------+ | | | +-----------------------------------+ | +---------------------------------------+ If the selected readiness state is SLEEP, the behavior is implementation-defined. Implementations are recommended to power off the high-voltage circuitry and all non-essential components (e.g., LED indication, sensors, etc.) to minimize the power consumption. The publication rate requirements do not apply if the state is SLEEP. The worst-case readiness state transition latency is not defined. The following subjects shall be published immediately after a new setpoint is applied even if the servo is STANDBY: SUBJECT NAME RECOMMENDED PRIORITY --------------------------------------------- feedback same as the setpoint power second to the setpoint dynamics second to the setpoint If no setpoint is being published, these subjects should continue being updated at least at 1/MAX_PUBLICATION_PERIOD. If the setpoint publication rate exceeds 50 Hz, implementations are allowed (but not required) to throttle these subjects by dropping some of the messages such that the publication rate of each subject does not exceed 50 Hz. Implementations operating over Classic CAN are recommended to do this. The other subjects may be published at an implementation-defined rate and priority, which should be consistent across the group. The measurements carried by the published messages should be low-pass filtered with an adequate cutoff frequency to avoid aliasing effects. Implementations should strive to sample all parameters simultaneously. It is assumed that the servo is powered from a DC electric power supply network. A positive electric current represents current flowing from the DC network into the servo (negative represents regeneration). Excepting edge cases and transients, torque/force and current are generally of the same sign (barring the difference introduced by the power dissipated by the servo itself). +velocity ^ braking,| forward, negative| positive power | power -----------+----------> +torque/force/current reverse,| braking, positive| negative power | power
+ reg.drone.service.air_data_computer
A generic air data computer service. An air data computer service is generally a non-interactive publish-only service: when activated, it keeps publishing its measurements at a fixed rate over several subjects until deactivated. The activation/deactivation, if supported, is managed via the standard readiness control service. The data update rates and other parameters are controlled via the Register API using implementation-defined register names. An air data computer whose readiness state is SLEEP is allowed to cease all network activity. An air data computer whose readiness state is STANDBY is recommended to behave as if its state was ENGAGED; implementations are recommended to leverage this state to perform any necessary maintenance activities such as calibration, self-heating, etc. The service should not report its own status as ENGAGED until said maintenance activities have been completed. Therefore, the high-level controler (e.g., the flight management unit) may delay the take-off until the service is ready. An air data computer whose readiness state is ENGAGED is required to comply with the requirements set out below. An ENGAGED service should publish the following data subjects synchronously at the same configurable rate which should not be lower than the specified limit. The measurements should be low-pass filtered to avoid frequency aliasing effects. PUBLISHED SUBJECT NAME SUBJECT TYPE NOTE calibrated_airspeed reg.drone.physics.kinematics.translation.Velocity1VarTs true_airspeed reg.drone.physics.kinematics.translation.Velocity1VarTs optional pressure_altitude reg.drone.physics.kinematics.translation.LinearVarTs assume ISA; NED frame (+down, -up) static_air_data reg.drone.physics.thermodynamics.PressureTempVarTs pressure and OAT Observe that there is no subject for indicated airspeed. This is because per the principles of service-oriented design, the air data computer is responsible for applying the necessary transformations on its data to render it ready for consumption by clients. If desired, indicated airspeed may be reported over an implementation-defined subject. In addition to the above, an ENGAGED service should publish the following service subjects at an implementation-defined rate: PUBLISHED SUBJECT NAME SUBJECT TYPE heartbeat reg.drone.service.common.Heartbeat sensor_status reg.drone.service.sensor.Status Despite being a non-interactive service, it is recommended to subscribe to the readiness command subject. This recommendation may be omitted if the service does not support readiness state selection, in which case it should always report itself as being ENGAGED. SUBSCRIBED SUBJECT NAME SUBJECT TYPE readiness reg.drone.service.common.Readiness
+ reg.drone.service.battery
This is the smart battery monitoring service. A smart battery is required to publish the following subjects: SUBJECT TYPE TYP. RATE [Hz] energy_source reg.drone.physics.electricity.SourceTs 1...100 battery_status reg.drone.service.battery.Status ~1 battery_parameters reg.drone.service.battery.Parameters ~0.2 Observe that only the first subject can be used for estimating the endurance of the power source. The other subjects are designed for monitoring, diagnostics, and maintenance. Optionally, the battery service can subscribe to a readiness control subject (see reg.drone.service.common.Readiness), which enables the following two optional capabilities: - SLEEP mode: when the readiness subject commands the sleep state, the battery management system may enter a low power consumption state, possibly deactivating some of its capabilities. - STANDBY mode: the battery management system may implement additional safety protections that may otherwise interfere with the normal operation of the vehicle. For example, the traction battery may limit the maximum load current and the depth of discharge unless the commanded state is ENGAGED. By doing so, the battery can protect itself and the supplied high-voltage DC network from accidental damage while the vehicle is parked. Limiting the output power or discharge of the traction battery might lead to catastrophic consequences in an aerial vehicle, hence such safety checks are to be disabled once the battery is commanded into the ENGAGED state. If readiness state selection is not supported, the battery may not subscribe to the readiness control subject, in which case it should permanently report its state as ENGAGED unless the battery is unfit for use (e.g., due to degradation of a failure). By convention, positive power (current) flows from the DC network into the battery. Therefore, the current is negative when the battery powers the system, and positive when it is being charged. Systems that leverage multiple battery packs simultaneously should be configured to publish the status of each pack on a separate subject. Published quantities should be low-pass filtered to avoid aliasing effects. Publishers should strive to sample all parameters atomically. The reported quantities are focused on the amount of energy that can be reclaimed from the battery. In a simplified view, this can be seen as the amount of energy that is "stored" in the battery; however, this interpretation is not strictly correct because the amount of retrievable energy may be dependent on external factors such as the temperature of the battery or the load current. Energy estimation is hard and requires accurate modeling of the state of the battery, which may be impossible to do without precise tracking of each charging cycle. Despite the complications, this is considered to be a superior approach compared to the commonly used alternative where the state estimation is focused on the electric charge, because the latter cannot be used directly to predict the endurance of the system. The methods of energy estimation are implementation-defined.
+ reg.drone.service.battery.Error (v0.1) [extent 1.0 bytes] [max length 1.0 bytes]
Generic error codes reported by the service provider. An error is reported when the corresponding parameter exceeds its safe operating area (SOA) as defined by the vendor; see https://en.wikipedia.org/wiki/Safe_operating_area. As long as an error condition is present, the service health should not be NOMINAL. If there are multiple error conditions present, the most severe one should be reported. The severity ordering is implementation-defined. Barring special requirements, it is recommended to give preference to errors whose code is smaller (e.g., BAD_BATTERY trumps TEMPERATURE_COLD).
saturated uint8 value [max length 1.0 bytes]
saturated uint8 NONE = 0
Normal operation.
saturated uint8 BAD_BATTERY = 10
The battery should not be used anymore. Detection criteria are implementation-defined.
saturated uint8 NEEDS_SERVICE = 11
The battery requires offline maintenance.
saturated uint8 BMS_ERROR = 20
An internal error in the battery management system, not related to the battery itself.
saturated uint8 CONFIGURATION = 30
The battery/BMS/node/service configuration is missing or invalid.
saturated uint8 OVERDISCHARGE = 50
The battery is discharged beyond the design limits and may have incurred damage.
saturated uint8 OVERLOAD = 51
The charge or discharge rate exceeds the safe operating limits.
saturated uint8 CELL_OVERVOLTAGE = 60
saturated uint8 CELL_UNDERVOLTAGE = 61
Voltage of one of the battery cells exceeds its SOA.
saturated uint8 CELL_COUNT = 62
The sum of cell voltages is far from the total pack voltage. The threshold is implementation-defined.
saturated uint8 TEMPERATURE_HOT = 100
saturated uint8 TEMPERATURE_COLD = 101
At least one cell is above/below the temperature SOA.
+ reg.drone.service.battery.Parameters (v0.3) [extent 67.0 bytes] [max length 71.0 bytes]
Smart battery parameter message. It is mostly intended for automated battery charging and maintenance systems. This message is modeled after the Smart Battery Data Specification (SBS) and the MAVLink battery status messages. The values carried by this message are either constant or slow-changing, so, generally, the publishing frequency should not be higher than 0.2 Hz, and the priority should be either OPTIONAL or SLOW. All parameters are required unless specifically stated otherwise. For non-rechargeable batteries all "charge_*" parameters should be NaN.
truncated uint64 unique_id [max length 8.0 bytes]
A statistically unique number that can be used to identify this exact battery for logging and diagnostic purposes. This value should be invariant to the identity of the reporting node unless it is an integral part of the battery. If the battery supports SBS, the recommended way to populate this field is from two CRC-32C (Castagnoli) values as: - 32 most significant bits identify the vendor as: CRC32C(ManufacturerName) - 32 least significant bits identify the battery as: CRC32C(DeviceName + ManufactureDate + SerialNumber) If the battery does not support SBS, the vendor may choose arbitrary random numbers. Note that these are mere recommendations. The only hard requirement for this field is to be statistically unique.
+ uavcan.si.unit.mass.Scalar (v1.0) mass [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kilogram [max length 4.0 bytes]
The total mass of the battery, including the packaging, electronics, cabling, and all auxiliary items, if any. May be used for predicting the kinematic parameters of the vehicle. NaN if unknown.
+ uavcan.si.unit.electric_charge.Scalar (v1.0) design_capacity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 coulomb [max length 4.0 bytes]
The maximum total charge of the pack, at 100% SoH, specified by the manufacturer.
+ uavcan.si.unit.voltage.Scalar.1.0[2] design_cell_voltage_min_max [max length 8.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The minimum (end of discharge) and the maximum (end of charge) resting cell voltage specified by the manufacturer at 100% SoH. Example: {2.8, 4.2} V. These voltages correspond to resting voltages; i.e., the stabilized voltages after the discharge/charge has been terminated. Voltage below the min may be observed during discharge due to the cell's internal resistance. Voltage above the max voltage may be observed during regenerative braking/charging etc due to the cell's internal resistance.
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended continuous discharge current of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current_burst [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Maximum current that may be safely discharged at least for 5 seconds.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended continuous charge current of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current_fast [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended safest highest continuous charge current for the battery. This may cause accelerated aging of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_termination_threshold [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
End-of-charging current threshold. Charging may be terminated when the current falls below this threshold.
+ uavcan.si.unit.voltage.Scalar (v1.0) charge_voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The total voltage(not per-cell) that may be used by the charger to charge the battery pack.
saturated uint16 cycle_count [max length 2.0 bytes]
The number of charge-discharge cycles. Zero if the battery is new. May increase at runtime. What constitutes a charge-discharge cycle is implementation-defined.
void16 [max length 2.0 bytes]
Was used in v0.1 for cell_count. It is now deducible from cell_voltages in Status.0.2.
saturated uint7 state_of_health_pct [max length 7 bits]
[percent] The SoH of the battery, or best guess thereof; ranges from 0 (unusable) to 100 (new).
void1 [max length 1 bits]
+ reg.drone.service.battery.Technology (v0.1) technology [extent 1.0 bytes] [max length 1.0 bytes]
Battery chemistry type and its form-factor. Observe that there is no item to represent unknown technology because it is required to be known. This information may be used by charging systems to select the appropriate charging strategy. If the battery is of an uncommon type, it may be preferred to report the closest-matching type listed here instead of OTHER.
saturated uint8 value [max length 1.0 bytes]
saturated uint8 OTHER = 0
The technology is not specified in this enumeration. Please submit a pull request.
saturated uint8 LI_SOCL2 = 10
Lithium-thionyl chloride (Li-SOCl2)
saturated uint8 LI_BCX = 11
Lithium-thionyl chloride + bromine chloride (Li-BCX)
saturated uint8 LI_MNO2 = 12
Lithium-manganese dioxide (Li-MnO2) (e.g., lithium coin cell, lithium 9V)
saturated uint8 ZN_O2 = 20
Zinc-Air
saturated uint8 AL_O2 = 21
Aluminum-Air
saturated uint8 ZN_MNO2_NH4CL = 30
Zinc-manganese dioxide - ammonium chloride electrolyte (aka zinc-carbon)
saturated uint8 ZN_MNO2_ZNCL2 = 31
Zinc-manganese dioxide - zinc chloride electrolyte (aka heavy duty zinc-carbon)
saturated uint8 ZN_MNO2_KOH = 32
Zinc-manganese dioxide - potassium hydroxide electrolyte (aka alkaline)
saturated uint8 LI_LCO = 100
Lithium cobalt oxide (commonly known as just "lithium-ion")
saturated uint8 LI_LFP = 101
Lithium iron phosphate (LiFePO4)
saturated uint8 LI_NMC = 102
Lithium nickel manganese cobalt oxide
saturated uint8 LI_NCA = 103
Lithium nickel cobalt aluminium oxide
saturated uint8 LI_LMO = 104
Lithium manganese oxide
saturated uint8 LI_S = 105
Lithium-sulfur (LiS)
saturated uint8 LI_LCO_POUCH = 110
LiCoO2 in pouch form factor, commonly known as "lithium-ion polymer" or "LiPo".
saturated uint8 LI_LFP_POUCH = 111
LiFePO4 in pouch form factor, commonly known as "LiFePO4 polymer".
saturated uint8 NI_MH = 120
Nickel-metal hydride
saturated uint8 NI_CD = 121
Nickel-cadmium
saturated uint8 NI_ZN = 122
Nickel-zinc
saturated uint8 NI_FE = 123
Nickel-iron
saturated uint8 PB_AC = 130
Lead acid
saturated uint8 PB_AC_SEALED = 131
Also known as SLA
saturated uint8 EDLC = 200
Electrostatic double-layer capacitor
The battery technology information may be leveraged by the charger to choose the appropriate charging strategy.
+ uavcan.si.unit.voltage.Scalar (v1.0) nominal_voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The nominal voltage of the battery pack (not per-cell) as defined by the vendor. E.g., a typical 22S LiCoO2 pack would usually report 81.4 V here.
+ reg.drone.service.battery.Parameters (v0.2) [deprecated] [extent 63.0 bytes] [max length 67.0 bytes]
Smart battery parameter message. It is mostly intended for automated battery charging and maintenance systems. This message is modeled after the Smart Battery Data Specification (SBS) and the MAVLink battery status messages. The values carried by this message are either constant or slow-changing, so, generally, the publishing frequency should not be higher than 0.2 Hz, and the priority should be either OPTIONAL or SLOW. All parameters are required unless specifically stated otherwise. For non-rechargeable batteries all "charge_*" parameters should be NaN.
truncated uint64 unique_id [max length 8.0 bytes]
A statistically unique number that can be used to identify this exact battery for logging and diagnostic purposes. This value should be invariant to the identity of the reporting node unless it is an integral part of the battery. If the battery supports SBS, the recommended way to populate this field is from two CRC-32C (Castagnoli) values as: - 32 most significant bits identify the vendor as: CRC32C(ManufacturerName) - 32 least significant bits identify the battery as: CRC32C(DeviceName + ManufactureDate + SerialNumber) If the battery does not support SBS, the vendor may choose arbitrary random numbers. Note that these are mere recommendations. The only hard requirement for this field is to be statistically unique.
+ uavcan.si.unit.mass.Scalar (v1.0) mass [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kilogram [max length 4.0 bytes]
The total mass of the battery, including the packaging, electronics, cabling, and all auxiliary items, if any. May be used for predicting the kinematic parameters of the vehicle. NaN if unknown.
+ uavcan.si.unit.electric_charge.Scalar (v1.0) design_capacity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 coulomb [max length 4.0 bytes]
The maximum total charge of the pack, at 100% SoH, specified by the manufacturer.
+ uavcan.si.unit.voltage.Scalar.1.0[2] design_cell_voltage_min_max [max length 8.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The minimum (end of discharge) and the maximum (end of charge) resting cell voltage specified by the manufacturer at 100% SoH. Example: {2.8, 4.2} V. These voltages correspond to resting voltages; i.e., the stabilized voltages after the discharge/charge has been terminated. Voltage below the min may be observed during discharge due to the cell's internal resistance. Voltage above the max voltage may be observed during regenerative braking/charging etc due to the cell's internal resistance.
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended continuous discharge current of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current_burst [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Maximum current that may be safely discharged at least for 5 seconds.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended continuous charge current of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current_fast [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
Recommended safest highest continuous charge current for the battery. This may cause accelerated aging of the battery.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_termination_threshold [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
End-of-charging current threshold. Charging may be terminated when the current falls below this threshold.
+ uavcan.si.unit.voltage.Scalar (v1.0) charge_voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The total voltage(not per-cell) that may be used by the charger to charge the battery pack.
saturated uint16 cycle_count [max length 2.0 bytes]
The number of charge-discharge cycles. Zero if the battery is new. May increase at runtime. What constitutes a charge-discharge cycle is implementation-defined.
void16 [max length 2.0 bytes]
Was used in v0.1 for cell_count. It is now deducible from cell_voltages in Status.0.2.
saturated uint7 state_of_health_pct [max length 7 bits]
[percent] The SoH of the battery, or best guess thereof; ranges from 0 (unusable) to 100 (new).
void1 [max length 1 bits]
+ reg.drone.service.battery.Technology (v0.1) technology [extent 1.0 bytes] [max length 1.0 bytes]
Battery chemistry type and its form-factor. Observe that there is no item to represent unknown technology because it is required to be known. This information may be used by charging systems to select the appropriate charging strategy. If the battery is of an uncommon type, it may be preferred to report the closest-matching type listed here instead of OTHER.
saturated uint8 value [max length 1.0 bytes]
saturated uint8 OTHER = 0
The technology is not specified in this enumeration. Please submit a pull request.
saturated uint8 LI_SOCL2 = 10
Lithium-thionyl chloride (Li-SOCl2)
saturated uint8 LI_BCX = 11
Lithium-thionyl chloride + bromine chloride (Li-BCX)
saturated uint8 LI_MNO2 = 12
Lithium-manganese dioxide (Li-MnO2) (e.g., lithium coin cell, lithium 9V)
saturated uint8 ZN_O2 = 20
Zinc-Air
saturated uint8 AL_O2 = 21
Aluminum-Air
saturated uint8 ZN_MNO2_NH4CL = 30
Zinc-manganese dioxide - ammonium chloride electrolyte (aka zinc-carbon)
saturated uint8 ZN_MNO2_ZNCL2 = 31
Zinc-manganese dioxide - zinc chloride electrolyte (aka heavy duty zinc-carbon)
saturated uint8 ZN_MNO2_KOH = 32
Zinc-manganese dioxide - potassium hydroxide electrolyte (aka alkaline)
saturated uint8 LI_LCO = 100
Lithium cobalt oxide (commonly known as just "lithium-ion")
saturated uint8 LI_LFP = 101
Lithium iron phosphate (LiFePO4)
saturated uint8 LI_NMC = 102
Lithium nickel manganese cobalt oxide
saturated uint8 LI_NCA = 103
Lithium nickel cobalt aluminium oxide
saturated uint8 LI_LMO = 104
Lithium manganese oxide
saturated uint8 LI_S = 105
Lithium-sulfur (LiS)
saturated uint8 LI_LCO_POUCH = 110
LiCoO2 in pouch form factor, commonly known as "lithium-ion polymer" or "LiPo".
saturated uint8 LI_LFP_POUCH = 111
LiFePO4 in pouch form factor, commonly known as "LiFePO4 polymer".
saturated uint8 NI_MH = 120
Nickel-metal hydride
saturated uint8 NI_CD = 121
Nickel-cadmium
saturated uint8 NI_ZN = 122
Nickel-zinc
saturated uint8 NI_FE = 123
Nickel-iron
saturated uint8 PB_AC = 130
Lead acid
saturated uint8 PB_AC_SEALED = 131
Also known as SLA
saturated uint8 EDLC = 200
Electrostatic double-layer capacitor
The battery technology information may be leveraged by the charger to choose the appropriate charging strategy.
+ reg.drone.service.battery.Parameters (v0.1) [deprecated] [extent 63.0 bytes] [max length 67.0 bytes]
Smart battery parameter message. It is mostly intended for automated battery charging and maintenance systems. This message is modeled after the Smart Battery Data Specification (SBS) and the MAVLink battery status messages. The values carried by this message are either constant or slow-changing, so, generally, the publishing frequency should not be higher than 0.2 Hz, and the priority should be either OPTIONAL or SLOW. All parameters are required unless specifically stated otherwise.
truncated uint64 unique_id [max length 8.0 bytes]
A statistically unique number that can be used to differentiate this exact battery from others. Needed for logging purposes. If the battery supports SBS, this value may be computed as CRC64WE of (ManufacturerName + DeviceName + ManufactureDate + SerialNumber). This value shall be invariant to the identity of the reporting node unless it is an integral part of the battery. Vendors may use a constant random number for the 40 most significant bits for vendor identification purposes.
+ uavcan.si.unit.mass.Scalar (v1.0) mass [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kilogram [max length 4.0 bytes]
The total mass of the battery, including the packaging, electronics, cabling, and all auxiliary items, if any. May be used for predicting the kinematic parameters of the vehicle. NaN if unknown.
+ uavcan.si.unit.electric_charge.Scalar (v1.0) design_capacity [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 coulomb [max length 4.0 bytes]
The maximum total charge of the pack, at 100% SoH, specified by the manufacturer.
+ uavcan.si.unit.voltage.Scalar.1.0[2] design_cell_voltage_min_max [max length 8.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
The minimum (end of discharge) and the maximum (end of charge) cell voltages specified by the manufacturer at 100% SoH. Example: {2.8, 4.2} V
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.electric_current.Scalar (v1.0) discharge_current_burst [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
At least for 5 seconds.
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_current_fast [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
+ uavcan.si.unit.electric_current.Scalar (v1.0) charge_termination_treshold [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 ampere [max length 4.0 bytes]
End-of-charging current threshold.
+ uavcan.si.unit.voltage.Scalar (v1.0) charge_voltage [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
Total charging voltage (not per-cell). The key (dis-)charge parameters specified by the manufacturer for the pack. This is a reflection of similar parameters from the Smart Battery Data Specification. For non-rechargeable batteries all "charge_*" parameters should be NaN.
saturated uint16 cycle_count [max length 2.0 bytes]
The number of charge-discharge cycles. Zero if the battery is new. May increase at runtime. What constitutes a charge-discharge cycle is implementation-defined.
void8 [max length 1.0 bytes]
Reserved for possible expansion because batteries with >255 cells exist.
saturated uint8 series_cell_count [max length 1.0 bytes]
The number of cells connected in series.
saturated uint7 state_of_health_pct [max length 7 bits]
[percent] The SoH of the battery, or best guess thereof; ranges from 0 (unusable) to 100 (new).
void1 [max length 1 bits]
+ reg.drone.service.battery.Technology (v0.1) technology [extent 1.0 bytes] [max length 1.0 bytes]
Battery chemistry type and its form-factor. Observe that there is no item to represent unknown technology because it is required to be known. This information may be used by charging systems to select the appropriate charging strategy. If the battery is of an uncommon type, it may be preferred to report the closest-matching type listed here instead of OTHER.
saturated uint8 value [max length 1.0 bytes]
saturated uint8 OTHER = 0
The technology is not specified in this enumeration. Please submit a pull request.
saturated uint8 LI_SOCL2 = 10
Lithium-thionyl chloride (Li-SOCl2)
saturated uint8 LI_BCX = 11
Lithium-thionyl chloride + bromine chloride (Li-BCX)
saturated uint8 LI_MNO2 = 12
Lithium-manganese dioxide (Li-MnO2) (e.g., lithium coin cell, lithium 9V)
saturated uint8 ZN_O2 = 20
Zinc-Air
saturated uint8 AL_O2 = 21
Aluminum-Air
saturated uint8 ZN_MNO2_NH4CL = 30
Zinc-manganese dioxide - ammonium chloride electrolyte (aka zinc-carbon)
saturated uint8 ZN_MNO2_ZNCL2 = 31
Zinc-manganese dioxide - zinc chloride electrolyte (aka heavy duty zinc-carbon)
saturated uint8 ZN_MNO2_KOH = 32
Zinc-manganese dioxide - potassium hydroxide electrolyte (aka alkaline)
saturated uint8 LI_LCO = 100
Lithium cobalt oxide (commonly known as just "lithium-ion")
saturated uint8 LI_LFP = 101
Lithium iron phosphate (LiFePO4)
saturated uint8 LI_NMC = 102
Lithium nickel manganese cobalt oxide
saturated uint8 LI_NCA = 103
Lithium nickel cobalt aluminium oxide
saturated uint8 LI_LMO = 104
Lithium manganese oxide
saturated uint8 LI_S = 105
Lithium-sulfur (LiS)
saturated uint8 LI_LCO_POUCH = 110
LiCoO2 in pouch form factor, commonly known as "lithium-ion polymer" or "LiPo".
saturated uint8 LI_LFP_POUCH = 111
LiFePO4 in pouch form factor, commonly known as "LiFePO4 polymer".
saturated uint8 NI_MH = 120
Nickel-metal hydride
saturated uint8 NI_CD = 121
Nickel-cadmium
saturated uint8 NI_ZN = 122
Nickel-zinc
saturated uint8 NI_FE = 123
Nickel-iron
saturated uint8 PB_AC = 130
Lead acid
saturated uint8 PB_AC_SEALED = 131
Also known as SLA
saturated uint8 EDLC = 200
Electrostatic double-layer capacitor
The battery technology information may be leveraged by the charger to choose the appropriate charging strategy.
+ reg.drone.service.battery.Status (v0.2) [extent 600.0 bytes] [max length 604.0 bytes]
This low-rate battery status should be published at least once per second.
+ reg.drone.service.common.Heartbeat (v0.1) heartbeat [extent 2.0 bytes] [max length 2.0 bytes]
The function of the service heartbeat is similar to that of the node heartbeat defined in the standard namespace, except that it is used on a per-service basis, meaning that there may be more than one publisher per node. The service heartbeat should be published either on a separate subject, or as a structural supertype of a service-specific status subject. The publication rate is service-specific but it should not be lower than 1 Hz. This is a structural subtype of the Readiness type.
+ reg.drone.service.common.Readiness (v0.1) readiness [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ uavcan.node.Health (v1.0) health [extent 1.0 bytes] [max length 1.0 bytes]
Abstract component health information. If the node performs multiple activities (provides multiple network services), its health status should reflect the status of the worst-performing activity (network service). Follows: https://www.law.cornell.edu/cfr/text/14/23.1322 https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_25.1322-1.pdf section 6
saturated uint2 value [max length 2 bits]
saturated uint2 NOMINAL = 0
The component is functioning properly (nominal).
saturated uint2 ADVISORY = 1
A critical parameter went out of range or the component encountered a minor failure that does not prevent the subsystem from performing any of its real-time functions.
saturated uint2 CAUTION = 2
The component encountered a major failure and is performing in a degraded mode or outside of its designed limitations.
saturated uint2 WARNING = 3
The component suffered a fatal malfunction and is unable to perform its intended function.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
Any service that is not in the SLEEP state should publish its heartbeat (or a derived status) at least at this rate.
Note that the health code generally should not reflect the battery charge unless the service provider knows that the availability of energy in the battery is critical for the safe operation of the vehicle, which is usually not the case. For example, if the vehicle is equipped with several batteries that are discharged in series, one after another, the depletion of energy in the first battery is not a fault condition and it should not be reported as such. This follows from the good service design principles reviewed in https://uavcan.org/guide. The readiness state depicts the ability of the battery (or its power electronics) to deliver full rated power and whether the overdischarge protections are active. When the battery is not ENGAGED, it may limit the output power below the nominal rated value and disconnect the load should the charge level fall below the critical level. When the battery is ENGAGED, it is not permitted to limit the output power or energy regardless of the risk of damage. If the adaptive protection is not supported, the battery should always report its status as ENGAGED.
+ uavcan.si.unit.temperature.Scalar.1.0[2] temperature_min_max [max length 8.0 bytes]
+ uavcan.si.unit.temperature.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
The minimum and maximum readings of the pack temperature sensors. For example, if the pack is equipped with three distributed temperature sensors that read {288, 258.15, 360.5} K, the reported array value would be {258.15, 360.5} K. If there is only one temperature sensor, both elements shall be of the same value.
void64 [max length 8.0 bytes]
Was cell_voltage_min_max in v0.1. Deprecated in favor of cell_voltages array.
+ uavcan.si.unit.electric_charge.Scalar (v1.0) available_charge [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 coulomb [max length 4.0 bytes]
The estimated electric charge currently stored in the battery. This is intended for charging and maintenance only. Do not use this parameter for endurance prediction! Instead, use the correct energy type from the physics namespace. The depth of discharge (DoD), or the state of charge (SoC), can be derived by dividing this value by the nominal battery capacity reported in the Parameters message.
+ reg.drone.service.battery.Error (v0.1) error [extent 1.0 bytes] [max length 1.0 bytes]
Generic error codes reported by the service provider. An error is reported when the corresponding parameter exceeds its safe operating area (SOA) as defined by the vendor; see https://en.wikipedia.org/wiki/Safe_operating_area. As long as an error condition is present, the service health should not be NOMINAL. If there are multiple error conditions present, the most severe one should be reported. The severity ordering is implementation-defined. Barring special requirements, it is recommended to give preference to errors whose code is smaller (e.g., BAD_BATTERY trumps TEMPERATURE_COLD).
saturated uint8 value [max length 1.0 bytes]
saturated uint8 NONE = 0
Normal operation.
saturated uint8 BAD_BATTERY = 10
The battery should not be used anymore. Detection criteria are implementation-defined.
saturated uint8 NEEDS_SERVICE = 11
The battery requires offline maintenance.
saturated uint8 BMS_ERROR = 20
An internal error in the battery management system, not related to the battery itself.
saturated uint8 CONFIGURATION = 30
The battery/BMS/node/service configuration is missing or invalid.
saturated uint8 OVERDISCHARGE = 50
The battery is discharged beyond the design limits and may have incurred damage.
saturated uint8 OVERLOAD = 51
The charge or discharge rate exceeds the safe operating limits.
saturated uint8 CELL_OVERVOLTAGE = 60
saturated uint8 CELL_UNDERVOLTAGE = 61
Voltage of one of the battery cells exceeds its SOA.
saturated uint8 CELL_COUNT = 62
The sum of cell voltages is far from the total pack voltage. The threshold is implementation-defined.
saturated uint8 TEMPERATURE_HOT = 100
saturated uint8 TEMPERATURE_COLD = 101
At least one cell is above/below the temperature SOA.
+ saturated float16[<=255] cell_voltages [max length 511.0 bytes]
saturated float16
[volt] The voltages of individual cells in the battery pack.
saturated uint8 MAX_CELLS = 255
+ reg.drone.service.battery.Status (v0.1) [deprecated] [extent 63.0 bytes] [max length 67.0 bytes]
This low-rate battery status should be published at least once per second.
+ reg.drone.service.common.Heartbeat (v0.1) heartbeat [extent 2.0 bytes] [max length 2.0 bytes]
The function of the service heartbeat is similar to that of the node heartbeat defined in the standard namespace, except that it is used on a per-service basis, meaning that there may be more than one publisher per node. The service heartbeat should be published either on a separate subject, or as a structural supertype of a service-specific status subject. The publication rate is service-specific but it should not be lower than 1 Hz. This is a structural subtype of the Readiness type.
+ reg.drone.service.common.Readiness (v0.1) readiness [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ uavcan.node.Health (v1.0) health [extent 1.0 bytes] [max length 1.0 bytes]
Abstract component health information. If the node performs multiple activities (provides multiple network services), its health status should reflect the status of the worst-performing activity (network service). Follows: https://www.law.cornell.edu/cfr/text/14/23.1322 https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_25.1322-1.pdf section 6
saturated uint2 value [max length 2 bits]
saturated uint2 NOMINAL = 0
The component is functioning properly (nominal).
saturated uint2 ADVISORY = 1
A critical parameter went out of range or the component encountered a minor failure that does not prevent the subsystem from performing any of its real-time functions.
saturated uint2 CAUTION = 2
The component encountered a major failure and is performing in a degraded mode or outside of its designed limitations.
saturated uint2 WARNING = 3
The component suffered a fatal malfunction and is unable to perform its intended function.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
Any service that is not in the SLEEP state should publish its heartbeat (or a derived status) at least at this rate.
Note that the health code generally should not reflect the battery charge unless the service provider knows that the availability of energy in the battery is critical for the safe operation of the vehicle, which is usually not the case. For example, if the vehicle is equipped with several batteries that are discharged in series, one after another, the depletion of energy in the first battery is not a fault condition and it should not be reported as such. This follows from the good service design principles reviewed in https://uavcan.org/guide. The readiness state depicts the ability of the battery (or its power electronics) to deliver full rated power and whether the overdischarge protections are active. When the battery is not ENGAGED, it may limit the output power below the nominal rated value and disconnect the load should the charge level fall below the critical level. When the battery is ENGAGED, it is not permitted to limit the output power or energy regardless of the risk of damage. If the adaptive protection is not supported, the battery should always report its status as ENGAGED.
+ uavcan.si.unit.temperature.Scalar.1.0[2] temperature_min_max [max length 8.0 bytes]
+ uavcan.si.unit.temperature.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
The minimum and maximum readings of the pack temperature sensors. For example, if the pack is equipped with three distributed temperature sensors that read {288, 258.15, 360.5} K, the reported array value would be {258.15, 360.5} K. If there is only one temperature sensor, both elements shall be of the same value.
+ uavcan.si.unit.voltage.Scalar.1.0[2] cell_voltage_min_max [max length 8.0 bytes]
+ uavcan.si.unit.voltage.Scalar (v1.0) [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 volt [max length 4.0 bytes]
If v(i) is the voltage of cell number i (or a group of cells connected in parallel), and there are N cells, then the first array element is: min(v(x) for x in [0, N)) and the second array element is: max(v(x) for x in [0, N)) This information is used for gauging the degree of cell disbalance. Note that the average cell voltage can be obtained by dividing the battery voltage by the number of cells.
+ uavcan.si.unit.electric_charge.Scalar (v1.0) available_charge [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 coulomb [max length 4.0 bytes]
The estimated electric charge currently stored in the battery. This is intended for charging and maintenance only. Do not use this parameter for endurance prediction! Instead, use the correct energy type from the physics namespace. The depth of discharge (DoD), or the state of charge (SoC), can be derived by dividing this value by the nominal battery capacity reported in the Parameters message.
+ reg.drone.service.battery.Error (v0.1) error [extent 1.0 bytes] [max length 1.0 bytes]
Generic error codes reported by the service provider. An error is reported when the corresponding parameter exceeds its safe operating area (SOA) as defined by the vendor; see https://en.wikipedia.org/wiki/Safe_operating_area. As long as an error condition is present, the service health should not be NOMINAL. If there are multiple error conditions present, the most severe one should be reported. The severity ordering is implementation-defined. Barring special requirements, it is recommended to give preference to errors whose code is smaller (e.g., BAD_BATTERY trumps TEMPERATURE_COLD).
saturated uint8 value [max length 1.0 bytes]
saturated uint8 NONE = 0
Normal operation.
saturated uint8 BAD_BATTERY = 10
The battery should not be used anymore. Detection criteria are implementation-defined.
saturated uint8 NEEDS_SERVICE = 11
The battery requires offline maintenance.
saturated uint8 BMS_ERROR = 20
An internal error in the battery management system, not related to the battery itself.
saturated uint8 CONFIGURATION = 30
The battery/BMS/node/service configuration is missing or invalid.
saturated uint8 OVERDISCHARGE = 50
The battery is discharged beyond the design limits and may have incurred damage.
saturated uint8 OVERLOAD = 51
The charge or discharge rate exceeds the safe operating limits.
saturated uint8 CELL_OVERVOLTAGE = 60
saturated uint8 CELL_UNDERVOLTAGE = 61
Voltage of one of the battery cells exceeds its SOA.
saturated uint8 CELL_COUNT = 62
The sum of cell voltages is far from the total pack voltage. The threshold is implementation-defined.
saturated uint8 TEMPERATURE_HOT = 100
saturated uint8 TEMPERATURE_COLD = 101
At least one cell is above/below the temperature SOA.
+ reg.drone.service.battery.Technology (v0.1) [extent 1.0 bytes] [max length 1.0 bytes]
Battery chemistry type and its form-factor. Observe that there is no item to represent unknown technology because it is required to be known. This information may be used by charging systems to select the appropriate charging strategy. If the battery is of an uncommon type, it may be preferred to report the closest-matching type listed here instead of OTHER.
saturated uint8 value [max length 1.0 bytes]
saturated uint8 OTHER = 0
The technology is not specified in this enumeration. Please submit a pull request.
saturated uint8 LI_SOCL2 = 10
Lithium-thionyl chloride (Li-SOCl2)
saturated uint8 LI_BCX = 11
Lithium-thionyl chloride + bromine chloride (Li-BCX)
saturated uint8 LI_MNO2 = 12
Lithium-manganese dioxide (Li-MnO2) (e.g., lithium coin cell, lithium 9V)
saturated uint8 ZN_O2 = 20
Zinc-Air
saturated uint8 AL_O2 = 21
Aluminum-Air
saturated uint8 ZN_MNO2_NH4CL = 30
Zinc-manganese dioxide - ammonium chloride electrolyte (aka zinc-carbon)
saturated uint8 ZN_MNO2_ZNCL2 = 31
Zinc-manganese dioxide - zinc chloride electrolyte (aka heavy duty zinc-carbon)
saturated uint8 ZN_MNO2_KOH = 32
Zinc-manganese dioxide - potassium hydroxide electrolyte (aka alkaline)
saturated uint8 LI_LCO = 100
Lithium cobalt oxide (commonly known as just "lithium-ion")
saturated uint8 LI_LFP = 101
Lithium iron phosphate (LiFePO4)
saturated uint8 LI_NMC = 102
Lithium nickel manganese cobalt oxide
saturated uint8 LI_NCA = 103
Lithium nickel cobalt aluminium oxide
saturated uint8 LI_LMO = 104
Lithium manganese oxide
saturated uint8 LI_S = 105
Lithium-sulfur (LiS)
saturated uint8 LI_LCO_POUCH = 110
LiCoO2 in pouch form factor, commonly known as "lithium-ion polymer" or "LiPo".
saturated uint8 LI_LFP_POUCH = 111
LiFePO4 in pouch form factor, commonly known as "LiFePO4 polymer".
saturated uint8 NI_MH = 120
Nickel-metal hydride
saturated uint8 NI_CD = 121
Nickel-cadmium
saturated uint8 NI_ZN = 122
Nickel-zinc
saturated uint8 NI_FE = 123
Nickel-iron
saturated uint8 PB_AC = 130
Lead acid
saturated uint8 PB_AC_SEALED = 131
Also known as SLA
saturated uint8 EDLC = 200
Electrostatic double-layer capacitor
+ reg.drone.service.common
+ reg.drone.service.common.Heartbeat (v0.1) [extent 2.0 bytes] [max length 2.0 bytes]
The function of the service heartbeat is similar to that of the node heartbeat defined in the standard namespace, except that it is used on a per-service basis, meaning that there may be more than one publisher per node. The service heartbeat should be published either on a separate subject, or as a structural supertype of a service-specific status subject. The publication rate is service-specific but it should not be lower than 1 Hz. This is a structural subtype of the Readiness type.
+ reg.drone.service.common.Readiness (v0.1) readiness [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ uavcan.node.Health (v1.0) health [extent 1.0 bytes] [max length 1.0 bytes]
Abstract component health information. If the node performs multiple activities (provides multiple network services), its health status should reflect the status of the worst-performing activity (network service). Follows: https://www.law.cornell.edu/cfr/text/14/23.1322 https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_25.1322-1.pdf section 6
saturated uint2 value [max length 2 bits]
saturated uint2 NOMINAL = 0
The component is functioning properly (nominal).
saturated uint2 ADVISORY = 1
A critical parameter went out of range or the component encountered a minor failure that does not prevent the subsystem from performing any of its real-time functions.
saturated uint2 CAUTION = 2
The component encountered a major failure and is performing in a degraded mode or outside of its designed limitations.
saturated uint2 WARNING = 3
The component suffered a fatal malfunction and is unable to perform its intended function.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
Any service that is not in the SLEEP state should publish its heartbeat (or a derived status) at least at this rate.
+ reg.drone.service.common.Readiness (v0.1) [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ reg.drone.service.gnss
A generic GNSS location sensor device. This service is designed to model any navigation equipment that leverages global navigation satellite systems (GNSS) to obtain the final estimates, such as plain standalone GNSS receivers, integrated GNSS-IMU units, GNSS-VIO, RTK, PPP, etc. The entirety of the application-layer data provided by this sensor is modeled under the physics namespace. This namespace only adds an asbtract documentation and provides optional auxiliary types for diagnostic purposes. Consumers that require global positioning data without the associated diagnostics should not depend on this service directly, using the plain physics types instead. This allows the designer to uphold the interface segregation principle, resulting in a more composable system that is easier to understand, verify, simulate, and maintain. A compliant implementation of this service should publish the following subjects: PUBLISHED SUBJECT NAME SUBJECT TYPE TYP. RATE [Hz] point_kinematics reg.drone.physics.kinematics.geodetic.PointStateVarTs 1...100 time reg.drone.service.gnss.Time 1...10 heartbeat reg.drone.service.gnss.Heartbeat ~1 sensor_status reg.drone.service.sensor.Status ~1 The contents and related contracts are defined in the documentation for the referenced data types. Time messages should be published synchronously with their kinematic counterparts using the same timestamp value unless the ratio of their publication frequencies is not an integer. The location data along with the accuracy information is published via "point_kinematics". Sensors that are able to estimate orientation (e.g., those equipped with IMU, VIO, multi-antenna RTK, etc.) should also publish the following in addition to the above: PUBLISHED SUBJECT NAME SUBJECT TYPE TYP. RATE [Hz] kinematics reg.drone.physics.kinematics.geodetic.StateVarTs 1...100 A GNSS sensor may be well-equipped to act as a time synchronization master, in which case the standard policies set out under uavcan.time.Synchronization apply. If the sensor is not a time sync master, then it should synchronize itself with the network time and use it for timestamping its estimates. In this case, the estimated GNSS time can be obtained via the "time" subject irrespective of which node is the active time sync master. If the sensor does not support time synchronization at all, then published timestamp values shall be zero. A GNSS service is generally a non-interactive publish-only service: when activated, it keeps publishing data at a fixed rate until deactivated. The activation/deactivation, if supported (e.g., for reasons of energy conservation), is managed via the standard readiness control service. The data update rates and other parameters are controlled via the Register API using implementation-defined register names. SUBSCRIBED SUBJECT NAME SUBJECT TYPE NOTE readiness reg.drone.service.common.Readiness optional A GNSS sensor whose readiness state is SLEEP is allowed to cease all network activity. The published readiness value (part of the heartbeat) should not be conditional on the availability of navigational data; rather, it is to reflect the general status of the sensor itself: if the GNSS unit is operational, then it is to report itself as ENGAGED even if no fix is available at the moment. This is because the sensor status and its outputs are semantically independent entities. Sensors that rely on externally provided RTCM data (e.g., RTK-enabled units) or emit such data should subscribe and/or publish as follows: SUBJECT NAME SUBJECT TYPE NOTE rtcm uavcan.primitive.Unstructured optional The contents and temporal parameters of the encapsulated RTCM stream are implementation-defined.
+ reg.drone.service.gnss.DilutionOfPrecision (v0.1) [extent 14.0 bytes] [max length 14.0 bytes]
The standard DOP estimates (https://en.wikipedia.org/wiki/Dilution_of_precision). DOP values should not be confused with accuracy estimates -- those are expressed through the covariance matrices. Applicable relations: gdop = (ndop^2 + edop^2 + vdop^2 + tdop^2)^0.5 pdop = (ndop^2 + edop^2 + vdop^2)^0.5 hdop = (ndop^2 + edop^2)^0.5 Fields whose values are unknown should be set to NaN.
saturated float16 geometric [max length 2.0 bytes]
GDOP
saturated float16 position [max length 2.0 bytes]
PDOP
saturated float16 horizontal [max length 2.0 bytes]
HDOP
saturated float16 vertical [max length 2.0 bytes]
VDOP
saturated float16 time [max length 2.0 bytes]
TDOP
saturated float16 northing [max length 2.0 bytes]
NDOP
saturated float16 easting [max length 2.0 bytes]
EDOP
+ reg.drone.service.gnss.Heartbeat (v0.1) [extent 124.0 bytes] [max length 128.0 bytes]
Optional, extended information on the performance of the GNSS sensor.
+ reg.drone.service.common.Heartbeat (v0.1) heartbeat [extent 2.0 bytes] [max length 2.0 bytes]
The function of the service heartbeat is similar to that of the node heartbeat defined in the standard namespace, except that it is used on a per-service basis, meaning that there may be more than one publisher per node. The service heartbeat should be published either on a separate subject, or as a structural supertype of a service-specific status subject. The publication rate is service-specific but it should not be lower than 1 Hz. This is a structural subtype of the Readiness type.
+ reg.drone.service.common.Readiness (v0.1) readiness [extent 1.0 bytes] [max length 1.0 bytes]
The readiness state is used to command or report the availability status of a networked service (subsystem). Any system shall have at least one readiness command subject that acts as a global power switch. Every subsystem controlled in such way would usually report its readiness status back to account for the fact that the transition between different readiness states may not be instantaneous. The readiness status reporting is done by means of the service heartbeat type that is also defined in this namespace; the service heartbeat type is a structural subtype of this type. +------------+ | Controller |----------+----------------+----------------+---------... readiness command subject +------------+ | | | ^ ^ ^ v v v | | | +---------+ +---------+ +---------+ | | | | Service | | Service | | Service | ... | | | +---------+ +---------+ +---------+ | | | | | | | | +-------------+ | | | +----------------------------------+ | service heartbeat subjects +-------------------------------------------------------+ In a less trivial use case there may be an arbitrary number of such readiness command subjects (local power switches) controlling various systems within the vehicle (e.g., propulsion, perception sensors, communication, etc). The publication rate is defined on a per-service basis, but it should never be lower than 1 Hz, excepting services that are in the SLEEP state, in which case it is permitted to cease all network activity.
truncated uint2 value [max length 2 bits]
saturated uint2 SLEEP = 0
The long-term state of minimal power consumption. Typically, most subsystems are switched into the SLEEP mode when the vehicle is parked and powered off. Subsystems that do not support the SLEEP state should treat it as an equivalent of STANDBY. A subsystem may require a substantial amount of time to exit the sleep mode (for example, time may be needed to boot the operating system and run the self test procedures). While in the SLEEP mode, the subsystem is allowed to cease service provision and stop all network activity regardless of other requirements, except that it shall be able to reactivate itself if a Readiness message is received commanding any state other than SLEEP.
saturated uint2 STANDBY = 2
The state of being ready to enter the normal operating mode in a short order. A subsystem that is in STANDBY state should be able to participate in the normal network activity. This is the default state that the subsystem should reside in after power-on until explicitly commanded otherwise.
saturated uint2 ENGAGED = 3
When ENGAGED, the subsystem is performing its main intended function at the nominal performance characteristics. A subsystem may require a short amount of time, possibly under a few seconds, to switch between the ENGAGED and STANDBY states (in any direction). Some subsystems may not differentiate between STANDBY and ENGAGED (e.g., offboard communication hardware). The subsystem may disengage itself autonomously in the event of a fatal malfunction, in which case the reported service health status should be WARNING.
+ uavcan.node.Health (v1.0) health [extent 1.0 bytes] [max length 1.0 bytes]
Abstract component health information. If the node performs multiple activities (provides multiple network services), its health status should reflect the status of the worst-performing activity (network service). Follows: https://www.law.cornell.edu/cfr/text/14/23.1322 https://www.faa.gov/documentLibrary/media/Advisory_Circular/AC_25.1322-1.pdf section 6
saturated uint2 value [max length 2 bits]
saturated uint2 NOMINAL = 0
The component is functioning properly (nominal).
saturated uint2 ADVISORY = 1
A critical parameter went out of range or the component encountered a minor failure that does not prevent the subsystem from performing any of its real-time functions.
saturated uint2 CAUTION = 2
The component encountered a major failure and is performing in a degraded mode or outside of its designed limitations.
saturated uint2 WARNING = 3
The component suffered a fatal malfunction and is unable to perform its intended function.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
Any service that is not in the SLEEP state should publish its heartbeat (or a derived status) at least at this rate.
+ reg.drone.service.gnss.Sources (v0.1) sources [extent 6.0 bytes] [max length 6.0 bytes]
There are multiple satellite networks and other data sources which provide autonomous geo-spatial positioning with global coverage. These flags are used for identifying which of those data sources are the source of the location data provided by the GNSS sensor node. Note that these fields convey no information about the status the navigation solution. Here is a specific example: - Heartbeat.fix - indicates that a standalone navigation solution is available. - Heartbeat.rtk_fix - indicates that an RTK fix is established and the integer wavelength ambiguity is resolved. - Sources.rtk_base - indicates that base station data (usually encapsulated into RTCM stream) is available to the receiver, but it says nothing about the status of the navigation solution.
saturated bool gps_l1 [max length 1 bits]
1575.42 MHz
saturated bool gps_l2 [max length 1 bits]
1227.60 MHz
saturated bool gps_l5 [max length 1 bits]
1176.45 MHz
saturated bool glonass_l1 [max length 1 bits]
1602 + k 0.5625 MHz, k in [-7,6]
saturated bool glonass_l2 [max length 1 bits]
1246 + k 0.4375 MHz, k in [-7,6]
saturated bool glonass_l3 [max length 1 bits]
TBA
saturated bool galileo_e1 [max length 1 bits]
1575.42 MHz
saturated bool galileo_e5a [max length 1 bits]
1176.45 MHz
saturated bool galileo_e5b [max length 1 bits]
1207.14 MHz
saturated bool galileo_e6 [max length 1 bits]
1278.75 MHz
saturated bool beidou_b1 [max length 1 bits]
1531.098 MHz
saturated bool beidou_b2 [max length 1 bits]
1207.140 MHz
void5 [max length 5 bits]
Reserved for other constellations.
saturated bool sbas [max length 1 bits]
Satellite-Based Augmentation System (WAAS, EGNOS, GAGAN, QZSS, etc.)
saturated bool gbas [max length 1 bits]
Ground-Based Augmentation System, DGPS (IMES, etc.)
saturated bool rtk_base [max length 1 bits]
Real-Time Kinematics base station data
void3 [max length 3 bits]
Reserved for other RTK-related sources.
saturated bool imu [max length 1 bits]
Inertial Measurement Unit
saturated bool visual_odometry [max length 1 bits]
saturated bool dead_reckoning [max length 1 bits]
Any dead reckoning equipment (e.g., wheel odometry)
saturated bool uwb [max length 1 bits]
Ultra-wideband positioning
void4 [max length 4 bits]
saturated bool magnetic_compass [max length 1 bits]
saturated bool gyro_compass [max length 1 bits]
saturated bool other_compass [max length 1 bits]
void14 [max length 14 bits]
Add new items here to ensure backward compatibility.
+ reg.drone.service.gnss.DilutionOfPrecision (v0.1) dop [extent 14.0 bytes] [max length 14.0 bytes]
The standard DOP estimates (https://en.wikipedia.org/wiki/Dilution_of_precision). DOP values should not be confused with accuracy estimates -- those are expressed through the covariance matrices. Applicable relations: gdop = (ndop^2 + edop^2 + vdop^2 + tdop^2)^0.5 pdop = (ndop^2 + edop^2 + vdop^2)^0.5 hdop = (ndop^2 + edop^2)^0.5 Fields whose values are unknown should be set to NaN.
saturated float16 geometric [max length 2.0 bytes]
GDOP
saturated float16 position [max length 2.0 bytes]
PDOP
saturated float16 horizontal [max length 2.0 bytes]
HDOP
saturated float16 vertical [max length 2.0 bytes]
VDOP
saturated float16 time [max length 2.0 bytes]
TDOP
saturated float16 northing [max length 2.0 bytes]
NDOP
saturated float16 easting [max length 2.0 bytes]
EDOP
saturated uint8 num_visible_satellites [max length 1.0 bytes]
The number of space vehicles visible when the solution was computed.
saturated uint8 num_used_satellites [max length 1.0 bytes]
The number of space vehicles whose signals have been utilized to derive the solution.
saturated bool fix [max length 1 bits]
True if a GNSS fix is established (of any dimensionality, e.g., time-only). Data consumers should not use this flag and rely on the error estimates reported via covariance matrices instead. If the sensor is equipped with other means of deriving the navigation solution (dead reckoning, VIO, UWB, etc.), then this flag may not be representative of the actual status of the solution (only matrices are).
saturated bool rtk_fix [max length 1 bits]
True if the current mode is RTK and an RTK fix has been established. This flag should not be set unless `fix` is also set. The availability of base station data is indicated using a separate (orthogonal) flag defined in Sources.
+ reg.drone.service.gnss.Sources (v0.1) [extent 6.0 bytes] [max length 6.0 bytes]
There are multiple satellite networks and other data sources which provide autonomous geo-spatial positioning with global coverage. These flags are used for identifying which of those data sources are the source of the location data provided by the GNSS sensor node. Note that these fields convey no information about the status the navigation solution. Here is a specific example: - Heartbeat.fix - indicates that a standalone navigation solution is available. - Heartbeat.rtk_fix - indicates that an RTK fix is established and the integer wavelength ambiguity is resolved. - Sources.rtk_base - indicates that base station data (usually encapsulated into RTCM stream) is available to the receiver, but it says nothing about the status of the navigation solution.
saturated bool gps_l1 [max length 1 bits]
1575.42 MHz
saturated bool gps_l2 [max length 1 bits]
1227.60 MHz
saturated bool gps_l5 [max length 1 bits]
1176.45 MHz
saturated bool glonass_l1 [max length 1 bits]
1602 + k 0.5625 MHz, k in [-7,6]
saturated bool glonass_l2 [max length 1 bits]
1246 + k 0.4375 MHz, k in [-7,6]
saturated bool glonass_l3 [max length 1 bits]
TBA
saturated bool galileo_e1 [max length 1 bits]
1575.42 MHz
saturated bool galileo_e5a [max length 1 bits]
1176.45 MHz
saturated bool galileo_e5b [max length 1 bits]
1207.14 MHz
saturated bool galileo_e6 [max length 1 bits]
1278.75 MHz
saturated bool beidou_b1 [max length 1 bits]
1531.098 MHz
saturated bool beidou_b2 [max length 1 bits]
1207.140 MHz
void5 [max length 5 bits]
Reserved for other constellations.
saturated bool sbas [max length 1 bits]
Satellite-Based Augmentation System (WAAS, EGNOS, GAGAN, QZSS, etc.)
saturated bool gbas [max length 1 bits]
Ground-Based Augmentation System, DGPS (IMES, etc.)
saturated bool rtk_base [max length 1 bits]
Real-Time Kinematics base station data
void3 [max length 3 bits]
Reserved for other RTK-related sources.
saturated bool imu [max length 1 bits]
Inertial Measurement Unit
saturated bool visual_odometry [max length 1 bits]
saturated bool dead_reckoning [max length 1 bits]
Any dead reckoning equipment (e.g., wheel odometry)
saturated bool uwb [max length 1 bits]
Ultra-wideband positioning
void4 [max length 4 bits]
saturated bool magnetic_compass [max length 1 bits]
saturated bool gyro_compass [max length 1 bits]
saturated bool other_compass [max length 1 bits]
void14 [max length 14 bits]
Add new items here to ensure backward compatibility.
+ reg.drone.service.gnss.Time (v0.1) [extent 63.0 bytes] [max length 67.0 bytes]
The current time estimated by a GNSS receiver. See TAI64 for details, of which this one is a structural subtype. TAI is short for International Atomic Time: https://en.wikipedia.org/wiki/International_Atomic_Time. TAI is always a fixed integer number of seconds ahead of GPS time. Systems that use GPS time as a reference shall convert that to TAI by adding the fixed difference. GPS time is not supported for reasons of consistency across different positioning systems and applications. The error variance is expected to increase if the GNSS signal deteriorates. If the signal is lost, this value is expected to grow steadily, the rate of growth dependent on the quality of the time keeping hardware available locally (bad hardware yields faster growth). Once the signal is regained, this value would drop back to nominal.
+ reg.drone.physics.time.TAI64VarTs (v0.1) value [extent 19.0 bytes] [max length 19.0 bytes]
+ uavcan.time.SynchronizedTimestamp (v1.0) timestamp [extent 7.0 bytes] [max length 7.0 bytes]
Nested data type used for representing a network-wide synchronized timestamp with microsecond resolution. This data type is highly recommended for use both in standard and vendor-specific messages alike.
truncated uint56 microsecond [max length 7.0 bytes]
The number of microseconds that have passed since some arbitrary moment in the past. The moment of origin (i.e., the time base) is defined per-application. The current time base in use can be requested from the time synchronization master, see the corresponding service definition. This value is to never overflow. The value is 56-bit wide because: - 2^56 microseconds is about 2285 years, which is plenty. A 64-bit microsecond counter would be unnecessarily wide and its overflow interval of 585 thousand years induces a mild existential crisis. - Classic-CAN (not FD) transports carry up to 7 bytes of payload per frame. Time sync messages shall use single-frame transfers, which means that the value can't be wider than 56 bits.
saturated uint56 UNKNOWN = 0
Zero means that the time is not known.
+ reg.drone.physics.time.TAI64Var (v0.1) value [extent 12.0 bytes] [max length 12.0 bytes]
+ reg.drone.physics.time.TAI64 (v0.1) value [extent 8.0 bytes] [max length 8.0 bytes]
Standard TAI64N time label (https://cr.yp.to/libtai/tai64.html). Quote from the source: TAI stands for Temps Atomique International, the current international real-time standard. One TAI second is defined as the duration of 9192631770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the cesium atom. TAI also specifies a frame of reference. Further discussion of special relativity is outside the scope of this document. A TAI64 label is an integer between 0 and 2^64 referring to a particular second of real time. Integer s refers to: - the TAI second beginning exactly 2^62 - s seconds before the beginning of 1970 TAI, if s is between 0 inclusive and 2^62 exclusive; or - the TAI second beginning exactly s - 2^62 seconds after the beginning of 1970 TAI, if s is between 2^62 inclusive and 2^63 exclusive.
saturated int64 tai64n [max length 8.0 bytes]
[nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI.
saturated float32 error_variance [max length 4.0 bytes]
[second^2] Error variance, in second squared, of the time estimate. Infinity indicates that the time estimates are not yet available. A non-positive value indicates that the error variance is unknown.
Supertype.
+ uavcan.time.TAIInfo (v0.1) info [extent 2.0 bytes] [max length 2.0 bytes]
This data types defines constants and runtime values pertaining to the International Atomic Time, also known as TAI. See https://en.wikipedia.org/wiki/International_Atomic_Time. The relationship between the three major time systems -- TAI, GPS, and UTC -- is as follows: TAI = GPS + 19 seconds TAI = UTC + LS + 10 seconds Where "LS" is the current number of leap seconds: https://en.wikipedia.org/wiki/Leap_second. UAVCAN applications should only rely on TAI whenever a global time system is needed. GPS time is strongly discouraged for reasons of consistency across different positioning systems and applications.
saturated uint10 difference_tai_minus_utc [max length 10 bits]
The current difference between TAI and UTC, if known. If unknown, set to zero. This value may change states between known and unknown while the master is running, depending on its ability to obtain robust values from external sources. This value may change twice a year, possibly while the system is running; https://en.wikipedia.org/wiki/Leap_second. Since the rotation of Earth is decelerating, this value may only be positive. Do not use outside Earth. For reference, here is the full list of recorded TAI-UTC difference values, valid at the time of writing: Date | TAI-UTC difference [second] ----------|----------------------------- Jan 1972 | 10 Jul 1972 | 11 Jan 1973 | 12 Jan 1974 | 13 Jan 1975 | 14 Jan 1976 | 15 Jan 1977 | 16 Jan 1978 | 17 Jan 1979 | 18 Jan 1980 | 19 Jul 1981 | 20 Jul 1982 | 21 Jul 1983 | 22 Jul 1985 | 23 Jan 1988 | 24 Jan 1990 | 25 Jan 1991 | 26 Jul 1992 | 27 Jul 1993 | 28 Jul 1994 | 29 Jan 1996 | 30 Jul 1997 | 31 Jan 1999 | 32 Jan 2006 | 33 Jan 2009 | 34 Jul 2012 | 35 Jul 2015 | 36 Jan 2017 | 37 As of 2020, the future of the leap second and the relation between UTC and TAI remains uncertain.
saturated uint8 DIFFERENCE_TAI_MINUS_GPS = 19
[second] The fixed difference, in seconds, between TAI and GPS time. Does not change ever. Systems that use GPS time as a reference should convert that to TAI by adding this difference.
saturated uint10 DIFFERENCE_TAI_MINUS_UTC_UNKNOWN = 0
Actual information about TAI. This information can be used to convert TAI into UTC.
+ reg.drone.service.sensor
+ reg.drone.service.sensor.Status (v0.1) [extent 63.0 bytes] [max length 67.0 bytes]
A generic sensor status information. This data should be published at a low rate but not lower than the specified limit.
+ uavcan.si.unit.duration.Scalar (v1.0) data_validity_period [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 second [max length 4.0 bytes]
Data samples obtained at time Ts are valid at time Tr if: (Tr - Ts) < data_validity_period Expired data should be discarded.
saturated uint32 error_count [max length 4.0 bytes]
Incremented once per occurrence. Reset to zero when the sensor is ENGAGED. The exact definition of what constitutes an error is implementation-dependent.
+ uavcan.si.unit.temperature.Scalar (v1.0) sensor_temperature [extent 4.0 bytes] [max length 4.0 bytes]
saturated float32 kelvin [max length 4.0 bytes]
The temperature of the sensing element. If there are multiple sensing elements or multiple temperature probes per sensor, the reduction is implementation-defined. In a later revision this field may be moved into a separate type.
saturated uint8 MAX_PUBLICATION_PERIOD = 1
[second]