-
Notifications
You must be signed in to change notification settings - Fork 17.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plane: RTL with rally point does not track terrain #25157
Comments
Start RTL about 12.8km from the rally point, with an altitude of 600m relative to the take-off point. The rally point has an altitude of 60m relative to the take-off point. At about 6.5km from the RTL point there is a crest of about 480m (approx.) relative to the take-off point. Despite having TERRAIN_LOOKAHD=3000 the aircraft reaches a height of 390m relative to the take-off point. It ends up impacting against the hillside. I will have repeated this simulation if not hundreds of times, then dozens of times with the same result (despite making a few parameter changes). As you can see the TECS.dh is absolutely stable until the impact occurs. https://drive.google.com/file/d/1mR49H5uNLJC1Li3lOswvuhu6G7S22_oT/view?usp=sharing https://drive.google.com/file/d/1s6gyq6rWoUXxI_Wrg9Nuab76yP2PRNus/view?usp=sharing |
reproduces the issue from ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157
@LanoAstur many thanks for reporting this! autotest that reproduces the bug and a fix is here: |
reproduces the issue from ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157
reproduces the issue from ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes #25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes #25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes #25157
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes #25157
* AP_Motors: Add a seprate spool down time, if it's 0 use spool up time * Tools: add extract_features Check Firmware and ODID * Tools: add build_option - ODID (OpenDroneID/RemoteID) * AP_InertialSensor: add INS_RAW_LOG_OPT to allow raw logging of post, and pre+post on primary or all gyros * AP_Mount: Xacti does not report cannot take pic * AP_Mount: Xacti take pic reliability improved * AP_Mount: Xacti uses GCS_SEND_TEXT * AP_Mount: Xacti get_param_name_str returns empty string on failure * AC_PID: Simplify update_error method by calling update all * Plane: fix guided heading control anti windup * Plane: MAV_CMD_GUIDED_CHANGE_HEADING: allow changing heading type or rate for same heading * Plane: GuidedHeading PID: remove slew limit * AP_EFI: Rate limit the megasquirt driver This fixes it up so that the driver actually works on things like AP_Periph that poll at a high rate. This was never a problem with the main firmware as EFI was run at a lower rate, but on AP_Periph this was much to fast. This lead to spamming fresh requests and keeping the buffer completly stuffed with requests. To compound it, the EFI device would start over when there was a fresh request, and eventually our buffer writes become corrupted leading to bad checksums, and a complete failure of the comms. This prevents that situation from happening. * AP_RCProtocol: disable raw logging if no RC_Channel We're asking the singleton here for information on whether we should do raw logging. We may not actually be compiling the RC_Channel library in. * GCS_MAVLink: handle message interval commands as both long and int * Tools: handle message interval commands as both long and int * AP_Scripting: winch-test param name typo fix * AP_Scripting: winch-test becomes winch-control applet * AP_Scripting: winch-control gets .md file * AP_Winch: minor comment improvement * AP_Winch: Daiwa gets stuck protection * AP_Mount: Xacti minor format update * AP_Mount: Xacti supports optical zoom * AP_Mount: Xacti digital zoom percentage fix * Sub: accept MISSION_START as both long and int * autotest: add test for Sub MAV_CMD_MISSION_START * autotest: add upload_rally_points_from_locations * AP_HAL: Add support for NeoPixelRGB * AP_HAL_ChibiOS: add support for NeoPixelRGB * AP_SerialLED: add support for NeoPixelRGB via set_num_neopixel_rgb() * AP_Notify: add support for NeoPixelRGB via set_num_neopixel_rgb() * AP_Scripting: support set_num_neopixel_rgb() * AP_OSD: Make per-cell voltage be shown to two decimal places again * AP_Common: make Location.cpp compile without AP::ahrs() available * AP_AHRS: allow compilation when GPS not available * GCS_MAVLink: allow compilation when GPS library not available * hwdef: HerePro requires AHRS to compile * AP_Periph: instantiate AP_AHRS even if not in SITL Closes potential problem with HerePro if it calls AP_AHRS methods * AP_TemperatureSensor: support var pointer backend params * AP_TempratureSensor: add support for analog sensor with polynomial * AP_Scripting: added INF_Inject EFI driver * AP_Scripting: add basic print * Sub: accept DO_CHANGE_SPEED as both command_long and command_int * autotest: add (disabled) sub test for MAV_CMD_DO_CHANGE_SPEED this doesn't work on master either... * AP_OLC: use right type and static const variable * AP_OLC: add unit tests * GCS_MAVLink: handle DO_AUX_FUNCTION as both long and int * autotest: test MAV_CMD_DO_AUX_FUNCTION as both COMMAND_LONG and COMMAND_INT * bootloaders: refresh Pixhawk6X bootloader ... and include the elf file so we can try to tell what's in the bin * Plane: accept MAV_CMD_DO_LAND_START as both command_long and COMMAND_INT * Tools: add tests for MAV_CMD_DO_LAND_START for both int and long * ArduCopter: don't send fence_status mavlink message if fence not compiled in * ArduPlane: don't send fence_status mavlink message if fence not compiled in * ArduSub: don't send fence_status mavlink message if fence not compiled in * Blimp: don't send fence_status mavlink message if fence not compiled in * Rover: don't send fence_status mavlink message if fence not compiled in * Copter: Two processes in one * Tracker: enable EK2 and EK3 parameters * Tools: board_types.txt: add Vimdrones board types * SITL: document airspeed params * Tools: document airspeed params * AP_Avoidance: Change division to multiplication * hwdef: ARKV6X ADIS16507 example * AC_Fence: Change the description to match the actual value(NFC) * AP_Math: add CRC8_generic method * AP_Proximity: add driver for LD06 * AP_Proximity: Minor fixes to LD06 driver * bootloaders: update CubeOrange bootloader to include flash-from-sd support this is just a rebuild of this firmware; the changes have been in the hwdef for a very long time * SITL: fix typos * bootloaders: freshen CubeOrangePlus bootloader notably this includes flash-from-SD-card support * hwdef: CubeOrangePlus: build abin files ... for use with flash-from-SD-card * GCS_MAVLink: cope with NaNs being passed in when doing conversion to command_int * autotest: fix interact * Tools: add InterActTest to show interaction with automated setup * hwdef:add VTX power control to SpeedyBeeF405-Wing * HAL_ChibiOS: Fix stm32l4+ flash issue stm32l4+ flash reset register has been reset properly * AP_GPS: have AP_GPS_UBLOX use boolean uart read * AP_InertialSensor: fixed the error value for BMI088 the bad value is -32768 not 0xffff (which is -1) -32768 badly corrupts the low-pass filter, and is what we see in logs (a large negative spike on all 3 axes) update to bug fix from: ArduPilot#23033 * AP_BattMonitor: added SHUNT parameter to INS2xx driver some vendors want different shunt resistors * Tools: allow Ohm units in parameters * Copter: remove duplicate friend declaration Signed-off-by: Rhys Mainwaring <[email protected]> * AP_Winch: Make healthy strings common * Filter: HarmonicNotch: convert harmonics to int32 param * AP_InertialSensor: call init for harmonic notch params * AP_GyroFFT: update harmonics to uint32 * AP_AHRS: add airspeed estimate status logging * ArduPlane: add airspeed estimate status logging * hwdef: add MatekL431 ADSB Periph * Tools: add bootloader for MatekL431-ADSB * Filter: LowPassFilter2p: constrain cuttoff to 40% of sample rate * GCS_MAVLink: allow PREFLIGHT_STORAGE as COMMAND_INT and COMMAND_LONG * ArduSub: accept MAV_CMD_CONDITION_YAW as both long and int in Sub * Tools: accept MAV_CMD_CONDITION_YAW as both long and int in Sub * AP_GPS: correct placement of voiding clause should be voided when no logging, not just on periph... * AP_RangeFinder: log signal quality * AP_RangeFinder: add quality to Blue Robotics Ping1D driver * AP_RangeFinder_MAVLink: implement get_signal_quality_pct Co-authored-by: Willian Galvani <[email protected]> * AP_RangeFinder: change get_signal_quality signature to use int8_t * GCS_Common: use int8_t for rangefinder quality_pct * AP_ChibiOS: Delete the same definition * AP_DDS: use ROS convention for node name Signed-off-by: Rhys Mainwaring <[email protected]> * autotest: add autotests for MAV_CMD_SET_SOURCE_SET mavlink command * GCS_MAVLink: handle EKF_SOURCE_SET as both long and int * ArduPlane: allow Plane to run MAV_CMD_MISSION_START as long and int * Tools: allow Plane to run MAV_CMD_MISSION_START as long and int * AP_AHRS: Correct/clarify AHRS_WIND_MAX description * autotest: don't build examples for fmuv2 needs extra defines as we kill features from it * hwdef: Create correct README and add defaults to ease setup * AP_RTC: add AP_RTC_config.h * AP_ADSB: allow for compilation without AP_RTC_ENABLED * AP_BoardConfig: add and use an AP_RTC_config.h * AP_HAL_ChibiOS: disable RTC on periphs the singleton isn't instantiated * AP_Hott_Telem: allow for compilation without AP_RTC_ENABLED * AP_Logger: allow for compilation without AP_RTC_ENABLED * AP_Mount: allow for compilation without AP_RTC_ENABLED * AP_MSP: add and use an AP_RTC_config.h * AP_NMEA_Output: allow for compilation without AP_RTC_ENABLED * AP_OSD: allow for compilation without AP_RTC_ENABLED * AP_RCTelemetry: allow for compilation without AP_RTC_ENABLED * AP_Stats: add and use an AP_RTC_config.h * ArduCopter: allow for compilation without AP_RTC_ENABLED * ArduPlane: allow for compilation without AP_RTC_ENABLED * ArduSub: allow for compilation without AP_RTC_ENABLED * GCS_MAVLink: allow for compilation without AP_RTC_ENABLED * Rover: allow for compilation without AP_RTC_ENABLED * AP_RTC: remove code if AP_RTC_ENABLED is false * AP_GPS: allow for compilation without AP_RTC_ENABLED * waf: disable RTC on sitl_periph_gps * AP_HAL_ChibiOS: add and use HAP_PERIPH_ENABLE_RTC * Tools: add and use HAP_PERIPH_ENABLE_RTC * AP_HAL_ChibiOS: add RTC support to GPS periphs that log this re-adds support for RTC into GPS peripherals that also log. This was removed as these boards were calling methods on the nullptr * AP_HAL_ChibiOS: JFB110 board definition Co-authored-by: Randy Mackay <[email protected]> * AP_DroneCAN: fixed sim on hw build tested using: Tools/scripts/sitl-on-hardware/sitl-on-hw.py --board Pixhawk6C --vehicle plane --simclass Plane --frame plane * AC_AttitudeControl: Fix some typos Fixed some typos found in the code. * AC_Autorotation: Fix some typos Fixed some typos found in the code. * AC_AutoTune: Fix some typos Fixed some typos found in the code. * AC_Avoidance: Fix some typos Fixed some typos found in the code. * AC_CustomControl: Fix some typos Fixed some typos found in the code. * AC_Fence: Fix some typos Fixed some typos found in the code. * AC_PID: Fix some typos Fixed some typos found in the code. * AC_PrecLand: Fix some typos Fixed some typos found in the code. * AC_Sprayer: Fix some typos Fixed some typos found in the code. * AC_WPNav: Fix some typos Fixed some typos found in the code. * AP_AccelCal: Fix some typos Fixed some typos found in the code. * AP_ADSB: Fix some typos Fixed some typos found in the code. * AP_AHRS: Fix some typos Fixed some typos found in the code. * AP_Airspeed: Fix some typos Fixed some typos found in the code. * AP_AIS: Fix some typos Fixed some typos found in the code. * AP_Arming: Fix some typos Fixed some typos found in the code. * AP_Baro: Fix some typos Fixed some typos found in the code. * AP_BattMonitor: Fix some typos Fixed some typos found in the code. * AP_Beacon: Fix some typos Fixed some typos found in the code. * AP_BLHeli: Fix some typos Fixed some typos found in the code. * AP_BoardConfig: Fix some typos Fixed some typos found in the code. * AP_Camera: Fix some typos Fixed some typos found in the code. * AP_CANManager: Fix some typos Fixed some typos found in the code. * AP_Common: Fix some typos Fixed some typos found in the code. * AP_Compass: Fix some typos Fixed some typos found in the code. * AP_DAL: Fix some typos Fixed some typos found in the code. * AP_DDS: Fix some typos Fixed some typos found in the code. * AP_DroneCAN: Fix some typos Fixed some typos found in the code. * AP_EFI: Fix some typos Fixed some typos found in the code. * AP_ESC_Telem: Fix some typos Fixed some typos found in the code. * AP_ExternalAHRS: Fix some typos Fixed some typos found in the code. * AP_Filesystem: Fix some typos Fixed some typos found in the code. * AP_FlashIface: Fix some typos Fixed some typos found in the code. * AP_FlashStorage: Fix some typos Fixed some typos found in the code. * AP_Follow: Fix some typos Fixed some typos found in the code. * AP_Frsky_Telem: Fix some typos Fixed some typos found in the code. * AP_Generator: Fix some typos Fixed some typos found in the code. * AP_GPS: Fix some typos Fixed some typos found in the code. * AP_Gripper: Fix some typos Fixed some typos found in the code. * AP_GyroFFT: Fix some typos Fixed some typos found in the code. * AP_HAL: Fix some typos Fixed some typos found in the code. * AntennaTracker: Fix some typos Fixed some typos found in the code. * ArduCopter: Fix some typos Fixed some typos found in the code. * ArduPlane: Fix some typos Fixed some typos found in the code. * ArduSub: Fix some typos Fixed some typos found in the code. * Blimp: Fix some typos Fixed some typos found in the code. * GCS_MAVLink: accept accel cal vehicle positions as both int and long * AP_RCProtocol: protect against invalid data in SBUS * AP_RCProtocol: make sbus_decode public to allow for a test suite * AP_SBusOut: make sbus output exactly match sbus input decoding * HAL_Linux: use the AP_RCProtocol sbus decoder for Linux * AP_RCProtocol: added a test suite for SBUS encode/decode cover all values and check special handling of 875 * Tools: rebuild IO firmware * AP_RCProtocol: prevent decoding past end of output array this fixes test_sbus on clang * AP_Scripting: added INS filters to revert list these may be changed in a tuning session * AP_Logger: added build directory to VER message this allows log review tools to use right parameter and mode map when vendor has changed the vehicle type strings * hwdef: correct compilation of CubeOrange-SimOnHW ../../libraries/AP_InertialSensor/AP_InertialSensor_config.h:20:2: error: #error "INS_AUX_INSTANCES must be zero if INS_MAX_INSTANCES is less than 3" 20 | #error "INS_AUX_INSTANCES must be zero if INS_MAX_INSTANCES is less than 3" | ^~~~~ * Rover: 4.4.0-beta8 release notes * Copter: 4.4.2-beta1 release notes * Rover: update 4.4.2-beta1 release notes * Copter: update 4.4.2-beta1 release notes * AP_Bootloader: add SpeedyBeeF405v4 * AP_OpenDroneID: ensure Persistent memory is not read continuously * AP_OpenDroneID: only load from persistent memory in init() we do not want to do this from update() as it is an expensive call * AP_OpenDroneID: remove duplicate definition of AP_OPENDRONEID_ENABLED ... my guess is conflict resolution caused this * autotest: added Plane.TerrainRally test reproduces the issue from ArduPilot#25157 * Plane: fixed terrain RTL with rally points this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes ArduPilot#25157 * Plane: 4.4.2-beta1 release notes * hwdef: Cite CubeOrange-SimOnHW as the default file * Tools: adjust install_prereqs_ubuntu.sh to handle Mantic * Vagrant: add Mantic Minotaur to available VMs * github: test mantic not bionic bionic no longer builds SITL: ../../libraries/AP_Logger/AP_Logger_Backend.cpp: In member function 'bool AP_Logger_Backend::Write_VER()': ../../libraries/AP_Logger/AP_Logger_Backend.cpp:577:5: sorry, unimplemented: non-trivial designated initializers not supported }; ^ compilation terminated due to -Wfatal-errors. * autotest: correct hook removal for Copter tests these hooks were remaining active if the test failed * GCS_MAVlink: correct routing for Solo Gimbal Check for a opro camera in a Solo gimbal added and re-enable the routing of Gopro Mavlink commands * Flter: notchfilter: remove unneeded value and pre-multiply for speed * AP_Periph: Rate limit EFI driver updates Also remove the last update variables for features that were compiled out. * AC_PID: If PD max limiting isn't active clear the flag * AP_HAL_ChibiOS: hwdef: scripts: defaults_periph: disable unused libaries by defualt * AP_Param: Allow override of AP_PARAM_DYNAMIC_ENABLED define * AP_Scripting: don't include CAN support on periph if there is only one CAN port * AP_Scripting: require a file system * AP_Scripting: lua_scripts: add missing HAL_LOGGING_ENABLED define * AP_Scripting: generator: emit dependancys for operators * AP_Scripting: Generator: allow unused enum loader function * AP_Scripting: add lots off missing binding dependencies * AP_Scripting: add support for dependencty on manual methods, remove handling of mission commands without AP_Mission * GCS_MAVLink: handle MAV_CMD_DEBUG_TRAP as both long and int * SRV_Channel: expose public function to convert scaled value to pwm Allow other modules to get and store the PWM value for a specific scaled value and re-apply it later. * AP_ServoRelayEvents: allow mavlink command of rcin scaled functions Allow `MAV_CMD_DO_SET_SERVO` and `MAV_CMD_DO_REPEAT_SERVO` to be used on a servo output set to an RCINnScaled function (i.e. k_rcinN_mapped). Scaling is applied so that a commanded servo PWM of <=1000 maps to SERVOn_MIN, a PWM of 1500 maps to SERVOn_TRIM, and a PWM of >=2000 maps to SERVOn_MAX. Linear interpolation is performed between ranges. * GCS_MAVLink: add build option for deprecated MISSION_REQUEST replaced by MISSION_REQUEST_INT * autotest: test setting modes via COMMAND_INT and DO_SET_MODE * GCS_MAVLink: allow setting modes via COMMAND_INT and DO_SET_MODE * AP_BattMonitor: DroneCAN: always have consumed energy * ArduPlane: accept LOITER_UNLIM and RETURN_TO_LAUNCH as command_int * Tools: accept LOITER_UNLIM and RETURN_TO_LAUNCH as command_int * Plane:force min transition timer to 2 sec * hwdef:fix bug in AtomRCF405NAVI,fix some bds that aren't building * AP_Beacon: fix example when Beacon not available simply print the fact that the beacon librar y isn't compiled in * Tools: Replay: correct compilation when AdvancedFailsafe not available * AP_Scripting: added SVFFI generator support * autotest: add test for SET_ATTITUDE_TARGET headings * Plane:reset in landing seq on mode change while disarmed * Copter: encapsulate auto takeoff into an ojbect similar to the encapsulation of "user takeoff" into an object * AP_HAL_ChibiOS: correct printing of timer information * Blimp: remove misleading implementation of MAV_CMD_CONDITION_YAW this would return success when it, in fact, does nothing. * AP_HAL_ChibiOS: add support for saving and restoring SCK pin state when SPI goes into undefined state during reset * AP_HAL_ChibiOS: fix mode setting for ICM45686 on CubeOrangePlus * AP_HAL_ChibiOS: add option to set HAL_SPI_SCK_SAVE_RESTORE * autotest: add explicit test for MAV_CMD_GET_HOME_POSITION * GCS_MAVLink: handle MAV_CMD_GET_HOME_POSITION as both long and int * autotest: add test for MAV_CMD_NAV_TAKEOFF for quadplane using command_long * Plane: use origin-relative altitudes rather than home-relative * autotest: allow more time for disarm on vtol-state test right on the edge * autotest: test DO_SEND_BANNER as both long and int * GCS_MAVLink: handle MAV_CMD_DO_SEND_BANNER as both long and int * hwdef: Adapt the rotation direction of the QMC5883L * hwdef: To adapt the rotation directionof the QMC5883L on new Aerofox-Airspeed-DLVR --------- Signed-off-by: Rhys Mainwaring <[email protected]> Co-authored-by: Michael du Breuil <[email protected]> Co-authored-by: Tom Pittenger <[email protected]> Co-authored-by: Iampete1 <[email protected]> Co-authored-by: Randy Mackay <[email protected]> Co-authored-by: Peter Barker <[email protected]> Co-authored-by: Andy Piper <[email protected]> Co-authored-by: Michelle Rossouw <[email protected]> Co-authored-by: Andrew Tridgell <[email protected]> Co-authored-by: Pierre Kancir <[email protected]> Co-authored-by: muramura <[email protected]> Co-authored-by: Huibean <[email protected]> Co-authored-by: Anthony Luo <[email protected]> Co-authored-by: alexklimaj <[email protected]> Co-authored-by: Joshua Henderson <[email protected]> Co-authored-by: Adithya Patil <[email protected]> Co-authored-by: rishabsingh3003 <[email protected]> Co-authored-by: Henry Wurzburg <[email protected]> Co-authored-by: thu5cob <[email protected]> Co-authored-by: Rhys Mainwaring <[email protected]> Co-authored-by: Willian Galvani <[email protected]> Co-authored-by: Clyde McQueen <[email protected]> Co-authored-by: Tim Tuxworth <[email protected]> Co-authored-by: jfbblue0922 <[email protected]> Co-authored-by: Mykhailo Kuznietsov <[email protected]> Co-authored-by: bugobliterator <[email protected]> Co-authored-by: stephan <[email protected]> Co-authored-by: Thomas Watson <[email protected]> Co-authored-by: AerofoxTech <[email protected]>
this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes #25157
when using RTL with a rally point with high points in the terrain between current location and the rally point, with TERRAIN_FOLLOW=1 the plane sometimes does not climb over the terrain as it should. As yet it is unclear under what conditions it fails.
Reproduced in 4.4.1 stable in SITL with the following log:
http://uav.tridgell.net/tmp/00000013.BIN
The text was updated successfully, but these errors were encountered: