Skip to main content

User interface reference

Reference for every tab and control in the EagleEye web UI, served at http://<device-address>:5001. For step-by-step setup, start at Start Here.

The large panel on the left holds the current tool. Six tabs stay in the navigation on the right:

EagleEye UI with the main panel on the left and navigation on the right

TabPurpose
ViewsLive camera thumbnails
3D ViewField and robot pose visualization
PipelineBuild and edit pipelines
SystemCPU, memory, storage, pipeline states
SettingsBackend configuration, logs, terminal, system tools
UtilsCamera calibration and extrinsics

A fresh installation opens the camera setup wizard, starting with a camera preview and placement-name grid. After setup, use Views for live video, Pipeline for the graph, and System to check that pipelines are running. Settings includes camera renaming and device controls. Utils holds calibration and mounting values.


Views

Views tab

Live stream of every detected camera, one card each, labelled with the camera name. This is the raw camera feed, not pipeline output. Use it for aiming, focus, and exposure.

If no cameras were detected, the tab shows a message instead of cards. See Check Your Cameras.

The image quality streamed here is controlled by view stream downscale in Settings and does not affect what pipelines process.


3D View

3D View tab

A 3D field scene with the robot drawn at the latest pose from Robot Pose Output nodes.

Controls

InputAction
Left-click dragRotate
ScrollZoom
Right-click dragPan

Options

ControlDescription
YearWhich season's field assets to load
Field FileWhich field mesh to use; simplified meshes render faster
Robot FileRobot model shown at the estimated pose
Game PiecesShow or hide game piece objects
Robot ModelShow or hide the robot model
CamerasShow or hide camera markers on the robot
ShadowsShadow rendering; turn off to reduce load

A loading overlay with a progress bar appears while assets download. A stats readout in the corner shows scene statistics and frame rate.

3D assets are managed from Settings → Robot and Field Files → Manage. The manager uploads and deletes robot .glb files, field .glb files, and matching field maps. After upload, select the asset from the 3D View dropdown instead of entering a project path.


Pipeline

AprilTag pipeline at a readable zoom

The pipeline editor.

Layout

  • Canvas: nodes and connections.
  • Operations list: drag operations onto the canvas.
  • Operation settings: opens when you click a node.
  • Pipeline dropdown: switch pipelines; New Pipeline creates one from a blank graph or bundled template.

Working with the graph

ActionHow
Add a nodeDrag from the Operations list onto the canvas
Connect nodesDrag from an output port to an input port
Edit a nodeClick it and use the settings panel
Fit the graph in viewDouble-click empty canvas
Edit a connectionRight-click it
Mark a feedback edgeRight-click → Set as Default Connection (draws dashed)
Unmark itRight-click → Remove Default Status

If the context menu reads Cannot Set Default, that target port does not accept a default connection.

When creating a pipeline, choose Basic localization, AprilTag localization, Object detection (CPU), or Object detection (MX3) to start from a wired graph. EagleEye generates fresh node IDs for every copy.

File parameters have a dropdown and Manage control. Use Manage → Upload File, close the manager, and select the uploaded file. This is the normal workflow for field maps, models, and other operation assets; raw {project_root} paths are for development and imported legacy configurations.

Edits save as you make them. Changing node positions or ordinary tuning values does not stop the running backend. When an operation supports live configuration, clicking Done applies the new values to that operation immediately.

Some fields build resources that cannot be replaced safely while the operation is running. Camera selection, model selection, and map selection are common examples. These fields show a restart note in the settings panel. Graph structure changes also require the backend to rebuild the pipeline. After you save one of these changes, a red Backend restart required banner appears above the canvas. Click Restart there when you are ready to interrupt processing and load the saved configuration.

The restart banner that appears above the pipeline canvas when a saved change needs the backend rebuilt

Operation settings can also include a live view. Open the node's gear button to tune it beside the image it produces. This is useful for detection, filtering, and preprocessing operations.

Temporal Acceleration settings beside its live processed-frame view

Profiling panels

The canvas overlays two small profiling panels. The left panel lists each execution timestep and its operation time. The summary shows:

ValueMeaning
FlowTime spent running the operation graph for the current frame
FPSEstimated completed pipeline cycles per second, including the wait for a fresh input frame
LatencyAge of the camera frame when processing finished, including capture, transfer, decode, and pipeline work

Both panels read "No profiling data" until frames flow.

Timestep numbers and thread colors

Each node has a colored square at its upper-left corner:

  • The number is the zero-based execution timestep. It is not a thread number.
  • The color identifies the worker thread. Thread 1 is red, Thread 2 is teal, and later threads use blue, light green, yellow, gray, pink, purple, green, and orange. The palette repeats if a pipeline needs more than ten threads.
  • Nodes with the same number belong to the same timestep. They can run at the same time when the scheduler assigns them different thread colors.
  • A thread can run several nodes across different timesteps. The color follows the thread, not the operation type.

The PREP, DET, FILT, PROC, and NET chips inside the node header describe the operation category. Their colors are unrelated to worker threads. The green badge at the upper-right of a running node is that operation's measured time for the latest frame.

Timestep badges, thread colors, and live timings on the first half of an AprilTag pipeline

The compact timestep list uses the same colors. If several threads participate in one timestep, its circle is split into equal colored segments.

Profiling details

Click the i button to open Profiling details. The top section records frame wall time, full cycle time, capture latency, and the frame sequence. By timestep compares the wall time around a group with Σ ops, the sum of its individual operation times. When operations run in parallel, Σ ops can be larger than wall time.

Profiling details grouped by execution timestep

Scroll to By thread to see which operations the scheduler assigned to each worker. Thread numbers start at 1. The scheduler chooses the minimum number of workers needed for operations that overlap, then reuses those workers in later timesteps.

Profiling details grouped by worker thread

Enable Cumulative avg to replace the newest-frame numbers with the arithmetic mean of all profiling updates received since you enabled it. It is not a rolling window. Turn it off and back on to start a new average.

Operations

Every operation available in the editor, grouped by what it does.

Input

OperationDescription
Device InputReads frames from a camera by camera_bus_id. Optional frame_rotation in 90° steps. First node in any camera pipeline
Get NetworkTables ValueReads a NetworkTables key and injects the value into the pipeline

Detection

OperationDescription
Detect AprilTagsAprilTag detection. Settings: families, nthreads, quad_decimate, quad_sigma, refine_edges, decode_sharpening
Color Threshold DetectionFinds regions matching an HSV colour range
Most Dense Color Threshold DetectionAs above, returning only the densest region
Object DetectionRuns a neural network model to detect objects by class
MX3 Async Object DetectionObject detection on an MX3 accelerator, run asynchronously

Preprocessing

OperationDescription
Temporal Acceleration Preprocessor RustPredicts where tags will be from the previous camera pose and passes only those regions to the detector. Needs a default-marked camera_pose feedback edge. See Add Temporal Acceleration

Filtering

OperationDescription
Minimum AprilTag CountStops the pipeline for this frame unless at least minimum_detections tags were found
Tag FilterWhitelist or blacklist tag IDs (filter_mode, tag_ids)
Pose Outlier Filter RustRejects poses that disagree with recent history using predictive gating

Pose

OperationDescription
PnP Camera LocalizationCamera pose on the field from tag detections, intrinsics, and the tag map
Camera To Robot PoseApplies the camera's saved extrinsics to turn a camera pose into a robot pose
Camera Local To Robot TransformConverts camera-relative detection positions into robot-relative positions
Robot Local To Field TransformConverts robot-relative coordinates into field coordinates
Camera AdjustApplies an offset correction to a camera pose
Pose FusionCombines multiple pose estimates
Flatten PoseReduces a 3D pose to 2D
Extract PosePulls a specific pose out of a combined value
Ground Plane IntersectionProjects a detection onto the field floor to estimate its 3D position
Angle To ObjectsBearing angles from the camera to detected objects

Output

OperationDescription
Publish To NetworkTablesThe only operation that writes to NetworkTables. Settings: target_key, schema, data_path
Robot Pose OutputSends the robot pose to the 3D View. Passes the pose through. Does not publish to NetworkTables
Camera Pose OutputSends a camera pose to the 3D View for the given camera_bus_id
Detected Objects OutputSends detected object positions to the UI

System

System tab

Live hardware and pipeline status, updated continuously by the backend.

PanelShows
PipelinesEvery configured pipeline and whether it is running
CPUUsage percentage, per-core detail, temperature
RAMUsage percentage and amounts
StorageUsage percentage and amounts

If the numbers stop moving, the UI has lost its connection to the backend. Reload the page, then check the service.


Settings

Settings tab

General

ControlDescription
Camera setup wizard → OpenReopens the guided camera naming, calibration, mounting, and pipeline setup flow
Download LogsSaves the backend log file to your computer
Test NotificationsSends a test notification
Manage NetworksWireless network configuration for the device
Update SystemRuns the system/software update flow
Manage Test VideosManage recorded video files usable as camera sources for offline testing
Robot and Field Files → ManageManage field and robot models used by the 3D View

Connect Wi-Fi

Click Manage next to WiFi Networks. Enter a password beside the network, then click Connect. The connected row shows a green status label and a Disconnect button.

Network Manager in the Settings tab with the network name pixelated

Camera Names

The preview grid lists active cameras. Enter a Placement description and click Save name on its card. Names persist across reboots without changing camera bus IDs, calibration, feed URLs, or robot-code subscription keys. Refresh previews takes new snapshots; these are not live streams. See Rename a camera later.

Network Table

ControlDescription
Roborio (or sim) IP AddressroboRIO or simulation host address. A fresh install uses localhost; replace it. See Connect NetworkTables
Status indicatorCurrent NetworkTables connection state; reads Unknown before the first connection

Views

ControlDescription
View stream downscaleShrinks live Views streams before sending them to the browser. Lower values reduce bandwidth and CPU. It does not change pipeline inputs or the small naming-grid snapshots

Actions

ControlDescription
Save SettingsPersists the NetworkTables address and view stream downscale; camera descriptions have their own Save name buttons
Restart BackendRestarts the EagleEye backend process
Reboot ComputerReboots the whole device

Restart Backend and Reboot Computer controls

System Logs

Live backend log output, with a Clear button that clears the display.

Terminal

A terminal panel for running shell commands on the device without a separate SSH session: prompt, command input, Send, output area, and a clear button.

note

The terminal's behaviour was not exercised while writing this guide. If it does not respond, use SSH.


Utils

Utils tab

Per-camera configuration. Select the camera in the Camera dropdown first. Everything on this tab applies to the selected camera.

Extrinsics

Fields: Pitch, Yaw, Roll (degrees) and X Offset, Y Offset, Z Offset (meters). Save Extrinsics persists them; Refresh reloads stored values, discarding unsaved edits.

The Camera Position Preview draws the camera on a robot model so you can sanity-check the numbers. See Configure Extrinsics.

Intrinsics

ControlDescription
Status lineWhether the selected camera has an intrinsics file
Upload IntrinsicsUpload a .json calibration, or drop a file on the dropzone
Calibrate CameraOpens the built-in ChArUco calibration tool
View DistortionSide-by-side raw and undistorted feeds for checking a calibration
Delete Current IntrinsicsRemoves the selected camera's calibration

Calibration tool

Live ChArUco detections, captured calibration frames, and corner coverage

Live feed with detected corners, board settings (Squares X, Squares Y, Square m, Marker m), a preview-resolution selector, Capture, Reset, and Calibrate & Save buttons, saved-frame thumbnails, and a corner-coverage plot. Walkthrough: Calibrate Intrinsics.

note

Verified against EagleEye-Vision-System main at commit c73a871 (2026-08-20). The operations list above is taken from the operation definitions in the source tree at that commit; a running install may show additional custom operations you have added.