Plane 4.0 release

I could not get F-Port working with the latest FrSky firmware. I think it’s a bug because it works with the older version. Cross posted here: FrSky FPort support - testers wanted

I downloaded the latest version of ArduPlane today to a Kakute F7 but now I cannot control the flaps from the transmitter. I cannot find how to control it anymore.
My fault or code change?

Mr Anders W
Sweden

can you send me a tlog showing you trying to move the flaps on the ground? Or a bin log with LOG_DISARMED=1

Hi Tridge

Nice to hear from you.
If I am correct there was something like “FLAP_RC_CH”. Now there is not.
I have no clue how to connect an RC channel to the control the flaps.
The RC input is working.
The Flaps are working in Setup -> Servos and if I click Reverse they move as they should

I’m running the code on a Kakute F7. The Flaps on CH 5 and Dshot on Ch 6.
Motor, and all other servos are working perfectly but I cannot control the flaps.

Anders

in 4.0 there is a parameter FLAP_IN_CHANNEL that you are probably referring to.
For 4.1 (in development now) this has been replaced with a RCn_OPTION “FLAP” (value 208). So you RC7_OPTION=208 to make flap input come from channel 7.


I’ve just released plane stable 4.0.7beta1. This is a minor release with some important bug fixes against 4.0.6.

The changes are:

  • Fixed F32Lightening board IMU fast sampling issue
  • fixed issue with EKF2 and EKF3 with use of high accuracy GPS modules. This is important for anyone flying with a RTK GPS
  • Fixed KakuteF7 DShot glitch issue
  • Fixes issue with checking for valid RC input in ICE disable channel
  • fixed an interrupt flood issue with any sensor that uses interrupt timing measurement, such as RPM sensors.
  • Modified RM3100 driver to problem all 4 possible I2C addresses
  • Fixed UDP RC input on Linux boards to accept up to 16 RC inputs on UDP

The most critical fix in the above list is the ISR flood issue.

ISR Flood Issue

The ISR flood issue happens when a misbehaving external sensor (such as an RPM sensor for a petrol motor) starts providing pulses faster than the flight controller can process them. If this happens then the CPU can be overloaded in the interrupt handling for the sensor and stop flying the vehicle. The level of interrupt rate needed to cause this issue is around 500k interrupts per second, so to be safe we have added a limit of 100k interrupts per second. If a single interrupt source produces more than 10k interrupts in a single 0.1 second period then we disable that interrupt source, print a warning to the user and raise an internal error.

Happy flying!

2 Likes

Thanks a lot :slight_smile:

Have a very good weekend

Thanks Tridge,
Will this be in Copter as well? I plan to put a RPM sensor for a ICE generator motor in soon.

yes, in copter 4.0.5, which should be in beta today or tomorrow


I’ve just released 4.0.7beta2, with a small set of changes from beta1. The changes from beta1 are:

  • enable telem3 on Durandal
  • fixed SBUS output when scanning for FPort on IOMCU
  • keep a backup of storage of last 100 boots
  • fixed a race condition in handling UART DMA transmit

Happy flying!

1 Like

Bad news, not sure if it’s a beta issue. This plane was landing well in previous flights, but in this one came up 100 yards short. Screenshot shows it didn’t achieve anywhere near the intended land slope, and the takeoff/arming location are the same as the intended landing spot. Log here: Note: We thought the first landings were going poorly due to the rangefinder engaging on the 10m tall trees 100m short of the landing zone.

image

image

No expert here, but it looks like the esc got hot (80+) and shut down putting the plane into a stall

I have looked at the ESC part of the logs, and the RPMs don’t indicate any form of shutdown; the plane would literally glide this slope, but it uses reverse thrust to manage the energy. Here is why I don’t believe the stall theory; the pitch demanded and achieved are consistently together throughout, and the pitch recovers once reverse thrust stops during the late attempted go-around:

Also note the reverse thrust all of the way to the crash site; if it was below slope and descending rapidly, it should NOT be applying reverse thrust and pitch down command. Period.

I’ll attach successful logs soon of the flight just hours earlier with full auto landing successes; the only change was the addition of a rangefinder, and that was disabled for this last landing attempt.

@tridge, @MagicRuB, or @WickedShell, would you guys be able to take a moment to review the automatic landing sequence posted above on 4.0.7beta2 that resulted in a rapid descent and crash? I’m available all day on discord.

Official bug report here: https://github.com/ArduPilot/ardupilot/issues/15608

I’ve finally found the cause of this, sorry for the delay. It is not a new bug.
I’ve done a fix here:

it fixes two places where rangefinder data can influence landing even when RNGFND_LANDING=0
In your flight the bad rangefinder data was triggering incorrect glide slope calculation even though you had it disabled.
Cheers, Tridge


I’ve just released plane stable 4.0.7. This is a minor release with some important bug fixes.

  • enable telem3 on Durandal

  • fixed SBUS output when scanning for FPort on IOMCU

  • keep a backup of storage of last 100 boots

  • fixed a race condition in handling UART DMA transmit

  • Fixed F32Lightening board IMU fast sampling issue

  • fixed issue with EKF2 and EKF3 with use of high accuracy GPS modules. This is important for anyone flying with a RTK GPS

  • Fixed KakuteF7 DShot glitch issue

  • Fixes issue with checking for valid RC input in ICE disable channel

  • fixed an interrupt flood issue with any sensor that uses interrupt timing measurement, such as RPM sensors.

  • Modified RM3100 driver to probe all 4 possible I2C addresses

  • Fixed UDP RC input on Linux boards to accept up to 16 RC inputs on UDP

  • fixed an issue with use of rangefinder in landing with RNGFND_LANDING=0 (thanks Nate!)

The most critical fixes in the above list are:

ISR Flood Issue

The ISR flood issue happens when a misbehaving external sensor (such as an RPM sensor for a petrol motor) starts providing pulses faster than the flight controller can process them. If this happens then the CPU can be overloaded in the interrupt handling for the sensor and stop flying the vehicle. The level of interrupt rate needed to cause this issue is around 500k interrupts per second, so to be safe we have
added a limit of 100k interrupts per second. If a single interrupt source produces more than 10k interrupts in a single 0.1 second period then we disable that interrupt source, print a warning to the user and raise an internal error.

SBUS Issue

When the dedicated SBUS output port is used on boards with a IOMCU (such as Hex Cube or Holybro Duandal) then SBUS would be interrupted on loss of RC input. The problem was that the same UART was used for both SBUS output and RC input. When RC input is lost the RC protocol system starts searching for a receiver, which involves changing
baudrate on that UART. That baudrate change affected SBUS output. This means if your aircraft depends on SBUS output to fly and you get an RC failsafe you risk losing RC outputs. The fix is to not change baudrates on that port when SBUS output is enabled (which means protocols like FPort can’t be used when IOMCU SBUS output is used).

Happy flying!

6 posts were merged into an existing topic: HERE+, PPK, and Hotshoe Feedback Processing

Hi, does anyone know wich parameters are missing in “Pixhawk 1-1M” (1mb flash limit) compared to “Pixhawk 1” versions of the firmware?

And how important are they for the operation of the uav?

Thanks

Hi,
Pixhawk1-1M has HAL_MINIMIZE_FEATURES defined which in turn disables quite a lot of features, I extracted a list grepping !HAL_MINIMIZE_FEATURES, it should give you an idea, for the importance you should look up in the wiki each one of them and decide for yourself.

ArduCopter/config.h: #define AC_OAPATHPLANNER_ENABLED   !HAL_MINIMIZE_FEATURES
ArduPlane/config.h:  #define GRIPPER_ENABLED !HAL_MINIMIZE_FEATURES
ArduPlane/config.h: #define OFFBOARD_GUIDED !HAL_MINIMIZE_FEATURES
ArduPlane/config.h: #define LANDING_GEAR_ENABLED !HAL_MINIMIZE_FEATURES
ArduPlane/qautotune.h:#define QAUTOTUNE_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AC_Sprayer/AC_Sprayer.h:#define HAL_SPRAYER_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_ADSB/AP_ADSB.h:#define HAL_ADSB_ENABLED !HAL_MINIMIZE_FEATURES && BOARD_FLASH_SIZE > 1024
libraries/AP_Baro/AP_Baro.h:#define HAL_BARO_WIND_COMP_ENABLED !HAL_MINIMIZE_FEATURES && !defined(HAL_BUILD_AP_PERIPH)
libraries/AP_Camera/AP_RunCam.h:#define HAL_RUNCAM_ENABLED !HAL_MINIMIZE_FEATURES && !APM_BUILD_TYPE(APM_BUILD_Replay)
libraries/AP_EFI/AP_EFI.h:#define EFI_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_GPS/AP_GPS.h:#define GPS_MOVING_BASELINE !HAL_MINIMIZE_FEATURES && GPS_MAX_RECEIVERS>1
libraries/AP_Generator/AP_Generator.h:#define GENERATOR_ENABLED !HAL_MINIMIZE_FEATURES && !defined(HAL_BUILD_AP_PERIPH)
libraries/AP_HAL/AP_HAL_Boards.h:#define HAL_WITH_DSP !HAL_MINIMIZE_FEATURES
libraries/AP_Hott_Telem/AP_Hott_Telem.h:#define HAL_HOTT_TELEM_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_MSP/msp.h:#define HAL_MSP_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_MSP/msp.h:#define HAL_MSP_SENSORS_ENABLED defined(HAL_MSP_ENABLED) && !HAL_MINIMIZE_FEATURES && !defined(HAL_BUILD_AP_PERIPH)
libraries/AP_Mount/AP_Mount.h:#define HAL_MOUNT_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_OLC/AP_OLC.h:#define HAL_PLUSCODE_ENABLE !HAL_MINIMIZE_FEATURES && BOARD_FLASH_SIZE > 1024
libraries/AP_OSD/AP_OSD.h:#define OSD_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_OSD/AP_OSD.h:#define OSD_PARAM_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_OpticalFlow/OpticalFlow.h:#define HAL_MSP_OPTICALFLOW_ENABLED HAL_MSP_ENABLED && !HAL_MINIMIZE_FEATURES
libraries/AP_PiccoloCAN/AP_PiccoloCAN.h:#define HAL_PICCOLO_CAN_ENABLE (HAL_NUM_CAN_IFACES && !HAL_MINIMIZE_FEATURES)
libraries/AP_RCTelemetry/AP_CRSF_Telem.h:#define HAL_CRSF_TELEM_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_RCTelemetry/AP_Spektrum_Telem.h:#define HAL_SPEKTRUM_TELEM_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_RangeFinder/AP_RangeFinder.h:#define HAL_MSP_RANGEFINDER_ENABLED HAL_MSP_ENABLED && !HAL_MINIMIZE_FEATURES
libraries/AP_Soaring/AP_Soaring.h: #define HAL_SOARING_ENABLED !HAL_MINIMIZE_FEATURES
libraries/AP_VisualOdom/AP_VisualOdom.h:#define HAL_VISUALODOM_ENABLED !HAL_MINIMIZE_FEATURES
2 Likes