Skip to content

Follow-Me Mode (Multicopter)

Follow Me mode allows a multicopter to autonomously hold position and altitude relative to another system that is broadcasting its position (and optionally velocity) using the FOLLOW_TARGET MAVLink message.

INFO

  • Mode is automatic - no user intervention is required to control the vehicle.
  • Mode requires at least a valid local position estimate (does not require a global position).
    • Flying vehicles can't switch to this mode without valid local position.
    • Flying vehicles will failsafe if they lose the position estimate.
  • Mode prevents arming (vehicle must be armed when switching to this mode).
  • Mode requires wind and flight time are within allowed limits (specified via parameters).
  • This mode is currently only supported on multicopter (or VTOL in MC mode).
  • The follow target must also be able to supply position information.
  • Follow-me mode is supported by QGroundControl on Android devices with a GPS module, and MAVSDK.

Overview

Follow-me Concept

The vehicle will automatically yaw to face and follow the target from a specified relative angle, distance and height and altitude, depending on the altitude control mode.

By default it will follow from directly behind the target at a distance of 8 meters, and a height of 8 meters above the home (arming) position.

Users can adjust the follow angle, height and distance using an RC controller as shown above:

  • Follow Height is controlled with the up-down input ("Throttle"). Center the stick to keep follow the target at a constant hight. Raise or lower the stick to adjust height.

  • Follow Distance is controlled with the forward-back input ("Pitch"). Pushing the stick forward increases the follow distance, pulling it back decreases the distance.

  • Follow Angle is controlled with the left-right input ("Roll"). The movement is from the user's perspective, so if you face the drone and move the stick left, it will move to your left. From above if you move the stick left the drone will move counter-clockwise.

    Follow Angle is defined as increasing in clockwise direction relative to the target's heading (which is 0 degrees)

    Follow-me Angle Diagram

INFO

Angle, height, and distance values set using the RC controller are discarded when you exit follow-me mode. If you exit Follow-Me mode and activate it again the values will be reset to their defaults.

Demo video:

Safety Precautions

WARNING

Follow-me mode does not implement any type of obstacle avoidance. Special care must be taken when this mode is used.

The following flight precautions should be observed:

  • Follow me mode should only be used in wide open areas that are unobstructed by trees, power lines, houses, etc.
    • Set the follow-me height to a value that is well above any surrounding obstructions. By default this is 8 metres above the home (arming) position.
  • It is safer to manually fly to a safe height before engaging follow-me mode than to engage follow-me mode when landed (even though the mode implements auto take off).
  • Give your vehicle sufficient room to stop, especially when it is moving fast.
  • Be ready to switch back to Position mode if something goes wrong, in particular when using follow-me mode for the first time.
  • You can't switch follow-me mode off using RC stick movements (as that will adjust the properties). You either need to have a GroundStation that can send flight mode switch signals or a flight mode switch configured in your RC transmitter.

Follow-Me with QGroundControl

Follow-me QGC Example

Follow Me mode is supported using QGroundControl as a target on ground station hardware that has a GPS module. The recommended configuration is a USB OTG-capable Android device with two telemetry radios.

To setup Follow Me mode:

  • Connect a telemetry radio to your ground station device and another to the vehicle (this allows positioning information to be relayed between the two radios).
  • Disable sleep-mode on your Android device:
    • This setting can usually be found under: Settings > Display.
    • It is important that you set your Android device to not go to sleep as this could cause the GPS signal to cease being emitted at regular intervals.
  • Takeoff to a height of at least 2-3 metres (recommended even though auto-takeoff is supported).
    • Set the vehicle on the ground, press the safety switch and step back at least 10 meters.
    • Arm the vehicle and takeoff.
  • Switch into follow-me mode.
    • The copter will first ascend to minimum safety altitude of 1 meters above the ground or home, depending on the presence of a distance sensor.
    • It will ascend until it is 3 meters within the follow height to avoid potential collisions before moving horizontally.
    • Copter will always adjust it's heading to face the target

At this point you can start moving, and the drone will be following you.

The mode has been tested on the following Android devices:

  • Galaxy S10
  • Nexus 7 Tablet

Follow-me with MAVSDK

MAVSDK supports Follow Me, allowing you to create a drone app that is a follow-me target.

For more information see the Follow Me class documentation as well as the Follow Me Example.

INFO

MAVSDK is not currently recommended, due to a bug (MAVSDK#1756 where the same message is occasionally sent twice. This can confuse the target position and velocity estimator.

Configuration

Altitude Control Mode

Follow Me Altitude Modes

The altitude control mode determine whether the vehicle altitude is relative to the home position, terrain height, or the altitude reported by the follow target.

  • 2D tracking (the default altitude mode) makes the drone follow at a height relative to the fixed home position (takeoff altitude). The relative distance to the drone to the target will change as you ascend and descend (use with care in hilly terrain).

  • 2D + Terrain makes the drone follow at a fixed height relative to the terrain underneath it, using information from a distance sensor.

    • If the vehicle does not have a distance sensor following will be identical to 2D tracking.
    • Distance sensors aren't always accurate and vehicles may be "jumpy" when flying in this mode.
    • Note that that height is relative to the ground underneath the vehicle, not the follow target. The drone may not follow altitude changes of the target!
  • 3D tracking mode makes the drone follow at a height relative to the follow target, as supplied by its GPS sensor. This adapts to target altitude changes, such as when you walk up a hill.

WARNING

Do not set the Altitude mode (FLW_TGT_ALT_M) to 3D Tracking when using QGC for Android (or more generally, without checking that FOLLOW_TARGET.altitude is an AMSL value).

The MAVLink FOLLOW_TARGET message definition expects an altitude relative to mean sea level (AMSL) while QGC on Android is sending an altitude relative to the GPS ellipsoid. This can differ as much as 200 meters!

The drone probably won't crash due to the built-in minimum safety altitude limit (1 meter), but it may fly much higher than expected. If the drone's altitude is significantly different than specified, assume that the ground station's altitude output is wrong and use 2D tracking.

Parameters

The follow-me behavior can be configured using the following parameters:

ParameterDescription
FLW_TGT_HTVehicle follow-me height, in metres. Note that this height is fixed relative to the home/arming position (not the target vehicle). Default and minimum height is 8 meters (about 26 ft)
FLW_TGT_DSTVehicle/ground station separation in the horizontal (x,y) plane, in metres. Minimum allowed separation is 1 meter. Default distance is 8 meters (about 26 ft).
FLW_TGT_FAFollow angle relative to the target's heading, in degrees. If a value out of the range [-180.0, +180.0] is entered, it will get automatically wrapped and applied (e.g. 480.0 will be converted to 120.0)
FLW_TGT_ALT_MAltitude control mode.
- 0 = 2D Tracking (Altitude Fixed)
- 1 = 2D Tracking + Terrain Following
- 2 = 3D Tracking of the target's GPS altitude WARNING: DO NOT USE WITH QGC for Android.
FLW_TGT_MAX_VELMaximum relative velocity for orbital motion around the target, in m/s.
- 10 m/s has proven to be a sweet spot for aggressiveness vs smoothness.
- Setting it to higher value means the orbit trajectory around the target will move faster, but if the drone is physically not capable of achieving that speed, it leads to an aggressive behavior.
FLW_TGT_RSDynamic filtering algorithm responsiveness that filters incoming target location.
- 0.0 = Very sensitive to movements and noisy estimates of position, velocity and acceleration.
- 1.0 = Very stable but not responsive filter

Tips and tricks

  1. Set the follow distance to more than 12 meters (8 meters is a "recommended minimum").

    There is an inherent position bias (3 ~ 5 meters) between the target and the drone's GPS sensor, which makes the drone follow a 'ghost target' somewhere near the actual target. This is more obvious when the follow distance is very small. We recommend that the follow distance is set to be large enough such that the GPS bias is not significant.

  2. The speed at which you can change the follow angle depends on the maximum tangential velocity setting.

    Experimentation shows that values between 5 m/s are 10 m/s are usually suitable.

  3. Using the RC Adjustment for height, distance and angle, you can get some creative camera shots.

    This video demonstrates a Google-Earth view perspective, by adjusting the height to around 50 meters (high), distance to 1 meter (close). Which allows a perspective as shot from a satellite.

Known Issues

  • The SiK 915 Mhz telemetry radio is known to interfere with the GPS signal being received by some Android devices. Keep the radio and Android device as far apart as possible when using the follow target mode to avoid interference.
  • QGC for Android reports an incorrect altitude (altitude above elipsoid rather than AMSL). The follow altitude can be off by up to 200m!