Quadcopter crash diagnosis

Copter-4.6.3 with N200 VIO Module, crashed today.
Prior to this flight, I had three perfectly ok flights without this module.
Set the parameters as per the module’s manual attached.

I am unable to attach pixhawk1 log bin file, its size is only 3.45MB and when I attach the file it says its more than 8MB and I should upload somewhere else and then share link, so will do that;

https://storage.ning.com/topology/rest/1.0/file/get/31185439466?profile=original

N200 VIO Module User Manual V2.1.pdf (654.6 KB)

Copter-4.6.3-Stable_Pixhawk1-2MB-Flash_F450_VIO-Module-N200_28.06.2026.param (17.8 KB)

My impression for this one is that N200 VIO has nothing to do with the crash, as it was actually not used. That thing was set up as source #3 for EKF position, but nothing was configured to switch to this source. This part of the manual:

If visual positioning is used, the EKF estimator must be switched to the corresponding
source. The specific switching method can be found at:
EKF Source Selection and Switching — Copter documentation

was apparently not implemented, as none of RC channels is configured for source switch. It does not seem to be extraordinarily reliable in your case anyway, because in your log it experienced two sharp position resets:


They are somehow correlated with attitude changes, which (odometry problems at non-trivial pitch and roll) is a common thing for various reasons (loss of distance estimate, quick change in visual features and loss of tracking, etc.).

This is why I tend to search the reasons for this crash in other places. Which seems to be at least two things: lack of tuning and being underpowered. First, you have not performed any PID tuning whatsoever, and the fact that the machine is somehow flying is solely because the default PID configuration is for an old machine of roughly this size and same battery voltage. This is your machine’s difference in desired and actual roll/pitch/yaw, and all of this is quite poor, but especially yaw.

One may or may not like the Ardupilot Methodic Configurator, but tuning the low-level subsystems is a must before attempting to use higher-level subsystems (like odometry). Your lack of tuning was an incident waiting to happen, and it finally happened, because it’s very difficult to fly reliably if your yaw is off by up to 45 degrees.

The second problem - and likely the main reason for yaw to be that poor - is that your machine is sufficiently imbalanced and underpowered at the same time:

Here, even in the calm region of the flight (02:20 to about 03:00), which is just hovering as can be judged from GPS logs, your motors rotate at way too differing speeds, and one in particular (motor 4, red plot) is running close to its maximum (1820…1830 out of 1900 for the PWM value). The second runner-up is motor 3, and the fact that both are the clockwise motors suggests that you have a yaw imbalance. Normally this happens because some motors are way off-vertical in a way which is not supposed to happen. What exactly causes this on a frame where there is only one way to mount the motors, is unclear, but the yaw imbalance is huge.

Whatever extra output is commanded atop of that, and chances are high that some motors start hitting the maximum threshold. This is exactly what is happening after 03:45 where motor 3 is pretty much permanently saturated. Perfect control of all four axes (roll, pitch, yaw, thrust) becomes impossible, yaw gives up, and with pretty much no pilot input this is a crash.

Yes, this is grossly underpowered/overweight. On default parameters it should have never left ground.
There were a slew of errors and the Vibration Compensation fail safe didn’t do you any good. You never want to see that. This craft was doomed to fail. No big loss with that frame, hopefully the other components survived.

Thank you so much Maxim Buzdalov !

Thank you so much Dev !

These are my parameters, which were configured just before attempting this test flight with VIO Module N200 and tried to follow what manual suggested, but looks like I missed something;

EK3_SRC3_POSXY,6
RC8_OPTION,65

VISO_TYPE,1
VISO_DELAY_MS,40
VISO_POS_M_NSE,10
FS_EKF_THRESH,1
EK3_ENABLE,1

I would like confirm that prior to this flight, I had done three test flights with this copter, in loiter and auto mission, its certainly not under-powered. Yes, I did not tune PID’s yet.

EK3_SRC3_POSXY,6 :
Manual ref: Set the position source of a free EKF3 instance to ExternalNav (e.g. change
EK3_SRC3_POSXY from None to ExternalNav)
But looks like I missed to configure what you pointed to (“If visual positioning is used, the EKF estimator must be switched to the corresponding source”)

You said “was apparently not implemented, as none of RC channels is configured for source switch”
Beside configuring RC Ch8 to disable GPS, What exactly I need to configure more?
This module has camera and laser altimeter on board.

N200M VIO Visual Navigation Module.pdf (462.6 KB)

I had set RC8 to disable GPS and disabled GPS while the copter was in loiter, I disabled the GPS with switch on my radio.

after this flight, I replaced the broken arm, removed N200 module and did two auto mission flights with 50mt alt, it’s quite stable and does not seem under-powered, infact I have reduced the max throtle from 95% to 90% (TKOFF_THR_MAX,0.9)

First, Ardupilot will not immediately switch to an alternative configured somewhere in the sources. Switching GPS off is not the correct way to test odometry. During your flight for which the log is attached, you turned GPS off around 03:27, and at 03:35 the copter switched to Land because it started to see that no updates are coming from GPS so it lost the position estimate. Notably, it did not even try to switch sources (the XKFS.SS log entry stays 0 means SRC1 for the entire flight).

You should either switch between sources using RCx_OPTION = 90 or use some scripts to automate the transition - as detailed in the GPS-to-non-GPS wiki.

Second, TKOFF_THR_MAX does not control the maximum throttle, it only controls maximum take-off throttle. Taking off is easier than flying in different directions because of cosine losses. This setting does not influence anything apart from first couple of seconds of the flight. Without the odometry module, the machine may become somewhat lighter indeed (its weight is specified to be 128 grams, which - a blind guess - seems to be about 10-20% of the machine’s total weight).

And you determine that based on what?
This?

Or this?

Auto Mission flight w/o any tuning? This is foolish.

Thank you so much Maxim Buzdalov for your prompt reply and continued support, I really appreciate that a lot !

set the parameters as per this. Changed RC8_Option to 90. It’s two position switch, I have only one 3 position switch on the radio which is assigned to Flight Mods

So when I pull the switch RC8 toward me then it will switch External Nav (N200 ) and when pushed away from me will use GPS.
RC8 is SWB two position switch, pushed down: maximu pwm value 2000, when pushed up then its pwm value is lowest.

I hope, I have done it correctly, attaching modified full parameter’s

Copter-4.6.3-Stable_Pixhawk1-2MB-Flash_F450_VIO-Module-N200_01.07.2026.param (17.8 KB)

In the N200 module’s manual it says “Set the position source of a free EKF3 instance to ExternalNav”
what he means by “free EKF3 instance” ?

If RCx_OPTION = 90 is configured for a two-position switch, then everything from EK3_SRC1_* is used when the switch is low (e.g. away from you), and everything from EK3_SRC3_* is used when it is high. Source 1 for low, source 3 (not 2!) for high.

Your latest config is wrong: it only has EK3_SRC3_POSZ to be non-zero. You have to set these:

  • EK3_SRC3_POSXY = 6 to use your N200 module
  • EK3_SRC3_YAW = 1 to continue using compass for yaw

It’s difficult to help you if you are not even bothering to understand what is happening and just stitch randomly chosen pieces of information together.

Hi Dev, thank you so much for your support !
I have take this to even 200mt alt and it was quite responsive on throttle, this is the only basis of my saying.

F450 flies supper on default PID’s 923KV, 2212 motors, 3S Lipo 4500mah, Pro-Range Propellers 9443(9.4X4.3) Carbon Nylon DJI

Hi Maxim Buzdalov, thank you so much for prompt reply and your continued support !
I corrected that.

Yaw imbalance is possible to check with Yaw rate controller


Craft cannot keep from yaw rotating, flying underpowered drone on 2 motors was too much.

Thank you so much Mike for your support on pointing to yaw imbalance !

I would measure rpm of each motor on same throttle input pwm value under load and rectify it.

@MaxBuzz @dkemxr Today, I got a successful flight with inflight switching from EK3_SRC1 to EK3_SRC3 (N200 VIO Module), flash log .bin file is below;
https://drive.google.com/file/d/1fl7sLj64ZE-R82pEaJ3EyholqfNQnmII/view?usp=drive_link

Copter-4.6.3-Stable_Pixhawk1-2MB-Flash_F450_VIO-Module-N200_01.07.2026.param (17.8 KB)

That is far from the truth. This craft is grossly underpowered/overweight. The log shows a litany of Thrust loss errors as a result. It also has a mechanical Yaw bias and the remedy you suggested makes no sense. The tune is terrible of course as it’s on all default parameters. You didn’t even set the Initial Tune Parameters. You know, the ones that are shown in Mission Planner under Setup>Mandatory hardware

This is a billboard for what not to do. Someone with your lack of knowledge should be using the Methodic Configurator
Forget about switching the EKF source until this thing is actually flying properly. Or perhaps you will damage more than a frame arm.

Deve, I took off in loiter mod at about 30-40mt and flew around for few minutes, when the copter was around 100mt or so from me, I then switched from EK3_SRC1_** to EK3_SRC3_** by flipping the switch assigned to RC8 on my radio.

Copter holded the position as it was in loiter, I waited for some time and then did RTL my self, copter traveled towards me and came closer, I observed, It was some 5-6mt towards north to me. Then I switched back to GPS and then landed the copter.

Manual of N200 says it has position accuracy of 5% so if you look that way then it did well.

Again did second flight, this time my altitude was low around 10-15mt and I switched to N200 quite early, I mean just after the copter traveled around 50-60mt away from me, sun had gone down by that time and probably n200 could not perform in that condition (N200 says good light and alt 30mt-200mt) and when I switched this time to N200, It did not hold the position despite in loiter, alt was low, I switched back to GPS but it could not recover and crashed on a sandy soft soil, only two props damaged, rest all ok, no damage to the 600$ N200.

Did you observe that in the log ?

What I observed in the log was a craft that should not be flying at all. None of what you have said here is relevant to the issue at hand. Forget about the N200, reduce the weight of this craft and follow a process of configuration and tuning.

Are you making any attempt at all to review the logs yourself? If you are not using the Methodic Configurator and have no knowledge of Arducopter what is your alternative? Here you go> Logs You can reproduce the logs posted in this thread and see for yourself.

Start here if something is unclear, ask.

Thanks Dev, Thanks amilcarlucas !
It is very difficult to reduce the weight but what is in my hands;

  • change props from 9.4x4.3 to 10x5
    or

  • change battery from 3s to 4s
    or

  • change motors from 923kv to 1000 or higher
    or

  • change motors size to 2812, 1000kv

Use ecalc multirotor to test those multiple scenarios and see which scenario is the cheapest and safest.

Buy a subscription to eCalc and work out for yourself what combination of components and weight works. You want the hover throttle linear to be no higher than 50%.

You will be dissapointing moving forward with that frame but if this is just a “check the box” exercise as we see here often then it might get you there.