First flight - thrust pulsing & no way to fly down

I’ve built a multicopter based on F450 frame with pixhawk4 and this is my first flight:

https://review.px4.io/plot_app?log=c86d7444-5d4e-4708-bdd5-9e89ad76be6b

I have 2 problems I need help with. First one is the pulsing of thrust. I’ve found a section in https://docs.px4.io/v1.9.0/en/flying/basic_flying.html that mentions it might be related to Land Detector configuration, however I have no idea what to change and how to safely test my changes afterwards.

Which leads me to the second problem - the drone only wants to fly up! How do I make it descend? I was able to “land” by a pure luck - when switching to Stabilized mode the motors went to minimum thrust so by switching back and forth I was able to land. I have FrSky Lite, mode 2, both stick autocenter by itself.

I’ve gone several time over the px4 and qgc docs now. From the beginner point of view, I would appreciate a more step by step approach that would lead me to the first fight.

Complete log upload here: https://review.px4.io/plot_app?log=ef7cf608-0f15-4c89-a5c0-ad361ad30287 (the original link is missing something at the end).

I have also found third problem: at 29:24 Land mode has been activated but there was no change from previous Loiter mode behavior (is it Loiter or Hold? Hold is much better name btw). Actually there are more strange things - in Land, there appears to be some Altitude Setpoint at 0m above sea - I have no idea why.

In graph Local Position Z I see that the Z setpoint started going down after engaging Land mode but the estimated Z was going still up despite the setpoint going down. This graph is most telling I think. Once I switched to Stabilized, the free fall started. When going back to Hold/Loiter, the Z setpoint kept going down but the estimate didn’t. At all times the estimate seems to correspond with what I saw was happening.

I’d appreciate any advice. What is the simplest test one should do first? You know, something like take off and land again immediately. What is the correct way to do this? How do you debug problems like the ones described above?

There seems to be something broken around Thrust input. Flight review shows:

While pyFlightAnalysis shows:

The pyFlightAnalysis graph shows what I actually did with the throttle, while the Flight Analysis graph shows what the drone thought I did (or what it reacted to… never going down).

I can also confirm there is a problem with Land Detector:

It periodically enters “ground_contact” while it should not and at the end fails to enter “ground_contact” and jumps right into “maybe_landed” without going through “ground_contact” first which according to https://docs.px4.io/v1.9.0/en/advanced_config/land_detector.html#states should not do.

I believe I can partially fix this by changing the value of MPC_THR_HOVER from the default 50% to 25% as that corresponds to the hover thrust I am seeing in the log. That should preclude the “ground_contant” states.

However, until I know how to reliably land, I am afraid of testing it.

If in doubt Use the source, Luke. So I went and found

My conclusion was that the Position controller has never been active because it was switching between taking off and landing all the time. So once I fixed the misdetection of ground contact, everything started to work.

There is still stuff I find strange in the logs (or rather what the visualization tools are showing me) but it flies so the rest will follow as well.

It looks like you have untuned land detector. Try to decrease LNDMC_Z_VEL_MAX and LNDMC_XY_VEL_MAX first.