From e1bd442769b440f45084414c7256de40347270a1 Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Wed, 15 Mar 2023 19:43:34 +0300 Subject: [PATCH 1/6] add first version of gnns for ds015 --- ds015/physics/geodetic/Point.0.1.dsdl | 10 ++++++++ ds015/physics/time/TAI64.0.1.dsdl | 20 ++++++++++++++++ ds015/service/gnss/Gnss.0.1.dsdl | 33 +++++++++++++++++++++++++++ ds015/service/gnss/Status.0.1.dsdl | 21 +++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 ds015/physics/geodetic/Point.0.1.dsdl create mode 100644 ds015/physics/time/TAI64.0.1.dsdl create mode 100644 ds015/service/gnss/Gnss.0.1.dsdl create mode 100644 ds015/service/gnss/Status.0.1.dsdl diff --git a/ds015/physics/geodetic/Point.0.1.dsdl b/ds015/physics/geodetic/Point.0.1.dsdl new file mode 100644 index 0000000..10d51d7 --- /dev/null +++ b/ds015/physics/geodetic/Point.0.1.dsdl @@ -0,0 +1,10 @@ +# Geodetic position: latitude, longitude, and altitude. +# The order is chosen to match the axis ordering of the NED frame. + +float64 latitude # [radian] +float64 longitude # [radian] + +uavcan.si.unit.length.Scalar.1.0 altitude +# Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL. + +@sealed \ No newline at end of file diff --git a/ds015/physics/time/TAI64.0.1.dsdl b/ds015/physics/time/TAI64.0.1.dsdl new file mode 100644 index 0000000..c572e97 --- /dev/null +++ b/ds015/physics/time/TAI64.0.1.dsdl @@ -0,0 +1,20 @@ +# 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. +# + +int64 tai64n # [nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI. + +@sealed \ No newline at end of file diff --git a/ds015/service/gnss/Gnss.0.1.dsdl b/ds015/service/gnss/Gnss.0.1.dsdl new file mode 100644 index 0000000..573194c --- /dev/null +++ b/ds015/service/gnss/Gnss.0.1.dsdl @@ -0,0 +1,33 @@ +# A generic GNSS information. + +Status.0.1 status + +uint32 time_week_ms +uint16 time_week +# Time of week (TOW) timestamp indicates the GPS time at which the navigation epoch occurred. + +ds015.physics.geodetic.Point.0.1 point +uavcan.si.unit.velocity.Vector3.1.0 velocity +uavcan.si.unit.angle.Scalar.1.0 yaw + +float16 horizontal_accuracy +# Horizontal RMS accuracy estimate in m + +float16 vertical_accuracy +# Vertical RMS accuracy estimate in m + +float16 speed_accuracy +# 3D velocity RMS accuracy estimate in m/s + +uavcan.si.unit.angle.Scalar.1.0 yaw_accuracy +# heading accuracy of the GPS in radians + +float16 hdop +# Horizontal dilution of precision in meters + +float16 vdop +# Vertical dilution of precision in meters + +uint8 num_sats + +@sealed \ No newline at end of file diff --git a/ds015/service/gnss/Status.0.1.dsdl b/ds015/service/gnss/Status.0.1.dsdl new file mode 100644 index 0000000..a7c742c --- /dev/null +++ b/ds015/service/gnss/Status.0.1.dsdl @@ -0,0 +1,21 @@ +# A generic GNSS information. + +truncated uint2 status +uint2 STATUS_NO_FIX = 0 +uint2 STATUS_TIME_ONLY = 1 +uint2 STATUS_2D_FIX = 2 +uint2 STATUS_3D_FIX = 3 + +truncated uint2 mode +uint2 MODE_SINGLE = 0 +uint2 MODE_DGPS = 1 +uint2 MODE_RTK = 2 +uint2 MODE_PPP = 3 + +uint2 sub_mode +uint2 SUB_MODE_DGPS_OTHER = 0 +uint2 SUB_MODE_DGPS_SBAS = 1 +uint2 SUB_MODE_RTK_FLOAT = 0 +uint2 SUB_MODE_RTK_FIXED = 1 + +@sealed \ No newline at end of file From 2778039cbbbed9e3ed5cd2aaf2f0b58c2d12da7e Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Thu, 16 Mar 2023 00:08:08 +0300 Subject: [PATCH 2/6] add spoofind and jamming indiction for gnns status --- ds015/service/gnss/Status.0.1.dsdl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ds015/service/gnss/Status.0.1.dsdl b/ds015/service/gnss/Status.0.1.dsdl index a7c742c..72ef5aa 100644 --- a/ds015/service/gnss/Status.0.1.dsdl +++ b/ds015/service/gnss/Status.0.1.dsdl @@ -12,10 +12,24 @@ uint2 MODE_DGPS = 1 uint2 MODE_RTK = 2 uint2 MODE_PPP = 3 -uint2 sub_mode +truncated uint2 sub_mode uint2 SUB_MODE_DGPS_OTHER = 0 uint2 SUB_MODE_DGPS_SBAS = 1 uint2 SUB_MODE_RTK_FLOAT = 0 uint2 SUB_MODE_RTK_FIXED = 1 +truncated uint2 jamming_state +uint2 JAMMING_STATE_UNKNOWN = 0 +uint2 JAMMING_STATE_OK = 1 +uint2 JAMMING_STATE_WARNING = 2 +uint2 JAMMING_STATE_CRITICAL = 3 +# Indicates whether jamming has been detected or suspected by the receivers + +truncated uint2 spoofing_state +uint2 SPOOFING_STATE_UNKNOWN = 0 +uint2 SPOOFING_STATE_NONE = 1 +uint2 SPOOFING_STATE_INDICATED = 2 +uint2 SPOOFING_STATE_MULTIPLE = 3 +# Indicates whether spoofing has been detected or suspected by the receivers + @sealed \ No newline at end of file From 791ce0b97ef67dc677747db65244de28f40b5ef3 Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Thu, 16 Mar 2023 12:24:29 +0300 Subject: [PATCH 3/6] remove accidentally added TAI64.0.1 and add namespace kinematics --- .../{ => kinematics}/geodetic/Point.0.1.dsdl | 0 ds015/physics/time/TAI64.0.1.dsdl | 20 ------------------- ds015/service/gnss/Gnss.0.1.dsdl | 2 +- 3 files changed, 1 insertion(+), 21 deletions(-) rename ds015/physics/{ => kinematics}/geodetic/Point.0.1.dsdl (100%) delete mode 100644 ds015/physics/time/TAI64.0.1.dsdl diff --git a/ds015/physics/geodetic/Point.0.1.dsdl b/ds015/physics/kinematics/geodetic/Point.0.1.dsdl similarity index 100% rename from ds015/physics/geodetic/Point.0.1.dsdl rename to ds015/physics/kinematics/geodetic/Point.0.1.dsdl diff --git a/ds015/physics/time/TAI64.0.1.dsdl b/ds015/physics/time/TAI64.0.1.dsdl deleted file mode 100644 index c572e97..0000000 --- a/ds015/physics/time/TAI64.0.1.dsdl +++ /dev/null @@ -1,20 +0,0 @@ -# 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. -# - -int64 tai64n # [nanosecond] Nanoseconds elapsed since 1970-01-01T00:00:00Z TAI. - -@sealed \ No newline at end of file diff --git a/ds015/service/gnss/Gnss.0.1.dsdl b/ds015/service/gnss/Gnss.0.1.dsdl index 573194c..1281c77 100644 --- a/ds015/service/gnss/Gnss.0.1.dsdl +++ b/ds015/service/gnss/Gnss.0.1.dsdl @@ -6,7 +6,7 @@ uint32 time_week_ms uint16 time_week # Time of week (TOW) timestamp indicates the GPS time at which the navigation epoch occurred. -ds015.physics.geodetic.Point.0.1 point +ds015.physics.kinematics.geodetic.Point.0.1 point uavcan.si.unit.velocity.Vector3.1.0 velocity uavcan.si.unit.angle.Scalar.1.0 yaw From 68de845286f06a07b38ecd76c1ea7bf0e49875f2 Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Thu, 16 Mar 2023 14:22:44 +0300 Subject: [PATCH 4/6] add RelativePosition.0.1 --- ds015/service/gnss/RelativePosition.0.1.dsdl | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 ds015/service/gnss/RelativePosition.0.1.dsdl diff --git a/ds015/service/gnss/RelativePosition.0.1.dsdl b/ds015/service/gnss/RelativePosition.0.1.dsdl new file mode 100644 index 0000000..f2b05f3 --- /dev/null +++ b/ds015/service/gnss/RelativePosition.0.1.dsdl @@ -0,0 +1,11 @@ +# Relative positioning information in NED frame +# This message contains the relative position vector from the reference station to the rover. + +uint32 time_week_ms +uint16 time_week +# Time of week (TOW) timestamp indicates the GPS time at which the navigation epoch occurred. + +uavcan.si.unit.length.Vector3.1.0 relative_position +# Alternatively, we can create physics.kinematics.cartesian.Point.0.1 with float32 + +@sealed \ No newline at end of file From cf9cf9d41bc95193fd54fdba664e9397153716d3 Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Thu, 16 Mar 2023 14:23:00 +0300 Subject: [PATCH 5/6] add Covariance.0.1 --- ds015/service/gnss/Covariance.0.1.dsdl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 ds015/service/gnss/Covariance.0.1.dsdl diff --git a/ds015/service/gnss/Covariance.0.1.dsdl b/ds015/service/gnss/Covariance.0.1.dsdl new file mode 100644 index 0000000..ac5b62c --- /dev/null +++ b/ds015/service/gnss/Covariance.0.1.dsdl @@ -0,0 +1,14 @@ +# This message outputs the covariance matrices for the position and velocity +# solutions in the topocentric coordinate system defined as the local-level +# North (N), East (E), Down (D) frame. As the covariance matrices are +# symmetric, only the upper triangular part is output. + +float16[6] point_covariance_urt # [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. + +float16[6] velocity_covariance_urt # [meter^2] +# [(meter/second)^2] Upper-right triangle of the covariance matrix. + +@sealed \ No newline at end of file From 176c8d89bc1896cc39abadb5ba1eebd8e1174b40 Mon Sep 17 00:00:00 2001 From: Dmitry Ponomarev Date: Tue, 21 Mar 2023 23:48:50 +0300 Subject: [PATCH 6/6] fix few code style mistakes --- ds015/physics/kinematics/geodetic/Point.0.1.dsdl | 2 +- ds015/service/gnss/Covariance.0.1.dsdl | 2 +- ds015/service/gnss/Gnss.0.1.dsdl | 2 +- ds015/service/gnss/RelativePosition.0.1.dsdl | 2 +- ds015/service/gnss/Status.0.1.dsdl | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ds015/physics/kinematics/geodetic/Point.0.1.dsdl b/ds015/physics/kinematics/geodetic/Point.0.1.dsdl index 10d51d7..4732222 100644 --- a/ds015/physics/kinematics/geodetic/Point.0.1.dsdl +++ b/ds015/physics/kinematics/geodetic/Point.0.1.dsdl @@ -7,4 +7,4 @@ float64 longitude # [radian] uavcan.si.unit.length.Scalar.1.0 altitude # Distance between the local mean sea level (MSL) and the focal point of the antenna. Positive altitude above the MSL. -@sealed \ No newline at end of file +@sealed diff --git a/ds015/service/gnss/Covariance.0.1.dsdl b/ds015/service/gnss/Covariance.0.1.dsdl index ac5b62c..bedd82c 100644 --- a/ds015/service/gnss/Covariance.0.1.dsdl +++ b/ds015/service/gnss/Covariance.0.1.dsdl @@ -11,4 +11,4 @@ float16[6] point_covariance_urt # [meter^2] float16[6] velocity_covariance_urt # [meter^2] # [(meter/second)^2] Upper-right triangle of the covariance matrix. -@sealed \ No newline at end of file +@sealed diff --git a/ds015/service/gnss/Gnss.0.1.dsdl b/ds015/service/gnss/Gnss.0.1.dsdl index 1281c77..ff4522e 100644 --- a/ds015/service/gnss/Gnss.0.1.dsdl +++ b/ds015/service/gnss/Gnss.0.1.dsdl @@ -30,4 +30,4 @@ float16 vdop uint8 num_sats -@sealed \ No newline at end of file +@sealed diff --git a/ds015/service/gnss/RelativePosition.0.1.dsdl b/ds015/service/gnss/RelativePosition.0.1.dsdl index f2b05f3..57c1d98 100644 --- a/ds015/service/gnss/RelativePosition.0.1.dsdl +++ b/ds015/service/gnss/RelativePosition.0.1.dsdl @@ -8,4 +8,4 @@ uint16 time_week uavcan.si.unit.length.Vector3.1.0 relative_position # Alternatively, we can create physics.kinematics.cartesian.Point.0.1 with float32 -@sealed \ No newline at end of file +@sealed diff --git a/ds015/service/gnss/Status.0.1.dsdl b/ds015/service/gnss/Status.0.1.dsdl index 72ef5aa..4754194 100644 --- a/ds015/service/gnss/Status.0.1.dsdl +++ b/ds015/service/gnss/Status.0.1.dsdl @@ -32,4 +32,4 @@ uint2 SPOOFING_STATE_INDICATED = 2 uint2 SPOOFING_STATE_MULTIPLE = 3 # Indicates whether spoofing has been detected or suspected by the receivers -@sealed \ No newline at end of file +@sealed