Designed for FRC integration, Iris uses the WPILib .json field format, ensuring day-one support as soon as the field layout is published on kickoff.
All detection and estimation results are encoded into WPIStructs and published to NetworkTables under
/iris/<camera_name>. A Java vendordep is provided for interfacing with
robot code.
The following algorithms are supported for AprilTag detection:
- AprilTag3 (fork of pyapriltags updated to version 3.4.3)
- ArUco
Iris uses Perspective-n-Point (PnP) pose computation to estimate field-relative camera positioning. Individual AprilTag transforms are also published, enabling localized localization strategies when needed.
The pipeline incorporates a Random Sample Consensus (RANSAC) algorithm that effectively filters outlier pose estimates, significantly improving multi-tag pose stability.
Specific AprilTag IDs can also be configured to be ignored, particularly useful for targets with poor lighting conditions or incorrect placement.
Match data is logged using the MCAP file format, enabling post-match analysis. Log files are numbered sequentially to avoid filename conflicts due to the system clock resetting. The system encodes processing data with Protocol Buffers and compresses camera frames as JPEGs for efficient storage. An FPS limit is applied while the robot is disabled to conserve storage.
Log files can be viewed with Foxglove Studio:
Match replay demo with 4 cameras
Iris includes a comprehensive web dashboard for real-time monitoring and tuning. This interface provides live camera streaming alongside configurable camera and detection parameters.
Iris is designed for reliable offline operation with simple deployment commands:
just package # creates an offline-installable bundle
just deploy <ip address> # update development devicesIris integrates mrcal as its calibration backend. The system automatically processes calibration data and presents visualizations for easy verification and analysis.



