Anyone has experience with long flights in unfamiliar terrain?

Hi there folks, I’m looking to fly a quadplane over fairly long distances (100km) and for a fairly long time (around an hour) over mountainous terrain, perhaps at around 6000 - 9000 ft MSL.

I’m mainly concerned about two effects:

  • The barometer drifting over the duration of the flight
  • How to plan a landing at a fairly unknown location (only a rough idea of the MSL height (which may not be useful if the baro drifts too much), and I don’t suppose that online terrain data will be updated/accurate because it’s in rural Papua New Guinea).

Does anyone have experience with planning and executing flights under these conditions? How can I safely land at such destinations?


Rangefinder such as LidarLite.


For rough terrain you might want to consider a longer range LiDAR altimeter like the SF11/C from LightWare. This will keep you safely away from high trees and also help with landing at unfamiliar sites. You can contact the LightWare support line for help with setup or use the ArduPilot Wiki (it’s pretty straight forward).

although a long range Lidar is a good idea for situational awareness for flights like this, the plane code doesn’t currently use the Lidar for terrain following except in landing. I’d recommend you get one anyway so you can display the range on the GCS and compare it to the expected range.

I would expect the SRTM data to be quite good actually. It is captured by the space shuttle, and covers the whole world. Unless you are flying low I would expect it to be fine. How high to you plan to fly?
I strongly suggest you test your missions in SITL before flying them. SITL will simulate terrain using the SRTM data.
One thing to wach for with terrain missions is that the plane code doesn’t look ahead for terrain following beyond the current destination waypoint. So if you placed a waypoint at the bottom of a valley, then had the next waypoint on a hill and the plane doesn’t have a good enough climb rate then you could hit the hill. You need to carefully choose waypoint location so that the lookahead for climbing is sufficient (the default is a 2km lookahead to determine needed climb rate). Also make sure your TECS_CLMB_MAX is set correctly for your aircraft (especially if it is an electric aircraft and the battery may be low). The TECS_CLMB_MAX is used to determine what climb rate can be achieved to get over the terrain.
Feel free to post a proposed mission here and I can take a look.
Cheers, Tridge


another thing to remember is to set TERRAIN_FOLLOW=1 so that it will use terrain following on RTL in case it is needed. You may also like to plan a careful return mission and use DO_LAND_START markers for return paths from various locations, so you can skirt around mountains as needed.


Thanks for the advice @tridge.

We’re likely doing 5000 - 6000 ft MSL (maybe 1000 - 2000 ft AGL during the flight) so I don’t expect that cruise flight will be a problem. I’m also not really expecting to do terrain following, just a stable cruise at a single altitude. My main concern is takeoff and landing.

This is a great idea, I will definitely do this for our flights.

This is perfectly fine - I expect that the LIDAR will be the authoritative source of altitude data once it’s within the range set in the parameters? One concern for flight planning is how I can set an initial altitude before I start the VTOL landing, because our flight batteries maybe have about 2 minutes of power. Or are there better options like circling to drop altitude until the LIDAR picks up the ground before landing?

Does this work for a quadplane doing a hybrid RTL? I’m not too familiar with this. Also, is there any benefit to having a forward-facing/scanning LIDAR?

And one last question - I’m hoping to do multiple takeoffs and landings in a single mission, either triggered by time on ground or some action (button/etc) on the aircraft, is that possible? I’m aware that for the Outback Challenge 2 takeoffs and landing are required in a single mission for the retrieval aircraft, how was that supported? We won’t have telemetry uplink at the landing zone.

1 Like

Feature request for terrain following with lidar is here :

1 Like

we can’t use a fwd facing lidar yet in plane, but we can use a downward facing one for landing (both conventional landing and VTOL landing)

yes, we did that for the OBC last year using a companion computer running mavproxy. The companion computer could send commands to re-arm and advance the current waypoint when a button was pressed. We could add the ability to do it without a companion computer if you especially need that.

I see. I’ve managed to confirm that the SRTM data aligns quite well (within 5 - 10m) with flight data in Papua New Guinea, but it doesn’t show other obstacles like cell towers. I guess a good flight path would be to takeoff and fly to an absolute height in MSL that is known to be clear of all obstacles, and maybe use LOITER_TO_ALT to spiral down near the destination under a downward-facing LIDAR can lock onto the ground?

Yes, this would be very useful! After landing, perhaps re-arming and moving on to the next takeoff waypoint after a delay, or some other interaction like toggling the safety switch? It would be good if we can avoid a the need for a companion computer for a multiple-takeoff-and-landing mission.

I’d prefer to use AP_Button for that (see the BTN_* parameters) and keep it clear of the safety switch. We’d need BTN_ACTION1, BTN_ACTION2 etc parameters for actions associated with buttons. An action could be to move to next WP and arm.
We’d also need a delay mechanism in the mission, as you don’t want to arm and takeoff while the user is leaning over the plane to press the button! A way to sound a buzzer alarm would be good too.
Can you open an issue for this so we don’t forget?

1 Like

Done! Issue is opened here: Plane: add multiple takeoff and landing capability without the use of a companion computer · Issue #7170 · ArduPilot/ardupilot · GitHub

Ah yes I’d forgotten about AP_Button - that is a much better idea.

Can this be achieved with MAV_CMD_CONDITION_DELAY? I’ve never used this in a mission so I’m not sure of its limitations.