Servers by jDrones

New Takeoff mode skipped for circle just after launch


I just give a try to the new way of auto takeoff and could not make it happened.
“old way” with auto mode and a mission is perfectly working.

Plane is launched by hand, the motor starts within the delay but the motor never get full throttle and is not climbing.
Looking at the log I can see “takeoff skipped” and then switch to CIRCLE but can’t get why.
Not enough speed and altitude for a circle !
Is it because of TKOFF_TIMEOUT ? TKOFF_DIST ? speed ? other ?

TKOFF_TIMEOUT is 10. If I understand correctly, it is the allowed time to reach the speed of 4m/s or DISARM.
TKOFF_DIST is 250 but not clear to me. Is it the distance from the take off point where the plane will loiter ? Meaning that when the plane reached the TKOFF_ALT, it will come back to a distance of TKOFF_DIST to loiter ?

Here is the setup


I made several try but same result each time.

log file :
S800 AP4.param (22.1 KB)

Thanks for any tips :slight_smile:

It seems not to be related to Timeout or to the tkoff level altitude or distance.

From mode_takeoff.cpp, it looks like it considers the plane is already flying so enter in circle mode.
But the plane just let my hand, I don’t get that, why skipping takeoff at that stage ?

void ModeTakeoff::update()
    if (!takeoff_started) {
        // see if we will skip takeoff as already flying
        if (plane.is_flying() && plane.ahrs.groundspeed() > 3) {
            gcs().send_text(MAV_SEVERITY_INFO, "Takeoff skipped - circling");

Also, I can’t find this message in the log

if (!plane.throttle_suppressed) {
            gcs().send_text(MAV_SEVERITY_INFO, "Takeoff to %.0fm at %.1fm to %.1f deg",
                            alt, dist, direction);
            takeoff_started = true;

Meaning that takeoff never starts ?
But if the motor starts after launch, it means that takeoff has been detected (at least min_accel ) ?

Any help appreciated
thanks a lot

The same happened to me today, just after bungee launch the message tab shows “takeoff skipped” and the plane switch to CIRCLE mode, my parameters are similar to yours.

Downloadable log, please.

Here is the log:

Anyone else tried successfully new TAKEOFF mode?

ok I made some new tests and here what I have.

Takeoff mode works fine if I activate it, stand without moving, and launch the plane. It does what it should do.
Now if I activate the mode, run a little bit (as I am used to do it with heavy plane) and launch the plane, takeoff is not working. motor starts and switch to circle mode.
It can be reproduce at each launch.

Running = fail, not running = ok.

Could it be because of that ?

if (plane.is_flying() && plane.ahrs.groundspeed() > 3) {
gcs().send_text(MAV_SEVERITY_INFO, “Takeoff skipped - circling”);

It’s kind of annoying not to be able to gain some speed before launch. Did I miss something ?
Auto mode with a takeoff mission if perfectly working when running for launch.

Corresponding log file.

First try is with running -> failed
second try without running -> success

Seems when you are running the autopilot decide it is flying. And switch to circle mode.
“I cannot launch if I’m flying”
You can try to run slower specified speed
Or increase speed in that code

yes that is also my conclusion.
3m/s it’s not very fast (for a plane) and on some launch it’s dangerous for the plane to enter in circle mode at such speed and altitude.
Maybe it could be a parameter to define the minimum speed to consider at takeoff or a % of ARSPD_FBW_MIN of another logic to check that condition.

Great discoverment! this might be related with Wiki documentation about takeoff mode here: "…If the mode is entered while already flying, it will immediately begin loitering as in LOITER mode". This mode should consider a faster ground speed or ARSPD_FBW_MIN as you mentioned.

In my case I use bungee launch, this mode would be usefull for me because I could leave the radio control on the ground and have my hands free for launching taking into account the weight of my plane is considerable.

I will do some tests like you described and will report ASAP, thank you!

I also build a firmware with plane.ahrs.groundspeed() set to > 6 to check if it’s really the root cause.
What I don’t get is the plane.is_flying() call. It’s seems that it is not enough to know of the plane is actually flying or not.

Servers by jDrones