PX4-Autopilot: Tailsitter SITL Test Failure

Describe the bug

[  19.039|mavsdk_tests] [11:17:18|Debug] MAVLink: critical: Preflight Fail: vertical velocity unstable (system_impl.cpp:242)
[  19.039|mavsdk_tests] [11:17:18|Debug] MAVLink: critical: Preflight Fail: Attitude failure (roll) (system_impl.cpp:242)
[  19.039|mavsdk_tests] [11:17:18|Debug] MAVLink: info: Preflight Fail: No manual control input	 (system_impl.cpp:242)
[  19.039|mavsdk_tests] Current speed factor: 1.99231 (set: 20)
[  19.652|px4       ] WARN  [health_and_arming_checks] Preflight Fail: vertical velocity unstable
[  19.652|px4       ] WARN  [health_and_arming_checks] Preflight Fail: height estimate error
[  19.652|px4       ] WARN  [health_and_arming_checks] Preflight Fail: Attitude failure (roll)
[  19.652|px4       ] INFO  [health_and_arming_checks] Preflight Fail: No manual control input	
[  19.880|mavsdk_tests] [11:17:19|Debug] MAVLink: critical: Preflight Fail: vertical velocity unstable (system_impl.cpp:242)
[  19.880|mavsdk_tests] [11:17:19|Debug] MAVLink: critical: Preflight Fail: height estimate error (system_impl.cpp:242)
[  19.880|mavsdk_tests] [11:17:19|Debug] MAVLink: critical: Preflight Fail: Attitude failure (roll) (system_impl.cpp:242)
[  19.880|mavsdk_tests] [11:17:19|Debug] MAVLink: info: Preflight Fail: No manual control input	 (system_impl.cpp:242)
[  19.880|mavsdk_tests] [11:17:19|Info ] Timeout, connected to vehicle but waiting for test for 20.1 seconds
[  19.880|mavsdk_tests] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[  19.880|mavsdk_tests] mavsdk_tests is a Catch v2.13.8 host application.
[  19.880|mavsdk_tests] Run with -? for options
[  19.880|mavsdk_tests] -------------------------------------------------------------------------------
[  19.880|mavsdk_tests] Fly forward in altitude control
[  19.880|mavsdk_tests] -------------------------------------------------------------------------------
[  19.880|mavsdk_tests] ../../../test/mavsdk_tests/test_multicopter_manual.cpp:50
[  19.880|mavsdk_tests] ...............................................................................
[  19.880|mavsdk_tests] ../../../test/mavsdk_tests/autopilot_tester.cpp:97: FAILED:
[  19.880|mavsdk_tests]   CHECK( poll_condition_with_timeout( [this]() { return _telemetry->health().is_armable; }, std::chrono::seconds(20)) )
[  19.880|mavsdk_tests] with expansion:
[  19.880|mavsdk_tests]   false
[  19.886|mavsdk_tests] [11:17:19|Info ] Waiting to get home position
[  20.009|mavsdk_tests] [11:17:19|Warn ] command temporarily rejected (400). (mavlink_command_sender.cpp:205)
[  20.010|mavsdk_tests] ../../../test/mavsdk_tests/autopilot_tester.cpp:169: FAILED:
[  20.010|mavsdk_tests]   REQUIRE( result == Action::Result::Success )
[  20.010|mavsdk_tests] with expansion:
[  20.010|mavsdk_tests]   Command Denied == Success
[  20.057|mavsdk_tests] ===============================================================================

Example failure run: https://github.com/PX4/PX4-Autopilot/actions/runs/4299642479/jobs/7495070876

The tailsitter SITL Test has been failing since around 2 weeks ago.

image

Diagnosis

It seems to be happening due to preflight failures (vertical velocity, height estimate, etc unstable).

I also noticed this in real drone using main branch (often the preflight failures would occur easily, with GPS sensor well positioned outside). So I am suspecting it probably is PX4 estimation issue.

Resource

About this issue

  • Original URL
  • State: open
  • Created a year ago
  • Comments: 20 (20 by maintainers)

Commits related to this issue

Most upvoted comments

@junwoo091400 Yes, I’m aware of that bug. It is caused by a bad initial attitude (the tailsitter is like a multirotor in hover mode, roll and pitch should be 0). I cannot reproduce it in replay, even with the CI logs (ekf2 replay was enabled to investigate that bug). It might be due to an initial sample that we don’t log but that is used by CI while running the test. The interesting thing is that it only occurs on the tailsitter CI and not every time (if you restart the test, it will most likely not fail again).