com.altnautica.follow-me. Click a subject in the live video, pick Follow, and the drone flies a standoff follow: it keeps a set horizontal distance behind the subject and a set height above the ground, and turns to face it.
Permissions
event.publishflight.guided_setpointmavlink.readmavlink.writemcp.exposeui.slot.flight-skillui.slot.node-detail-tabvision.detection.subscribe
cm4, cm5, rock-5c-lite, rk3588s2, rk3576, rpi5, cubie-a7s, cubie-a7z
What you need
- A camera bound to the vision pipeline (USB UVC or CSI), facing forward or down. A gimbal is optional; with
gimbal_pointon, the plugin points it at the subject. - A detector on the companion. The default
coco-personmodel runs on the NPU of supported boards and on the CPU elsewhere. Checkbackend_stateinGET /api/vision/status: a node that reportsunavailableproduces no detections to follow. - A flight controller in a guided position mode: ArduPilot Guided, or PX4 Offboard.
- Optional: a downward rangefinder on the flight controller, for height above the terrain; and a planar LiDAR published by the World Engine extension, as a third range cue.
Start and stop a follow
- In the cockpit video, click or tap a detected person and pick Follow this target (default key
F), or drag a box around the subject. This designates the track. - Turn the Follow-Me Skill on (
Shift+F). It asks for confirmation and needs the aircraft armed and in a guided mode. - To stop, pick Stop following (
X), turn the Skill off, or change the flight mode from your transmitter.
follow_status and stop_follow, and no way to start a follow. A follow begins only when an operator designates a subject.
How it follows
The loop runs at 20 Hz.-
Vehicle state. The plugin reads the flight controller’s
LOCAL_POSITION_NEDfor position and velocity,ATTITUDE, andDISTANCE_SENSORfrom a downward rangefinder (orientation 25 only).GLOBAL_POSITION_INTis used only to show latitude and longitude. -
Height above ground. The rangefinder is used while its reading is younger than 0.3 s, inside its own minimum and maximum, and the aircraft is tilted less than 30°. Otherwise the plugin falls back to the barometric relative altitude. The read-back names the choice in
agl_source(rngorbaro). -
Range to the subject. Up to three cues, each with its own 1-sigma error, fused by inverse variance:
With no cue available the loop holds with
hold_reason: "no-range". - Subject motion. A constant-velocity Kalman filter over north, east and their velocities (acceleration noise 1.5 m/s²) tracks the subject’s position and velocity.
-
Setpoint. The standoff point sits
follow_distance_mbehind the subject along its direction of travel when it moves faster than 0.5 m/s, and along the line from the drone otherwise. The plugin sendsSET_POSITION_TARGET_LOCAL_NED(#84) inMAV_FRAME_LOCAL_NEDwith position, the subject’s velocity as feed-forward (clamped tomax_speed_mps) and yaw toward the subject; acceleration and yaw rate are ignored (type_mask2496). Height is terrain-following: the drone climbs or descends by the difference between the measured height above ground andfollow_height_m.
hold_reason.
Re-acquire after an occlusion
When the tracker loses the subject (a tree trunk, a building corner),reacquire_mode decides what happens.
The tracker itself never re-locks silently. A smart re-acquire is an explicit designation by the plugin, announced on the event bus and shown on every operator surface. The appearance match uses a re-identification embedding when the vision engine provides one, and a colour and gradient histogram otherwise.
The re-acquire toggle is on the Follow-Me Skill’s popover and in the Follow-Me tab.
Parameters
Set them in the Follow-Me tab, or with
PUT /api/plugins/com.altnautica.follow-me/config.
Follow state
The plugin publishesfollow.state on every change. The agent re-serves it as the follow kind of its navigation routes, so the cockpit, Mission Control, the Android app and the terminal dashboard read the same fields.
One-shot events:
follow.reacquired ({track_id, similarity, gap_s}) and follow.lost.
On the operator surfaces
The cockpit, Mission Control and the Android app draw the follow with the same target symbology: tracking brackets with aTRACK tag and the range under the box while following, dashed COAST brackets at the predicted box, a SEARCHING sweep, a Re-acquired toast, and LOST. While following, a range panel shows the range with its uncertainty, the height source, the bearing and the subject’s speed.
Next steps
Agent cockpit
The on-node console and its follow chrome.
Extensions catalog
Install and the catalog entry.