Skip to content
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

Closed
tridge opened this issue Sep 30, 2023 · 2 comments · Fixed by #25165
Closed

Plane: RTL with rally point does not track terrain #25157

tridge opened this issue Sep 30, 2023 · 2 comments · Fixed by #25165

Comments

@tridge
Copy link
Contributor

tridge commented Sep 30, 2023

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

@LanoAstur
Copy link

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.

image

https://drive.google.com/file/d/1mR49H5uNLJC1Li3lOswvuhu6G7S22_oT/view?usp=sharing

https://drive.google.com/file/d/1s6gyq6rWoUXxI_Wrg9Nuab76yP2PRNus/view?usp=sharing

@rmackay9 rmackay9 changed the title RTL with rally point does not track terrain Plane: RTL with rally point does not track terrain Oct 1, 2023
@rmackay9 rmackay9 added the Plane label Oct 1, 2023
tridge added a commit to tridge/ardupilot that referenced this issue Oct 3, 2023
tridge added a commit to tridge/ardupilot that referenced this issue Oct 3, 2023
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
@tridge
Copy link
Contributor Author

tridge commented Oct 3, 2023

@LanoAstur many thanks for reporting this! autotest that reproduces the bug and a fix is here:
#25165

@tridge tridge closed this as completed Oct 3, 2023
tridge added a commit to tridge/ardupilot that referenced this issue Oct 3, 2023
tridge added a commit to tridge/ardupilot that referenced this issue Oct 3, 2023
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
tridge added a commit to tridge/ardupilot that referenced this issue Oct 12, 2023
tridge added a commit to tridge/ardupilot that referenced this issue Oct 12, 2023
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
tridge added a commit to tridge/ardupilot that referenced this issue Oct 13, 2023
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
rmackay9 pushed a commit to rmackay9/rmackay9-ardupilot that referenced this issue Oct 13, 2023
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
tridge added a commit that referenced this issue Oct 13, 2023
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
rmackay9 pushed a commit that referenced this issue Oct 13, 2023
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
rmackay9 pushed a commit that referenced this issue Oct 13, 2023
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
tridge added a commit that referenced this issue Oct 13, 2023
tridge added a commit that referenced this issue Oct 13, 2023
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
SolderSyntax added a commit to SolderSyntax/ardupilot that referenced this issue Oct 18, 2023
* 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]>
peterbarker pushed a commit that referenced this issue Jan 7, 2024
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
@github-project-automation github-project-automation bot moved this to 4.4.2-beta1 in Plane 4.4 Aug 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 4.4.2-beta1
Development

Successfully merging a pull request may close this issue.

3 participants