Gold856 c2433e0332 Fix Jackson being unable to deserialize neural network config (#2232)
## Description

#2224 removed the custom deserializers for `Path`, but we still need one
to be able to deserialize the `Path` key in
`NeuralNetworkPropertyManager`. Additionally, Jackson seems to
auto-convert the `Path` key to a `String` using `toString` instead of
its own serializers, so a custom key serializer is also needed to
consistently use the same format for paths. This also removes unused
serde methods in `JacksonUtils` to minimize potential future churn, and
tacks an `@JsonIgnore` on `getModels` to prevent Jackson from
serializing a `ModelProperty` array into the database.

## Meta

Merge checklist:
- [x] Pull Request title is [short, imperative
summary](https://cbea.ms/git-commit/) of proposed changes
- [x] The description documents the _what_ and _why_
- [ ] If this PR changes behavior or adds a feature, user documentation
is updated
- [ ] If this PR touches photon-serde, all messages have been
regenerated and hashes have not changed unexpectedly
- [ ] If this PR touches configuration, this is backwards compatible
with settings back to v2025.3.2
- [ ] If this PR touches pipeline settings or anything related to data
exchange, the frontend typing is updated
- [x] If this PR addresses a bug, a regression test for it is added
2025-12-09 18:09:49 -05:00
2025-12-08 05:14:24 +00:00
2025-12-08 05:14:24 +00:00
2025-12-04 22:25:48 -06:00
2025-08-15 22:07:12 -04:00
2025-08-15 22:07:12 -04:00
2020-03-21 01:00:34 +02:00
2025-12-06 18:10:47 +00:00
2024-06-30 16:10:12 -04:00

PhotonVision

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.

The latest release of platform-specific jars and images is found 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

Documentation

Building

Gradle is used for all C++ and Java code, and pnpm 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. Instructions for running these examples directly from the repo are found in the docs.

Gradle Arguments

Note that these are case sensitive!

  • -PArchOverride=foobar: builds for a target system other than your current architecture. Valid overrides are:
    • winx32
    • winx64
    • winarm64
    • macx64
    • macarm64
    • linuxx64
    • linuxarm64
    • linuxathena
  • -PtgtIP: Specifies where ./gradlew deploy should try to copy the fat JAR to
  • -PtgtUser: Specifies custom username for ./gradlew deploy to SSH into
  • -PtgtPw: Specifies custom password for ./gradlew deploy to SSH into
  • -Pprofile: enables JVM profiling
  • -PwithSanitizers: On Linux, enables -fsanitize=address,undefined,leak

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 additional out-of-source repositories for building code.

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%