Commit Graph

49 Commits

Author SHA1 Message Date
Andrew Tridgell 36dabc0985 AP_GPS: implement the GPS_DRV_OPTION for ellisoid height in mode drivers
this allows a lot more drivers to use the GPS_DRV_OPTION but to use
ellisoid height. Particularly useful for DroneCAN GPS modules

using ellisoid height instead of AMSL is useful in some specialised
application
2023-11-07 11:17:04 +11:00
Andrew Tridgell 4039e1bc22 AP_GPS: fixed RTK injection when first module is a BASE
this is a partial backport of #24132 which fixes RTK injection when
the 1st GPS module is a DroneCAN RTK rover. Without this change RTCM
injection for RTK fix on the base will only work if it happens to come
up as the first module
2023-08-12 16:29:38 +10:00
Tom Pittenger fe37282f77 AP_GPS: allow external libraries to detect CAN instance 2023-03-02 09:22:15 +11:00
Pierre Kancir 8d962f915e AP_GPS: change isnanf for isnan 2023-02-27 04:15:24 -08:00
Andrew Tridgell 761e4a05e2 AP_GPS: don't consume Heading message if we have RelPosHeading
this avoids 2 conflicting yaw sources
2022-12-20 10:23:58 +11:00
Andrew Tridgell 2fd575aca2 AP_GPS: allow for DroneCAN GPS other than u-blox rover with yaw
single module, dual antenna GPS can give yaw information
2022-12-20 10:23:58 +11:00
Andrew Tridgell 9cebe3b880 AP_GPS: added a common velocity_to_speed_course()
this saves flash using common code
2022-12-20 10:23:58 +11:00
Andrew Tridgell 6c9cbe1a58 AP_GPS: fixed NMEA time reporting
basic NMEA does not have an itow, so we need to use time_week_ms

this caused us to always display the time as the start of the GPS week
on NMEA
2022-12-20 10:23:58 +11:00
Andrew Tridgell 9ec13be880 AP_GPS: fixed injection of RTCM on 2 different CAN buses
if we have two CAN GPS on difference can drivers we need to inject to
both
2022-11-09 09:05:33 +11:00
Andrew Tridgell fde5c35d35 AP_GPS: removed the old DroneCAN Fix message
only send/process Fix2 message, saving bus bandwidth and flash space
2022-09-28 17:27:32 +10:00
Andrew Tridgell 8014f96235 AP_GPS: fixed handling of DroneCAN GPS without vertical velocity
detect first vertical velocity to set flag
2022-08-23 11:17:06 +10:00
Andrew Tridgell cdf8cad801 AP_GPS: fixed undulation for DroneCAN GPS 2022-08-10 05:04:18 +10:00
Peter Barker c2091fdef5 AP_GPS: fix clang++ warnings on static inits
these are static variables so don't need zeroing anyway...
2022-06-28 10:20:30 +10:00
Andrew Tridgell 509f03f946 AP_GPS: cleanup driver option access
use option_set() to make code clearer
2022-06-15 17:30:28 +10:00
bugobliterator 244b8ed358 AP_GPS: change _last_itow to _last_itow_ms 2022-02-03 06:45:35 +11:00
bugobliterator d3d3c826f7 AP_GPS: set _last_itow alongside state.last_corrected_gps_time_us 2022-02-03 06:45:35 +11:00
bugobliterator 49b767b24e AP_GPS: add support for correcting GPS times while using DroneCAN GPS 2022-01-20 17:26:35 +11:00
bugobliterator f3fef657f9 AP_GPS: handle failure to allocation of GPS CAN message subscribers 2021-09-22 21:36:34 +10:00
Josh Henderson 06251335da AP_GPS: use vector.xy().length() instead of norm(x,y) 2021-09-14 10:43:46 +10:00
bugobliterator ddc50a8420 AP_GPS: add option to set a dedicated line for Moving Baseline Data 2021-08-19 14:20:58 +10:00
bugobliterator d32111b376 AP_GPS: fix handling of RTCM3 parser with user notification for bad cfg 2021-08-19 14:20:58 +10:00
bugobliterator 3b58463bfd AP_GPS: initialise uavcan drv interim_state with state structure at startup 2021-08-19 14:20:58 +10:00
bugobliterator 85d8becb8c AP_GPS: add support for auto config Moving Baseline for AP_Periph GPS 2021-08-19 14:20:58 +10:00
bugobliterator 9fc57e40b4 AP_GPS: add support for dual GPS heading using Periph GPSes 2021-08-19 14:20:58 +10:00
Andrew Tridgell e5d878eebd AP_GPS: change handling of moving baseline yaw
this changes yaw handling in a few ways:

 - GPS yaw now has a timestamp associated with the yaw separate from
   the timestamp associated with the GPS fix

 - we no longer force the primary to change to the UBLOX MB rover when
   it has a GPS yaw. This means we don't change GPS primary due to GPS
   loss, which keeps the GPS more stable. It also increases accuracy
   as the rover is always less accurate in position and velocity than
   the base

 - now we force the primary to be the MB base if the other GPS is a
   rover and the base has GPS lock
2021-07-21 17:59:49 +10:00
bugobliterator 0031fee851 AP_GPS: add support for ordering UAVCAN GPS 2021-03-12 16:32:36 +09:00
Michael du Breuil a3ddf5264d AP_GPS: Support uavcan ardupilot.gnss.Status
Also makes the drive by change to make GPS_Backend::is_configured const
2021-03-12 09:39:55 +11:00
Michael Oborne d2720da4a2 AP_GPS: support yaw for UAVCAN GPS 2021-01-07 15:56:28 +11:00
Andrew Tridgell 83c479bcc2 AP_GPS: prevent UAVCAN GPS from giving infinite accuracy values
this can happen due to the complex encodings of accuracies in UAVCAN
2020-11-24 12:00:41 +11:00
Siddharth Purohit 0690b7bd68 AP_GPS: move to using CANManager library 2020-08-19 17:31:09 +10:00
Andrew Tridgell f00392d567 AP_GPS: don't accept a zero GNSS timestamp from UAVCAN GPS
this is needed for a bug in AP_Periph 1.0 which could briefly send a
zero timestamp on first fix marked as a UTC time
2020-04-29 12:20:19 +10:00
Andrew Tridgell 6efbc484fd AP_GPS: cope with UAVCAN GPS that don't provide Aux message
thanks to @VadimZ for the suggestion
2019-12-05 15:48:51 -07:00
Andrew Tridgell b7c9391619 AP_GPS: support Fix2 message for UAVCAN
this allows for RTK fix levels
2019-11-09 17:11:32 +11:00
Andrew Tridgell 632114d687 AP_GPS: support RTCMStream for RTCM injection on UAVCAN 2019-11-09 17:11:32 +11:00
Andrew Tridgell 00260db65a AP_GPS: fixed UAVCAN GPS status when disconnected
this fixes the status reported for a UAVCAN GPS when the cable is
unplugged. It should be "NO GPS", but was instead reporting "NO
FIX". The user had no way to distinguish between not finding a CAN GPS
at all and it not getting satellites

thanks to CUAV for reporting
2019-10-14 19:08:37 -06:00
Andrew Tridgell 9f5a598697 AP_GPS: removed unusued AP_Common/Semaphore.h 2019-05-15 15:33:48 +10:00
Peter Barker 4194812633 AP_GPS: uavcan: reindent after WITH_SEMAPHORE change (NFC) 2019-02-16 14:33:11 +11:00
Peter Barker 1ffbc0ae56 AP_GPS: uavcan: use WITH_SEMAPHORE in place of give/take _registry 2019-02-16 14:33:11 +11:00
Peter Barker 30d5d6b578 AP_GPS: do not zero options after assigning from location
On the assumption that the assignment operator knows what it is doing,
and that we have no idea what fields are actually present in options
2019-01-16 11:45:29 +11:00
Andrew Tridgell 249291eac0 AP_GPS: use WITH_SEMAPHORE()
and removed usage of hal.util->new_semaphore()
2018-10-17 12:54:22 +11:00
liang.tang 7885b267f0 AP_GPS: fix UAVCAN gps message handlers 2018-09-05 17:23:14 +10:00
Siddharth Purohit ca54123b7d AP_GPS: move UAVCAN GPS related code to AP_GPS_UAVCAN backend 2018-08-29 22:54:59 +01:00
Francisco Ferreira b29369eb82
AP_GPS: adapt to changes in AP_BoardConfig_CAN 2018-08-12 13:35:03 +01:00
Eugene Shamaev 9f27a65f4b AP_GPS: helper func 2018-06-09 22:46:48 -07:00
Eugene Shamaev a805b3ce18 AP_GPS: reducing indenting by linearizing the logic 2018-06-09 22:46:48 -07:00
Michael du Breuil 53c66106d6 AP_GPS: Remove unneeded intilizers
saves 160 bytes on make px4-v2
2018-05-16 20:34:00 +10:00
Eugene Shamaev 5341e51f45 AP_GPS: support for multiple instances on different interfaces 2017-07-03 11:44:32 +01:00
Peter Barker e9ce3aa0ce AP_GPS: use HAL_SEMAPHORE_BLOCK_FOREVER macro 2017-05-08 10:23:03 +09:00
Eugene Shamaev dfe9b0e6fc AP_GPS: support for UAVCAN connected GNSS receivers 2017-04-10 22:38:12 +01:00