Matt 7f09f9e4f5 Save calibration data and show preliminary GUI (#1078)
* Serialize all calibration data

* Run lint

* typing nit

* fix code

* move these tables around some

* Add cool formatting

* add request to get snapshots by resolution and camera

* re-enable all resolutions

* add wip so i can change computers (SQUASH ME AND KILL ME AHHHH)

* Get everything working but viewing snapshots

* Update RequestHandler.java

* Update CameraCalibrationInfoCard.vue

* Update CameraCalibrationInfoCard.vue

* add observation viewer

* round

* fix illiegal import

* Swap to PNG and serialize insolution

* move import/export buttons TO THE TOP

* Update WebsocketDataTypes.ts

* Add snapshotname to observation

* Refactor to serialize snapshot image itself

* Run lint

* Use new base64 image data in info card

* Update SettingTypes.ts

* Create calibration json -> mrcal converter script

* Update calibrationUtils.py

* Fix calibrate NPEs in teest

* Run lint

* Always run cornersubpix

* Update CameraCalibrationInfoCard.vue

Update CameraCalibrationInfoCard.vue

* Update OpenCVHelp.java

* Update OpenCVHelp.java

* Replace test mode camera JSONs

* Run wpiformat

* Revert intrinsics but keep other data

* Remove misc comments

* Rename JsonMat->JsonImageMat and add calobject_warp

* Update Server.java

* Rename cameraExtrinsics to distCoeffs

* fix typing issues

* use util methods

* Formatting fixes

* fix styling

* move to devTools

* remove unneeded or unused imports

* Remove fixed-right css

If its really that big of a deal, we can add it back later, kind of a drag to fix rn.

* Create util method

* Remove extra legacy calibration things

---------

Co-authored-by: Sriman Achanta <68172138+srimanachanta@users.noreply.github.com>
2024-01-03 16:32:04 -05:00
2023-12-16 12:32:49 -06:00
2023-06-21 08:38:30 -07:00
2024-01-02 23:35:24 -05:00
2020-03-21 01:00:34 +02:00
2023-10-31 00:10:57 -04:00

Photon Vision

CI codecov Discord

PhotonVision is the free, fast, and easy-to-use computer vision solution for the FIRST Robotics Competition. You can read an overview of our features on our website. You can find our comprehensive documentation here.

A copy of the latest Raspberry Pi image is available here. A copy of the latest standalone JAR is available here. If you are a Gloworm user you can find the latest Gloworm image here.

If you are interested in contributing code or documentation to the project, please read our getting started page for contributors and join the Discord to introduce yourself! We hope to provide a welcoming community to anyone who is interested in helping.

Authors

Gradle Arguments

Note that these are case sensitive!

  • -PArchOverride=foobar: builds for a target system other than your current architecture. Valid overrides are:
    • linuxathena
    • linuxarm32
    • linuxarm64
    • arm32
    • arm64
    • x86-64
    • x86
  • -PtgtIp: Specifies where ./gradlew deploy should try to copy the fat JAR to
  • -Pprofile: enables JVM profiling

Building

Gradle is used for all C++ and Java code, and NPM is used for the web UI. Instructions to compile PhotonVision yourself can be found in our docs.

You can run one of the many built in examples straight from the command line, too! They contain a fully featured robot project, and some include simulation support. The projects can be found inside the photonlib-java-examples and photonlib-cpp-examples subdirectories, respectively. The projects currently available include:

  • photonlib-java-examples:
    • aimandrange:simulateJava
    • aimattarget:simulateJava
    • getinrange:simulateJava
    • simaimandrange:simulateJava
    • simposeest:simulateJava
  • photonlib-cpp-examples:
    • aimandrange:simulateNative
    • getinrange:simulateNative

To run them, use the commands listed below. Photonlib must first be published to your local maven repository, then the copyPhotonlib task will copy the generated vendordep json file into each example. After that, the simulateJava/simulateNative task can be used like a normal robot project. Robot simulation with attached debugger is technically possible by using simulateExternalJava and modifying the launch script it exports, though unsupported.

~/photonvision$ ./gradlew publishToMavenLocal

~/photonvision$ cd photonlib-java-examples
~/photonvision/photonlib-java-examples$ ./gradlew copyPhotonlib
~/photonvision/photonlib-java-examples$ ./gradlew <example-name>:simulateJava

~/photonvision$ cd photonlib-cpp-examples
~/photonvision/photonlib-cpp-examples$ ./gradlew copyPhotonlib
~/photonvision/photonlib-cpp-examples$ ./gradlew <example-name>:simulateNative

Acknowledgments

PhotonVision was forked from Chameleon Vision. Thank you to everyone who worked on the original project.

License

PhotonVision is licensed under the GNU General Public License

Meeting Notes

Our meeting notes can be found in the wiki section of this repository.

Description
PhotonVision - FRC Vision Processing
Readme GPL-3.0 639 MiB
Languages
Java 56.5%
C++ 14.9%
Vue 9.2%
Python 7.9%
TypeScript 7.9%
Other 3.4%