mirror of
https://github.com/PhotonVision/photonvision
synced 2026-06-19 00:41:41 +00:00
Occasionally, the sim projects are capable of simulating current draw of over 600A, which triggers a condition in `BatterySim::calculateDefaultBatteryLoadedVoltage` that limits the minimum measured battery voltage to 0V (to prevent it from going negative). When battery voltage measures 0, this causes NaN values to propagate through the drivetrain model, making sim inoperable. Specifically, [this is the line](https://github.com/PhotonVision/photonvision/blob/master/photonlib-java-examples/aimandrange/src/main/java/frc/robot/subsystems/drivetrain/SwerveDriveSim.java#L452) that causes the initial NaN values in simulation. This PR is posed as a patch to ensure that simulation doesn't break.
PhotonLib Java Examples
All examples demonstrate controlling a swerve drive with outputs from PhotonVision.
Simulation is available to demonstrate the concepts - swerve physics is approximated.
You can access a stream of what the simulated camera sees by going to https://localhost:1182 .
Running examples
For instructions on how to run these examples locally, see Running Examples.
aimattarget
A simple demonstration of using PhotonVision's 2d target yaw to align a differential drivetrain with a target.
Keyboard controls:
- Translate field-relative: WASD
- Rotate counter/clockwise: Q/E
- Perform vision alignment: Z
aimandrange
Extendsaimattarget to add getting in range of the target.
Keyboard controls:
- Translate field-relative: WASD
- Rotate counter/clockwise: Q/E
- Perform vision alignment: Z
poseest
The example also has simulation support with an approximation of swerve drive dynamics.
Keyboard controls:
- Translate field-relative: WASD
- Rotate counter/clockwise: Q/E
- Perform vision alignment: Z
- Offset pose estimate: X