Follow-Me Mode¶
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.
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)
:::note 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:
How to Use Follow Me¶
Follow-me mode is supported by QGroundControl on Android devices with a GPS module, and MAVSDK.
:::note
- This mode requires GPS.
- This mode is currently only supported on multicopter.
- The follow target must also be able to supply position information.
- QGroundControl only supports this mode on Android devices that have GPS.
:::
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 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.
:::note 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¶
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:
Parameter | Description |
---|---|
FLW_TGT_HT | Vehicle 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_DST | Vehicle/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_FA | Follow 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_M | Altitude 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_VEL | Maximum 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_RS | Dynamic 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¶
- 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.
- 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.
- Using the RC Adjustment for height, distance and angle, you can get some creative camera shots.
@youtube 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!