mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-10-06 09:02:52 +08:00
* refactor(msg): rename SensorGps to SensorGnss and add VehicleGnss GPS is one constellation; the receivers and the rest of PX4 handle GNSS. Field names lose their units (latitude, speed_accuracy, course, ...), which move into the metadata comments. The sensors module's output becomes VehicleGnss on vehicle_gnss: the selected receiver's sample next to what the sensors module adds to it (corrected sample time, antenna position, selected instance), so a consumer can tell the two apart and later selection and check results have a place to go. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/gps): publish sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/septentrio): publish sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/pps_capture): read sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(lib/gnss): select receivers on sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(sensors): publish VehicleGnss on vehicle_gnss and rename SENS_GPS* to SENS_GNSS* The sensors module's output nests the selected receiver's sample, with the corrected sample time, antenna position and selected instance next to it. SENS_GPS_MASK/TAU/PRIME and SENS_GPSn_ID/OFFX/OFFY/OFFZ/DELAY take the SENS_GNSS name the heading parameters already use; saved parameters migrate on import, and the EKF2_GPS_POS/EKF2_GPS_DELAY translations now land on the new names directly. Assisted-by: Claude:claude-opus-5-5 * refactor(logger): log sensor_gnss and vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(ekf2): fuse vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(replay): replay vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(local_position_estimator): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(attitude_estimator_q): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(lib/terrain_estimation): take sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(lib/wind_estimator): read vehicle_gnss in the replay script Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(vision_target_estimator): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(navigator): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(commander): read sensor_gnss and vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(mavlink): stream sensor_gnss and vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(uxrce_dds_client): bridge vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(zenoh): bridge vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(failure_injection): inject GNSS failures on sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/ins): publish sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/uavcan): publish sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/uavcannode): read sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/cyphal): bridge sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/telemetry): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/rc): read vehicle_gnss for telemetry Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/osd): read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(drivers/transponder): read sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(boards/modalai): publish sensor_gnss from the voxl2 drivers Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(examples): publish sensor_gnss and read vehicle_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(simulation): publish sensor_gnss Follows the SensorGps to SensorGnss and vehicle_gps_position to VehicleGnss rename. Assisted-by: Claude:claude-opus-5-5 * refactor(gnss): name GNSS variables gnss in the sensors module and receiver drivers GPS is one constellation. Identifiers that hold or handle GNSS samples, or bind to the renamed parameters, follow the message and parameter rename; classes, files, modules and names tied to parameters that keep GPS stay. Assisted-by: Claude:claude-opus-5-5 * refactor(gnss): name GNSS variables gnss in the estimators and navigator GPS is one constellation. Identifiers that hold or handle GNSS samples, or bind to the renamed parameters, follow the message and parameter rename; classes, files, modules and names tied to parameters that keep GPS stay. Assisted-by: Claude:claude-opus-5-5 * refactor(gnss): name GNSS variables gnss in commander, mavlink and failure injection GPS is one constellation. Identifiers that hold or handle GNSS samples, or bind to the renamed parameters, follow the message and parameter rename; classes, files, modules and names tied to parameters that keep GPS stay. Assisted-by: Claude:claude-opus-5-5 * refactor(gnss): name GNSS variables gnss in the remaining drivers and simulation GPS is one constellation. Identifiers that hold or handle GNSS samples, or bind to the renamed parameters, follow the message and parameter rename; classes, files, modules and names tied to parameters that keep GPS stay. Assisted-by: Claude:claude-opus-5-5 * docs(gnss): reference sensor_gnss, vehicle_gnss and SENS_GNSS* parameters The upgrade guide covers the topic, field, ROS 2, parameter and Cyphal register renames. Assisted-by: Claude:claude-opus-5-5 * fix(boards): name EKF2::UpdateGnssSample in the fmu-v6xrt ITCM lists The rename left the old UpdateGpsSample symbol in the lists, so the ITCM check fails and the function drops out of ITCM on the boards it doesn't check. Assisted-by: Claude:claude-opus-5-5 * chore(drivers/gps): bump PX4-GPSDrivers to the merged sensor_gnss rename The submodule pointed at the PX4-GPSDrivers#243 branch commit; #243 is merged. Assisted-by: Claude:claude-opus-5-5 * docs(msg): restore WGS84 in SensorGnss and point VehicleGlobalPosition at vehicle_gnss The rename dropped the only mention of the WGS84 datum and ellipsoid, and left VehicleGlobalPosition referring to the removed vehicle_gps_position topic. Assisted-by: Claude:claude-opus-5-5 * refactor(msg): drop selected_instance from VehicleGnss receiver.device_id already names the selected receiver, and 0 while blended. The sensor_gnss instance depends on the order drivers advertise at boot, so it doesn't identify a receiver across boots or logs, and nothing reads it. It would also be meaningless on the per-receiver VehicleGnss instances proposed in #28894. Assisted-by: Claude:claude-opus-5-5 * refactor(gnss): fuse vehicle_gnss.timestamp_sample directly and document the receiver's corrected time vehicle_gnss.timestamp is now the sensors module's publish time, so EKF2's check of timestamp_sample against it was always true; the sensors module always fills timestamp_sample. The message docs described receiver.timestamp_sample as the driver's uncorrected value, but the sensors module writes the corrected time into it as well. Assisted-by: Claude:claude-opus-5-5 * docs(msg): point VehicleGnss users at the top-level timestamp_sample uXRCE-DDS shifts only top-level timestamp and timestamp_sample into agent time, so receiver.timestamp_sample reaches ROS 2 on the PX4 boot clock even though it holds the same value on uORB. Assisted-by: Claude:claude-opus-5-5 * docs(releases): tell ROS 2 users which VehicleGnss timestamps to read Only top-level timestamps are converted to ROS time, so a port that reads receiver.timestamp gets the PX4 boot clock, and vehicle_gnss.timestamp is now the sensors module's publish time rather than the receiver's. Assisted-by: Claude:claude-opus-5-5
96 lines
4.3 KiB
Plaintext
96 lines
4.3 KiB
Plaintext
# GNSS receiver report, position in WGS84
|
|
#
|
|
# One instance per receiver, published by its driver: the receiver's own solution, unmodified.
|
|
# The sensors module publishes the selected receiver on vehicle_gnss.
|
|
|
|
uint64 timestamp # [us] Time since system start
|
|
uint64 timestamp_sample # [us] Measurement time if the driver knows it, else 0 or equal to timestamp. vehicle_gnss carries the corrected value
|
|
|
|
uint32 device_id # [-] Unique device ID for the sensor that does not change between power cycles
|
|
|
|
float64 latitude # [deg] Latitude, allows centimeter level RTK precision
|
|
float64 longitude # [deg] Longitude, allows centimeter level RTK precision
|
|
float64 altitude_msl # [m] Altitude above MSL, from the receiver's own geoid model
|
|
float64 altitude_ellipsoid # [m] Altitude above the WGS84 ellipsoid
|
|
|
|
float32 speed_accuracy # [m/s] Speed accuracy estimate
|
|
float32 course_accuracy # [rad] Course accuracy estimate
|
|
|
|
uint8 fix_type # [@enum FIX_TYPE] Value 0 is also valid to represent no fix
|
|
uint8 FIX_TYPE_NONE = 1
|
|
uint8 FIX_TYPE_2D = 2
|
|
uint8 FIX_TYPE_3D = 3
|
|
uint8 FIX_TYPE_RTCM_CODE_DIFFERENTIAL = 4
|
|
uint8 FIX_TYPE_RTK_FLOAT = 5
|
|
uint8 FIX_TYPE_RTK_FIXED = 6
|
|
uint8 FIX_TYPE_EXTRAPOLATED = 8
|
|
|
|
float32 eph # [m] Horizontal position accuracy
|
|
float32 epv # [m] Vertical position accuracy
|
|
float32 hdop # [-] Horizontal dilution of precision
|
|
float32 vdop # [-] Vertical dilution of precision
|
|
|
|
int32 noise # [-] Noise level per millisecond
|
|
uint16 automatic_gain_control # [-] Automatic gain control monitor
|
|
|
|
uint8 jamming_state # [@enum JAMMING_STATE]
|
|
uint8 JAMMING_STATE_UNKNOWN = 0
|
|
uint8 JAMMING_STATE_OK = 1
|
|
uint8 JAMMING_STATE_MITIGATED = 2
|
|
uint8 JAMMING_STATE_DETECTED = 3
|
|
int32 jamming_indicator # [-] Jamming indicator
|
|
|
|
uint8 spoofing_state # [@enum SPOOFING_STATE]
|
|
uint8 SPOOFING_STATE_UNKNOWN = 0
|
|
uint8 SPOOFING_STATE_OK = 1
|
|
uint8 SPOOFING_STATE_MITIGATED = 2
|
|
uint8 SPOOFING_STATE_DETECTED = 3
|
|
|
|
uint8 authentication_state # [@enum AUTHENTICATION_STATE] Combined signal authentication state (e.g. Galileo OSNMA)
|
|
uint8 AUTHENTICATION_STATE_UNKNOWN = 0
|
|
uint8 AUTHENTICATION_STATE_INITIALIZING = 1
|
|
uint8 AUTHENTICATION_STATE_ERROR = 2
|
|
uint8 AUTHENTICATION_STATE_OK = 3
|
|
uint8 AUTHENTICATION_STATE_DISABLED = 4
|
|
|
|
float32 ground_speed # [m/s] Ground speed
|
|
float32 vel_north # [m/s] North velocity
|
|
float32 vel_east # [m/s] East velocity
|
|
float32 vel_down # [m/s] Down velocity
|
|
float32 course # [rad] [@range -PI, PI] Course over ground, not heading
|
|
bool vel_ned_valid # NED velocity is valid
|
|
|
|
int32 timestamp_time_relative # [us] timestamp + timestamp_time_relative = time of the UTC timestamp since system start
|
|
uint64 time_utc_usec # [us] UTC time from the receiver, 0 until known
|
|
|
|
uint8 satellites_used # [-] Satellites used in the solution
|
|
|
|
uint32 system_error # [@enum SYSTEM_ERROR] Bitmask of receiver errors
|
|
uint32 SYSTEM_ERROR_OK = 0
|
|
uint32 SYSTEM_ERROR_INCOMING_CORRECTIONS = 1
|
|
uint32 SYSTEM_ERROR_CONFIGURATION = 2
|
|
uint32 SYSTEM_ERROR_SOFTWARE = 4
|
|
uint32 SYSTEM_ERROR_ANTENNA = 8
|
|
uint32 SYSTEM_ERROR_EVENT_CONGESTION = 16
|
|
uint32 SYSTEM_ERROR_CPU_OVERLOAD = 32
|
|
uint32 SYSTEM_ERROR_OUTPUT_CONGESTION = 64
|
|
|
|
float32 rtcm_injection_rate # [Hz] Correction injection rate
|
|
uint8 selected_rtcm_instance # [-] uORB instance used for corrections
|
|
|
|
uint8 corrections_protocol # [@enum CORRECTIONS_PROTOCOL] Protocol of the last correction message the receiver parsed
|
|
uint8 CORRECTIONS_PROTOCOL_UNKNOWN = 0
|
|
uint8 CORRECTIONS_PROTOCOL_RTCM3 = 1
|
|
uint8 CORRECTIONS_PROTOCOL_SPARTN = 2
|
|
uint8 CORRECTIONS_PROTOCOL_HAS = 3 # Galileo High Accuracy Service, received on E6
|
|
uint8 CORRECTIONS_PROTOCOL_PMP = 4 # SPARTN over L-band (u-blox NEO-D9S)
|
|
uint8 CORRECTIONS_PROTOCOL_QZSS_L6 = 5 # QZSS CLAS
|
|
bool corrections_crc_failed # Last correction message failed its CRC or content check
|
|
|
|
uint8 corrections_msg_used # [@enum CORRECTIONS_MSG_USED] Whether the receiver used the last correction message
|
|
uint8 CORRECTIONS_MSG_USED_UNKNOWN = 0
|
|
uint8 CORRECTIONS_MSG_USED_NOT_USED = 1
|
|
uint8 CORRECTIONS_MSG_USED_USED = 2
|
|
|
|
# TOPICS sensor_gnss
|