Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ed6cf0f
Document Charuco (#1398)
Juniormunk Aug 20, 2024
2e4be68
Update RPI Image 7/4/24 (#1373)
Juniormunk Aug 23, 2024
c33fd83
[photon-client] Bump node to V18 (#1402)
stephenjust Aug 25, 2024
8c09cd2
Populate CameraSettingsStore with placeholder value if no cameras are…
stephenjust Aug 25, 2024
50ea32c
Fix getTarget docs (#1404)
spacey-sooty Aug 29, 2024
738e364
Photonlibpy - Best Target Function #1223 (#1406)
mcm001 Aug 31, 2024
c19d54c
Removed CalibDB (#1396)
mdurrani808 Aug 31, 2024
169595e
Auto-generate packet dataclasses with Jinja (#1374)
mcm001 Aug 31, 2024
c38b509
[photon-client] Log Viewer Improvements (#1385)
DevonRD Aug 31, 2024
06f0f7d
Fixes windows not allowing auto exposure prop for the ov2311 (#1407)
r4stered Sep 4, 2024
596c875
fix: reflection bug in `onDataChangeEvent` (#1416)
Alextopher Sep 12, 2024
9e6a066
Examples Clean-Up (#1408)
gerth2 Sep 15, 2024
5460585
Roll Back to 2024.3.2 (#1423)
Juniormunk Sep 16, 2024
24fb6af
Fix setting gain to max on cameras that don't have a gain quirk (#1424)
crschardt Sep 16, 2024
27cb69c
Support selecting Object Detection models (#1359)
Alextopher Sep 21, 2024
360298c
Fix error being printed to console on Chrome when navigating UI (#1429)
stephenjust Sep 21, 2024
f33218c
Add message UUID and type names to hash and message defintion (#1409)
mcm001 Sep 23, 2024
a0c85fc
Create photon-targeting-JNI framework (#1428)
mcm001 Sep 24, 2024
a8daff3
Revised 9782 defaults (#1431)
gerth2 Sep 24, 2024
b7cab04
See3Cam_24CUG Quirks (#1302)
Bankst Sep 24, 2024
354f11a
Fix broken links (#1430)
gerth2 Sep 24, 2024
abe95df
Update poseest.md (#1439)
Alextopher Sep 29, 2024
68adfe6
[docs] Remove gerth2 links (#1441)
spacey-sooty Sep 29, 2024
30e930f
[docs] Fix invalid max error bits recommendation (#1443)
spacey-sooty Sep 29, 2024
95236e5
[docs] Fix usage of `getTagPose` (#1442)
spacey-sooty Sep 29, 2024
95d55dc
Add-OrangePi5max-image (#1444)
crschardt Oct 1, 2024
3225c07
Update calibration.md OpenCV Docs Link (#1445)
GeorgeHorsey Oct 1, 2024
cd9dd07
Camera view updated to better respond to state (#1437)
stephenjust Oct 6, 2024
c4b273e
Reduce pipeline use-after-free errors (#1447)
Juniormunk Oct 7, 2024
142e22f
Object detection OOM crash (#1451)
Juniormunk Oct 9, 2024
471c90e
UI Message Passing (#1448)
Juniormunk Oct 9, 2024
91da7af
latest is correct is not correct (#1455)
gerth2 Oct 11, 2024
d9b6199
Dont send SolvePNPEnabled in drivermode. (#1454)
Juniormunk Oct 11, 2024
0766d0e
Fix large calibration datasets crashes (#1453)
Juniormunk Oct 13, 2024
26f3a99
Create AprilTag pipeline by default (#1458)
mcm001 Oct 13, 2024
09b1bb9
Fix client log view (#1459)
Juniormunk Oct 13, 2024
353a8ea
Add FMS info to snapshot names (#1460)
mcm001 Oct 13, 2024
30ee913
Copy common fields when changing pipeline type (#1461)
mcm001 Oct 13, 2024
48fc88c
ChArUco: adjust detector params, hide unused (#1463)
Juniormunk Oct 13, 2024
189da52
Fix aruco draw (#1468)
Juniormunk Oct 15, 2024
c961f1e
Fix apriltag detection draw bug (#1467)
Juniormunk Oct 15, 2024
028b6ea
Fix reflective null points (#1469)
Juniormunk Oct 15, 2024
388b3fa
Default 36h11 (#1470)
Juniormunk Oct 15, 2024
b38de6b
Calibration Rotation! (#1464)
Juniormunk Oct 19, 2024
8ff0d93
Improve network management (#1478)
crschardt Oct 21, 2024
4c84c87
Bump Raspberry Pi images to v2025.0.0-beta-6 (#1483)
crschardt Oct 21, 2024
7224561
Add slider debounce (#1479)
Juniormunk Oct 21, 2024
7da2ec1
Fix PhotonCamera typestring checks (#1480)
mcm001 Oct 21, 2024
8eaa690
Equal only by usb paths (#1481)
Juniormunk Oct 21, 2024
9b61ed1
Fix VisionSourceManagerTest typo (#1486)
Juniormunk Oct 23, 2024
385059c
Big scary buttons (#1471)
mcm001 Oct 25, 2024
aee4321
Add AWB slider/toggle (#1477)
mcm001 Oct 25, 2024
1df6d04
Merge remote-tracking branch 'upstream/master' into merge-2025
laviRZ Jan 5, 2025
e9a1362
disable python cicd
laviRZ Jan 5, 2025
77823f2
fix imports
laviRZ Jan 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
67 changes: 42 additions & 25 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ jobs:
fetch-depth: 0
- name: Fetch tags
run: git fetch --tags --force
- name: Install RoboRIO Toolchain
run: ./gradlew installRoboRioToolchain
- name: Install Java 17
uses: actions/setup-java@v4
with:
Expand Down Expand Up @@ -158,14 +160,14 @@ jobs:
- run: git fetch --tags --force
- run: |
chmod +x gradlew
./gradlew photon-targeting:build photon-lib:build -Pbuildalldesktop -i
- run: ./gradlew photon-lib:publish photon-targeting:publish -Pbuildalldesktop
./gradlew photon-targeting:build photon-lib:build -i
- run: ./gradlew photon-lib:publish photon-targeting:publish
name: Publish
env:
ARTIFACTORY_API_KEY: ${{ secrets.ARTIFACTORY_API_KEY }}
if: github.event_name == 'push' && github.repository_owner == 'photonvision'
# Copy artifacts to build/outputs/maven
- run: ./gradlew photon-lib:publish photon-targeting:publish -PcopyOfflineArtifacts -Pbuildalldesktop
- run: ./gradlew photon-lib:publish photon-targeting:publish -PcopyOfflineArtifacts
- uses: actions/upload-artifact@v4
with:
name: maven-${{ matrix.artifact-name }}
Expand Down Expand Up @@ -218,7 +220,7 @@ jobs:
combine:
name: Combine
needs: [build-photonlib-docker, build-photonlib-host]
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -259,11 +261,11 @@ jobs:
artifact-name: macOSArm
architecture: x64
arch-override: macarm64
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: Linux
architecture: x64
arch-override: linuxx64
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
architecture: x64
arch-override: linuxarm64
Expand Down Expand Up @@ -317,7 +319,7 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: jar-Linux
extraOpts: -Djdk.lang.Process.launchMechanism=vfork
- os: windows-latest
Expand Down Expand Up @@ -356,10 +358,10 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: RaspberryPi
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-1/photonvision_raspi.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-4/photonvision_raspi.img.xz
cpu: cortex-a7
image_additional_mb: 0
extraOpts: -Djdk.lang.Process.launchMechanism=vfork
Expand Down Expand Up @@ -395,46 +397,52 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: RaspberryPi
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-1/photonvision_raspi.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_raspi.img.xz
cpu: cortex-a7
image_additional_mb: 0
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: limelight2
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-1/photonvision_limelight.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_limelight.img.xz
cpu: cortex-a7
image_additional_mb: 0
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: limelight3
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-1/photonvision_limelight3.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_limelight3.img.xz
cpu: cortex-a7
image_additional_mb: 0
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: orangepi5
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-3/photonvision_opi5.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_opi5.img.xz
cpu: cortex-a8
image_additional_mb: 1024
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: orangepi5b
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-3/photonvision_opi5b.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_opi5b.img.xz
cpu: cortex-a8
image_additional_mb: 1024
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: orangepi5plus
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-3/photonvision_opi5plus.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_opi5plus.img.xz
cpu: cortex-a8
image_additional_mb: 1024
- os: ubuntu-latest
- os: ubuntu-22.04
artifact-name: LinuxArm64
image_suffix: orangepi5pro
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-3/photonvision_opi5pro.img.xz
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_opi5pro.img.xz
cpu: cortex-a8
image_additional_mb: 1024
- os: ubuntu-latest
artifact-name: LinuxArm64
image_suffix: orangepi5max
image_url: https://github.com/PhotonVision/photon-image-modifier/releases/download/v2025.0.0-beta-6/photonvision_opi5max.img.xz
cpu: cortex-a8
image_additional_mb: 1024

Expand Down Expand Up @@ -507,10 +515,19 @@ jobs:
**/photonlib*.zip
if: github.event_name == 'push'
# Upload all jars and xz archives
- uses: softprops/action-gh-release@v1
# Split into two uploads to work around max size limits in action-gh-releases
# https://github.com/softprops/action-gh-release/issues/353
- uses: softprops/action-gh-release@v2.0.8
with:
files: |
**/*.xz
**/*orangepi5*.xz
if: startsWith(github.ref, 'refs/tags/v')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: softprops/action-gh-release@v2.0.8
with:
files: |
**/!(*orangepi5*).xz
**/*.jar
**/photonlib*.json
**/photonlib*.zip
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
with:
python-version: 3.11
- name: Install wpiformat
run: pip3 install wpiformat==2024.37
run: pip3 install wpiformat==2024.41
- name: Run
run: wpiformat
- name: Check output
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/photonvision-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3
Expand Down
File renamed without changes.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,5 @@ photon-lib/src/generate/native/cpp/PhotonVersion.cpp
venv

!photon-core/src/main/resources/models.zip
.venv/*
.venv
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,20 @@ You can run one of the many built in examples straight from the command line, to

Note that these are case sensitive!

* `-PArchOverride=foobar`: builds for a target system other than your current architecture. Valid overrides are:
* linuxathena
* `-PArchOverride=foobar`: builds for a target system other than your current architecture. [Valid overrides](https://github.com/wpilibsuite/wpilib-tool-plugin/blob/main/src/main/java/edu/wpi/first/tools/NativePlatforms.java) are:
* winx32
* winx64
* winarm64
* macx64
* macarm64
* linuxx64
* linuxarm64
* arm64
* x86-64
* x86
- `-PtgtIp`: Specifies where `./gradlew deploy` should try to copy the fat JAR to
* linuxathena
- `-PtgtIP`: Specifies where `./gradlew deploy` should try to copy the fat JAR to
- `-Pprofile`: enables JVM profiling

If you're cross-compiling, you'll need the wpilib toolchain installed. This can be done via Gradle: for example `./gradlew installArm64Toolchain` or `./gradlew installRoboRioToolchain`

## Out-of-Source Dependencies

PhotonVision uses the following additonal out-of-source repositories for building code.
Expand Down
11 changes: 7 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import edu.wpi.first.toolchain.*

plugins {
id "java"
id "cpp"
id "com.diffplug.spotless" version "6.24.0"
id "edu.wpi.first.NativeUtils" version "2024.7.2" apply false
id "edu.wpi.first.NativeUtils" version "2024.6.1" apply false
id "edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin" version "2020.2"
id "edu.wpi.first.GradleRIO" version "2024.3.2"
id 'edu.wpi.first.WpilibTools' version '1.3.0'
id 'com.google.protobuf' version '0.9.4' apply false
id 'edu.wpi.first.GradleJni' version '1.1.0'
}

allprojects {
Expand All @@ -28,12 +31,12 @@ ext.allOutputsFolder = file("$project.buildDir/outputs")
apply from: "versioningHelper.gradle"

ext {
wpilibVersion = "2025.0.0-alpha-1"
wpilibVersion = "2024.3.2"
wpimathVersion = wpilibVersion
openCVversion = "4.8.0-2"
joglVersion = "2.4.0"
javalinVersion = "5.6.2"
libcameraDriverVersion = "dev-v2023.1.0-12-gfb1eafb"
libcameraDriverVersion = "dev-v2023.1.0-14-g787ab59"
rknnVersion = "dev-v2024.0.1-4-g0db16ac"
frcYear = "2024"
mrcalVersion = "dev-v2024.0.0-24-gc1efcf0";
Expand Down Expand Up @@ -64,7 +67,7 @@ spotless {
java {
target fileTree('.') {
include '**/*.java'
exclude '**/build/**', '**/build-*/**', "photon-core\\src\\main\\java\\org\\photonvision\\PhotonVersion.java", "photon-lib\\src\\main\\java\\org\\photonvision\\PhotonVersion.java"
exclude '**/build/**', '**/build-*/**', "photon-core\\src\\main\\java\\org\\photonvision\\PhotonVersion.java", "photon-lib\\src\\main\\java\\org\\photonvision\\PhotonVersion.java", "**/src/generated/**"
}
toggleOffOn()
googleJavaFormat()
Expand Down
1 change: 0 additions & 1 deletion devTools/calibrationUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from dataclasses import dataclass
import json
import os
from typing import Union
import cv2
import numpy as np
import mrcal
Expand Down
1 change: 1 addition & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"sphinxcontrib.ghcontributors",
"sphinx_design",
"myst_parser",
"sphinx.ext.mathjax",
]

# Configure OpenGraph support
Expand Down
8 changes: 4 additions & 4 deletions docs/source/docs/additional-resources/best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
- Make sure you take advantage of the field calibration time given at the start of the event:
- Bring your robot to the field at the allotted time.
- Turn on your robot and pull up the dashboard on your driver station.
- Point your robot at the target(s) and ensure you get a consistent tracking (you hold one target consistently, the ceiling lights aren't detected, etc.).
- If you have problems with your pipeline, go to the pipeline tuning section and retune the pipeline using the guide there. You want to make your exposure as low as possible with a tight hue value to ensure no extra targets are detected.
- Move the robot close, far, angled, and around the field to ensure no extra targets are found anywhere when looking for a target.
- Point your robot at the AprilTags(s) and ensure you get a consistent tracking (you hold one AprilTag consistently, the ceiling lights aren't detected, etc.).
- If you have problems with your pipeline, go to the pipeline tuning section and retune the pipeline using the guide there.
- Move the robot close, far, angled, and around the field to ensure no extra AprilTags are found.
- Go to a practice match to ensure everything is working correctly.
- After field calibration, use the "Export Settings" button in the "Settings" page to create a backup.
- Do this for each coprocessor on your robot that runs PhotonVision, and name your exports with meaningful names.
Expand All @@ -26,4 +26,4 @@
- This effectively works as a snapshot of your PhotonVision data that can be restored at any point.
- Before every match, check the ethernet connection going into your coprocessor and that it is seated fully.
- Ensure that exposure is as low as possible and that you don't have the dashboard up when you don't need it to reduce bandwidth.
- Stream at as low of a resolution as possible while still detecting targets to stay within bandwidth limits.
- Stream at as low of a resolution as possible while still detecting AprilTags to stay within field bandwidth limits.
2 changes: 1 addition & 1 deletion docs/source/docs/apriltag-pipelines/2D-tracking-tuning.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Pose iterations represents the amount of iterations done in order for the AprilT

Max error bits, also known as hamming distance, is the number of positions at which corresponding pieces of data / tag are different. Put more generally, this is the number of bits (think of these as squares in the tag) that need to be changed / corrected in the tag to correctly detect it. A higher value means that more tags will be detected while a lower value cuts out tags that could be "questionable" in terms of detection.

We recommend a value of 0 for the 16h5 and 7+ for the 36h11 family.
We recommend a value of 0 for the 16h5 and at most 3 for the 36h11 family.

### Decision Margin Cutoff

Expand Down
7 changes: 6 additions & 1 deletion docs/source/docs/apriltag-pipelines/multitag.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ This multi-target pose estimate can be accessed using PhotonLib. We suggest usin
```{eval-rst}
.. tab-set-code::

.. code-block:: java
.. code-block:: Java

var result = camera.getLatestResult();
if (result.getMultiTagResult().estimatedPose.isPresent) {
Expand All @@ -38,6 +38,11 @@ This multi-target pose estimate can be accessed using PhotonLib. We suggest usin
if (result.MultiTagResult().result.isPresent) {
frc::Transform3d fieldToCamera = result.MultiTagResult().result.best;
}

.. code-block:: Python

# Coming Soon!

```

:::{note}
Expand Down
Loading