Handover time from GCS to RC

I’m developing an external position controller that uses RC_CHANNELS_OVERRIDE to control the quadcopter from a PC,
similar to flying with a joystick through a GCS.
if our controller starts misbehaving, I want to hand over control from the PC to a manual RC.

The problem is that from the moment I start sending zeros as RC_CHANNELS_OVERRIDE, 4 seconds pass until the remote has control.
Needless to say, this is way too long.
Unplugging the antenna resulted in the same delay.

Is there any way to reduce this delay?
Is AFS the way to go?

Thanks!

With Copter 3.6 and Plane 3.9. There is now a RC_OVERRIDE_TIME parameter that controls how long to keep using an override value if it hasn’t been updated.
Perhaps it helps.

Wow! Thanks! How did I miss that?!

That sounds like a bug. There should be no delay once the zero-containing
packet is received.

I’ve just written this autotest to check this behaviour, but it seems to
be working as intended:

Also… using RC_CHANNEL_OVERRIDE to control the quadcopter from an
external position controller is the worst way to do things (short of
having another vehicle shoving the target vehicle around physically, I
guess :slight_smile: ). Consider using guided mode and SET_ATTITUDE_TARGET and the
like. This has the advantage that taking control back from the vehicle is
as simple as switching modes, too :slight_smile:

The thing with guided mode is, I’m not using gps and the optical sensors I’m using for position tracking are on a companion computer. I’m maintaining the position tracking externally to arducopter.
Should I try guidedNoGps?
Also, what is wrong with using rc override? Why is set_attitude_target better?
Also, if the delay is a bug, what is the purpose of rc_override_time?

Thanks!