Surface Tracking

Copter supports low altitude Surface Tracking, either a floor/ground or a ceiling, in nearly all modes including pilot controlled modes like AltHold, Loiter and PosHold.

Additionally, Terrain Following is supported in autonomous modes using a terrain height data base stored on the autopilot’s SD card and/or obtained real-time from the Ground Control Station.

This page describes the Surface Following setup . For autonomous modes using downloaded data for Terrain Following please see the terrain following for autonomous modes wiki page.

Setup and Configuration

  • Connect a downward facing rangefinder(for floor/ground tracking) and/or an upward facing rangefinder (for ceiling tracking) lidar or sonar to the vehicle.

  • Which is being used is configured by the SURFTRAK_MODE parameter or by:

  • An auxiliary switch (function “75”), or Auxiliary Function Switches (3.6 and earlier), can be configured to turn on/off use of the rangefinder.

  • the SURFTRAK_TC parameter controls the smoothing of the surface data. Increase if you are moving fast and getting perturbations in the flight path. Conversely, it can be lower to make the vehicle more responsive to the rangefinder data.


Do not set the EK3_SRC1_POSZ to Rangefinder. This parameter should be left at the default.

Do not set EK3_RNG_USE_HGT parameter. This parameter should be left at “-1”.

How does it work?

  • When the rangefinder can “see” the ground, the pilot’s throttle stick adjusts the target altitude above the ground (i.e. the attitude corrected distance from the range finder)

  • When the vehicle climbs out of the rangefinder’s range the pilot’s stick returns to directly controlling the vehicle’s target climb rate (i.e. EKF estimated climb rate based on barometer and accelerometer). When the vehicle comes back within the range of the ground, the target altitude above the terrain is reset to the current altitude above terrain. For more information, see Understanding Altitude in ArduPilot.