Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Video sources and detection models

DroneTracker looks for aerial objects in video. The video can come from:

  • Network streams: IP cameras (RTSP), web snapshot or MJPEG cameras, and YouTube live links.
  • Local cameras: USB cameras plugged into the rig.
  • The Dedicated Rig’s cameras: the day spotter, night spotter, and telephoto. See Dedicated Rig.

This chapter explains how to add each kind of source, and how to choose the detection model that looks at the video.

Network streams

Open Admin → RTSP Streams (under Imagery Intelligence). The table lists each stream’s Name, URL, Resolution, and Status.

Add a stream

  1. Click + Add stream.

  2. Under Identification, enter a Display name.

  3. Paste the Stream URL. DroneTracker works out the type by itself:

    You pasteWhat DroneTracker does
    An rtsp:// or rtsps:// addressReads the camera’s live stream.
    An http:// or https:// link to a JPEG or PNG snapshotFetches a new snapshot every 10 seconds.
    An http:// or https:// link to an MJPEG streamReads it live.
    A YouTube live linkFetches the live stream and passes it on as a normal feed.

    If the camera needs a user name and password, put them in the URL (user:pass@host). They are saved exactly as you type them.

  4. Optional: add a Description.

  5. Under Capture parameters, set the Width and Height that DroneTracker should scale the video to. You can also change the Reconnect delay (ms) (how long to wait after the stream drops) and the Channel capacity. Leave Use TCP transport (recommended) on unless your camera vendor says otherwise.

  6. Optional: under Location & ADS-B source, enter where the camera is. You can search by address, or type the Latitude and Longitude. Then choose the ADS-B source for this feed:

    • Inherit global default
    • External ADS-B API at this location (needs a latitude and longitude)
    • Rig-local SDR / forwarder
  7. Under Status, leave Active (pipeline ingests this stream) on. Turn on Default (primary feed for single-feed UIs) for the stream that should appear first.

  8. Click Create stream.

When you edit a stream, your changes apply the next time it reconnects.

Note: YouTube sometimes refuses automated access to a live stream. When that happens, the feed stays blank. Try again later, or use another source.

Local USB cameras

Open Admin → Hardware → Devices, then the Local Cameras tile. The page has two tables:

  • Registered: cameras DroneTracker may use.
  • Detected on this host: every camera the rig can see right now. Click Rescan after you plug one in.

The camera list shows the USB port

When two cameras are the same model, their names are the same. To tell them apart, the Label column adds the USB port each camera is plugged into, for example · USB port 2.1. If you move a camera to another port, the label changes to match.

Register a camera

  1. In Detected on this host, click Register next to the camera.
  2. Under Identification, enter a Friendly name, such as “Rooftop wide-angle”, and an optional description.
  3. Under Capture defaults, set the Width, Height, and FPS.
  4. Optional: under Deployment geometry (optional), enter the camera’s Latitude (°), Longitude (°), Altitude (m MSL), Horizontal FOV (°), and Bearing (°, 0=N). You only need these when this camera drives a detection session. A latitude and longitude here override the rig’s site for ADS-B matching.
  5. Under Image Orientation, flip the picture if the camera is mounted upside down or mirrored.
  6. Leave Active (pipeline may open this device) on.
  7. Click Register camera.

To change a camera later, click its name and then Save changes. Changes apply the next time the camera is opened. To remove a registration, click Delete. The camera itself isn’t touched.

Video format

USB cameras are opened in compressed MJPEG format automatically, at the size closest to what you asked for that the camera actually supports. This keeps the frame rate up and the rig’s workload down. Cameras that don’t offer MJPEG, such as thermal cameras, are opened in their own format.

For the Dedicated Rig’s cameras, the format list shows only the formats the camera says it supports. If a Dedicated Rig camera’s device number changes after a restart or a re-plug, its binding follows the camera by its USB port. See Dedicated Rig.

Detection models

The detection model looks at each frame and finds aircraft and drones. Open Admin → Models (under Computer Vision).

Built-in models

ModelWhat it detects
AeroDetect 3-class (drone / helicopter / airplane)Drones, helicopters, and airplanes. This is the default model.
AeroDetect + UAP 4-class (drone / helicopter / airplane / UAP) — optionalDrones, helicopters, airplanes, and UAP (unidentified aerial phenomena). It needs more computing power than the default model.
YOLOv11n COCO-80 (general — incl. airplane / bird / kite)A general-purpose model with 80 everyday object types, including airplanes and birds.

The table shows each model’s Origin (default for built-in, uploaded for your own), Size, and Status.

Choose the active model

Click Activate on a model to use it instead of the default. Click Deactivate to go back to the default. Your choice takes effect the next time a detection session starts. The same list feeds the detector choice on the Dedicated Rig page.

Upload your own model

Click Upload model and pick a model file (.onnx). The page shows how many uploads you have left and the size limit for each one. You can delete uploaded models, but not built-in ones. If you delete the model that’s in use, DroneTracker goes back to a default model.

Secondary detector (adds birds and other objects)

You can run a second, general model alongside the main one. It fills in objects the main model doesn’t know about, such as birds. The main model always wins when both models find the same object.

  1. Open Admin → System Settings.
  2. Expand Advanced — device/feature settings, then find Computer Vision.
  3. In Safety-net secondary detector, choose a built-in model, such as the general COCO model. Leave it empty to turn the secondary detector off. Uploaded models can’t be used here.
  4. Related settings in the same section:
    • Secondary detector confidence threshold (percent, default 45)
    • Secondary-vs-primary overlap that suppresses a duplicate safety-net box (percent)
    • Drop non-air secondary classes (keeps ground clutter out of the feed) (on by default)

Each network stream can also have its own Secondary detector confidence (%). You’ll find it under Capture parameters when you edit the stream. Leave it blank to use the global value.

Bird species matching needs a detector that reports birds, so a secondary detector like this is one way to get them. See Specific identity and bird species.

Detection confidence settings

At the bottom of Admin → Models, Detection confidence gates has two independent gates:

SettingDefaultWhat it does
YOLO confidence floor, percent50Detections below this are thrown away before tracking.
ByteTrack: minimum confidence percent that may START a new track70A detection must reach this to start a new tracked target. It must be higher than the low gate.
ByteTrack: minimum confidence percent to continue an existing track30Keeps an existing target tracked. It never starts a new one.

Small, distant targets fail these gates first. If the video shows an aircraft but no target box appears, lower both the floor and the track-start gate. Expect more false detections when you do. Changes apply the next time you select a source, with no restart.

Video decoder

Admin → System → Capture → Video decoder for RTSP cameras picks how the rig decodes network cameras for detection:

ChoiceWhat it does
auto (default)Uses the hardware decoder on rigs that have one (Jetson Orin), and ffmpeg everywhere else.
gstreamerAlways tries the hardware decoder.
ffmpegAlways uses ffmpeg.

On a Jetson Orin the hardware decoder uses about a seventh of the processor time ffmpeg needs for the same camera. If a camera gives no picture through it twice in a row, the rig switches that camera back to ffmpeg by itself. Changes apply the next time you select a source.

Detector performance

Admin → Models → Detector performance has two settings:

SettingDefaultWhat it does
Detection frames per second while nothing is tracked4After 10 seconds with nothing tracked, the detector looks at this many frames a second, and returns to full rate as soon as something is tracked. The live video doesn’t slow down. Set 0 to always run at full rate.
Detector precisionautoauto runs a half-precision (FP16) copy of the detection model on rigs with a GPU, where one ships. It gives the same detections in half the memory. fp32 always uses the full-precision model.

Per-class confidence floors

Below the gates, Per-class confidence floors sets a floor for one class only: Drone, Helicopter, Airplane, UAP, and Unknown (boxes from the motion tripwire). Each is a percent, and 0 means the class uses the confidence floor above. All are 0 by default except UAP, which starts at 85, because lower UAP scores were mostly noise in the night sky.

  • If one class keeps boxing things that aren’t there, such as UAP on edges and lights, raise that class alone.
  • To catch distant airplanes or helicopters without letting every class through, lower those classes alone.

A class floor below the track-start gate keeps an existing target tracked but can’t start a new one. Changes apply the next time you select a source.

The Dedicated Rig has its own confidence settings for each camera. See Dedicated Rig.