Why is there a waypoint necessary before a TAKEOFF command?

I have been mucking about with missions and noticed something that looks strange to me.

I create a mission on QGroundControl (presumably the same happens also on MP but am on Linux at the moment) with just one Takeoff command and upload to a simulated vehicle (SITL).

I then pull the mission using MAVROS and notice there are two commands, one waypoint and one takeoff. The waypoint is at the location of the vehicle and presumably, auto inserted by QGC.

Now it gets weird. If, using QGroundControl I arm and then start mission, the vehicle takes off as expected.

Now, if using MAVROS, I remove the waypoint command before the takeoff command and reupload to the vehicle, it flatly refuses to budge. If I arm and then switch to AUTO in QGC, it actually does not change to AUTO. If I try using MAVROS via a service call to mavros/set_mode, it cheerfully gives me a “mode_sent: True” but doesn’t actually change the mode.

If the waypoint command exists before the takeoff command, both methods of changing mode work as expected.

Even more weird, if I pull the mission via MAVROS and change lat, lon, alt of this initial waypoint to 0.0 and reupload, it still works and the vehicle takes off just fine without trying to fly off to the Atlantic Ocean off the coast of Ghana where lat 0, lon 0 lives.

It appears that AUTO expects a totally redundant waypoint before a takeoff command whose actual contents it vigorously ignores but, for the life of me, I cannot figure out why. Does anyone have any idea?

That first waypoint is per definition the home location.
You are supposed to send the home location as the first waypoint.

Aha, I see, thank you.