Terrain heights for this flight have not all arrived yet
What ArduPilot says:
- waiting for terrain data
The flight needs the terrain database: ground heights on a grid (TERRAIN_SPACING, 100 m by default), kept on the SD card and fetched through the ground station. On a copter it is needed when the mission has waypoints with heights above terrain, or when RTL_ALT_TYPE is 1, unless a downward rangefinder does that job. Arming waits until the ground height is known under the aircraft, at home and at every mission waypoint and rally point, and no block of data is still on request.
What to do, most likely first
The ground station has not sent all the data yet: the link is slow, or it has no internet to fetch the heights from.
CheckThe ground station's terrain status (it comes in the
TERRAIN_REPORTmessage) counts blocks pending and blocks loaded. Pending must come down to 0.FixKeep the ground station connected, with internet, until nothing is pending; over a slow telemetry radio that takes minutes. Loading the mission at home over USB fills the SD card in advance.
TERRAIN_OPTIONSbit 0 forbids asking the ground station for data, and the SD card does not hold this area.FixClear bit 0 of
TERRAIN_OPTIONS, or copy the terrain files for the area into the APM/TERRAIN folder of the card beforehand.There is no position yet, so ArduPilot does not know which heights to ask for.
FixWait for the GPS fix; the request for data starts only then.
The SD card is missing or full: blocks that arrive cannot be saved and stay counted as outstanding.
CheckLogs are not being written to the card either.
FixFit a working card with free space and start again.
The data covers what was asked for: add a waypoint farther away and the wait starts again for the new area.
Parameters to look at
| Parameter | What it is |
|---|---|
TERRAIN_ENABLE | Terrain data enable |
TERRAIN_OPTIONS | Terrain options |
TERRAIN_SPACING | Terrain grid spacing |
RTL_ALT_TYPE | RTL mode altitude type |
WPNAV_RFND_USE | Waypoint missions use rangefinder for terrain following |
Where to do it:Failsafe ExplainerMission Energy Check
The code that sends it
waiting for terrain data
libraries/AP_Terrain/AP_Terrain.cpp AP_Terrain::pre_arm_checks() · Open in ArduPilot Copter-4.7.1