Skip to main content

Start here

EagleEye runs on a coprocessor, usually a Raspberry Pi, next to your robot. It reads camera frames, runs a pipeline configured in the browser, and publishes timestamped robot poses to NetworkTables.

What you will set up

  • EagleEye running as a service at http://eagleeye.local:5001 or the device's IP address.
  • One or more calibrated USB cameras with saved robot-relative positions.
  • A bundled localization pipeline configured for your camera and field.
  • EagleEyeCamera feeding accepted vision observations into your WPILib pose estimator.

Setup order

On a fresh installation, opening the UI starts a wizard with a camera preview grid. Name cameras by placement, then follow its calibration, mounting, and NetworkTables steps to generate pipelines. You can then continue to robot-code integration. The individual guides below also cover manual setup and later edits.

  1. Prepare the Raspberry Pi.
  2. Install EagleEye.
  3. Open the UI.
  4. Identify and name your cameras.
  5. Calibrate intrinsics.
  6. Configure extrinsics.
  7. Connect NetworkTables.
  8. Check the generated pipeline or create one manually.
  9. Add EagleEye to robot code.
  10. Add temporal acceleration if the basic pipeline needs more throughput.
  11. Verify and tune.

WebUI tabs

TabUse
ViewsAim and focus camera feeds
3D ViewCompare the reported robot pose with the field
PipelineCreate a template pipeline, connect operations, and configure files
SystemCheck pipeline state and device load
SettingsConfigure Wi-Fi, NetworkTables, managed assets, updates, logs, and terminal access
UtilsCalibrate cameras and save their robot-relative transforms

Important distinctions

Robot Pose Output only updates the 3D view. A separate Publish To NetworkTables node sends data to the robot. Bundled localization templates wire both paths correctly.

The robot library needs pose and metadata. Manual templates default to localization/front/pose and localization/front/meta below the EagleEye table. The wizard assigns a source prefix per camera. Copy the actual publisher keys into robot code; a placement name such as Front bumper is only a UI label and does not rename those keys.

Intrinsics and extrinsics are separate. Intrinsics describe the lens. Extrinsics describe where the camera sits on the robot. PnP and Camera To Robot Pose need both.

Managed file controls replace raw paths. When a map or model is absent from a dropdown, use the adjacent Manage button to upload it.

The UI reference covers individual controls. Troubleshooting starts from symptoms.