mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-11 19:41:36 +08:00
[WIP]: GPS clock set time updates
- remove drivers/gps set clock callback - drivers/gps try to set sensor_gps timestamp_sample as closely as possible - move mavlink timesync to new lib/timesync library - sensors/vehicle_gps_position consume all sensor_gps sources and determine time GPS utc time offset using lib/timesync - once time offset is stable update system clock if sufficiently different
This commit is contained in:
+2
-2
@@ -1,6 +1,7 @@
|
||||
# GPS position in WGS84 coordinates.
|
||||
# the field 'timestamp' is for the position & velocity (microseconds)
|
||||
# the field 'timestamp_sample' is for the position & velocity (microseconds)
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
uint64 timestamp_sample
|
||||
|
||||
uint32 device_id # unique device ID for the sensor that does not change between power cycles
|
||||
|
||||
@@ -31,7 +32,6 @@ float32 vel_d_m_s # GPS Down velocity, (metres/sec)
|
||||
float32 cog_rad # Course over ground (NOT heading, but direction of movement), -PI..PI, (radians)
|
||||
bool vel_ned_valid # True if NED velocity is valid
|
||||
|
||||
int32 timestamp_time_relative # timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds)
|
||||
uint64 time_utc_usec # Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0
|
||||
|
||||
uint8 satellites_used # Number of satellites used
|
||||
|
||||
@@ -288,16 +288,16 @@ private:
|
||||
|
||||
/** Timesync Status msg Setters **/
|
||||
@[if version.parse(fastrtps_version) <= version.parse('1.7.2') or not ros2_distro]@
|
||||
inline void setMsgSourceProtocol(timesync_status_msg_t *msg, const uint8_t &source_protocol) { msg->source_protocol_() = source_protocol; }
|
||||
inline void setMsgSourceProtocol(timesync_status_msg_t *msg, const uint8_t &source_protocol) { msg->source_() = source_protocol; }
|
||||
inline void setMsgRemoteTimeStamp(timesync_status_msg_t *msg, const uint64_t &remote_timestamp) { msg->remote_timestamp_() = remote_timestamp; }
|
||||
inline void setMsgObservedOffset(timesync_status_msg_t *msg, const int64_t &observed_offset) { msg->observed_offset_() = observed_offset; }
|
||||
inline void setMsgEstimatedOffset(timesync_status_msg_t *msg, const int64_t &estimated_offset) { msg->estimated_offset_() = estimated_offset; }
|
||||
inline void setMsgRoundTripTime(timesync_status_msg_t *msg, const uint32_t &round_trip_time) { msg->round_trip_time_() = round_trip_time; }
|
||||
//inline void setMsgRoundTripTime(timesync_status_msg_t *msg, const uint32_t &round_trip_time) { msg->round_trip_time_() = round_trip_time; }
|
||||
@[elif ros2_distro]@
|
||||
inline void setMsgSourceProtocol(timesync_status_msg_t *msg, const uint8_t &source_protocol) { msg->source_protocol() = source_protocol; }
|
||||
inline void setMsgSourceProtocol(timesync_status_msg_t *msg, const uint8_t &source_protocol) { msg->source() = source_protocol; }
|
||||
inline void setMsgRemoteTimeStamp(timesync_status_msg_t *msg, const uint64_t &remote_timestamp) { msg->remote_timestamp() = remote_timestamp; }
|
||||
inline void setMsgObservedOffset(timesync_status_msg_t *msg, const int64_t &observed_offset) { msg->observed_offset() = observed_offset; }
|
||||
inline void setMsgEstimatedOffset(timesync_status_msg_t *msg, const int64_t &estimated_offset) { msg->estimated_offset() = estimated_offset; }
|
||||
inline void setMsgRoundTripTime(timesync_status_msg_t *msg, const uint32_t &round_trip_time) { msg->round_trip_time() = round_trip_time; }
|
||||
//inline void setMsgRoundTripTime(timesync_status_msg_t *msg, const uint32_t &round_trip_time) { msg->round_trip_time() = round_trip_time; }
|
||||
@[end if]@
|
||||
};
|
||||
|
||||
+12
-5
@@ -1,10 +1,17 @@
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
|
||||
uint8 SOURCE_PROTOCOL_MAVLINK = 0
|
||||
uint8 SOURCE_PROTOCOL_RTPS = 1
|
||||
uint8 source_protocol # timesync source. Source can be MAVLink or the microRTPS bridge
|
||||
uint8 SOURCE_UNKNOWN = 0
|
||||
uint8 SOURCE_PROTOCOL_MAVLINK = 1
|
||||
uint8 SOURCE_PROTOCOL_RTPS = 2
|
||||
uint8 SOURCE_GPS1 = 3
|
||||
uint8 SOURCE_GPS2 = 4
|
||||
uint8 source # timesync source
|
||||
|
||||
uint64 remote_timestamp # remote system timestamp (microseconds)
|
||||
int64 observed_offset # raw time offset directly observed from this timesync packet (microseconds)
|
||||
int64 estimated_offset # smoothed time offset between companion system and PX4 (microseconds)
|
||||
uint32 round_trip_time # round trip time of this timesync packet (microseconds)
|
||||
|
||||
uint64 deviation
|
||||
|
||||
int32 sequence
|
||||
|
||||
bool converged
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# GPS position in WGS84 coordinates.
|
||||
# the field 'timestamp' is for the position & velocity (microseconds)
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
uint64 timestamp_sample
|
||||
|
||||
int32 lat # Latitude in 1E-7 degrees
|
||||
int32 lon # Longitude in 1E-7 degrees
|
||||
@@ -17,6 +18,8 @@ float32 epv # GPS vertical position accuracy (metres)
|
||||
float32 hdop # Horizontal dilution of precision
|
||||
float32 vdop # Vertical dilution of precision
|
||||
|
||||
float32 pdop
|
||||
|
||||
int32 noise_per_ms # GPS noise per millisecond
|
||||
int32 jamming_indicator # indicates jamming is occurring
|
||||
uint8 jamming_state # indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Warning, 3: Critical
|
||||
@@ -28,7 +31,6 @@ float32 vel_d_m_s # GPS Down velocity, (metres/sec)
|
||||
float32 cog_rad # Course over ground (NOT heading, but direction of movement), -PI..PI, (radians)
|
||||
bool vel_ned_valid # True if NED velocity is valid
|
||||
|
||||
int32 timestamp_time_relative # timestamp + timestamp_time_relative = Time of the UTC timestamp since system start, (microseconds)
|
||||
uint64 time_utc_usec # Timestamp (microseconds, UTC), this is the timestamp which comes from the gps module. It might be unavailable right after cold start, indicated by a value of 0
|
||||
|
||||
uint8 satellites_used # Number of satellites used
|
||||
|
||||
Reference in New Issue
Block a user